C/C++
Ⅰ. はじめに Ⅱ. インストール方法 Ⅲ. 使い方 パッケージをインストールする Windows 32bit 動的リンク用のパッケージをインストールする Windows 64bit 動的リンク用のパッケージをインストールする Windows 64bit 静的リンク用のパッケージをインストールす…
Ⅰ. はじめに Ⅱ. 解決方法1(Spectre 軽減策オプションを「無効」にする) Ⅲ. 解決方法2 1. Visual Studio Installer を起動する 2. Libs for Spectre(x86 and x64) をインストールする Ⅰ. はじめに タイトルの通り「VC++ビルド時にMSB8038, LNK1104が出る場…
Ⅰ. はじめに タイトルの通り「botanをWindowsでビルドする方法」です。 Ⅱ. 環境(必要なもの) ・Visual Studio 2017 Community (C++) ・Python 2.6以降 Ⅲ. やり方 1. リポジトリを clone する git clone https://github.com/randombit/botan 2. 「VS 2017用…
Ⅰ. はじめに Ⅱ. やり方 1. ダイナミックリンクライブラリを作成する 2. Pythonから呼び出す 実行結果 Ⅲ. 関数名に記号が入っている場合について 参考 Ⅰ. はじめに タイトルの通り「Pythonでダイナミックリンクライブラリを利用する方法」です。 Ⅱ. やり方 1.…
Ⅰ. はじめに Ⅱ. HTTPサーバ サンプルプログラム 実行結果 Ⅲ. HTTPクライアント サンプルプログラム 実行結果 参考 Ⅰ. はじめに タイトルの通り「C++でHTTPサーバ、クライアントを作る方法」です。以下のライブラリを使います。 https://github.com/yhirose/c…
Ⅰ. はじめに タイトルの通り「タスクトレイのアイコンを消す方法」です。 Ⅱ. やり方 C++の場合 #include <Windows.h> int main() { auto hWnd = FindWindow(L"ApplicationWindow", NULL); NOTIFYICONDATA data; data.cbSize = sizeof(NOTIFYICONDATA); data.hWnd = hWnd</windows.h>…
Ⅰ. はじめに タイトルの通り「C++でLINQを使う方法(cpplinqの使い方)」です。 Ⅱ. 使い方 1. GitHubから cpplinq.hpp をダウンロードする https://github.com/mrange/cpplinq 2. サンプルプログラムを書く #include <iostream> #include <list> #include <algorithm> #include <string> #includ</string></algorithm></list></iostream>…
Ⅰ. はじめに タイトルの通り「Linuxで他プロセスのメモリを読み書きする方法」です。 Windowsの場合はOpenProcessしてプロセスのハンドルを取得した後にReadProcessMemory, WriteProcessMemoryすればOKです。 Ⅱ. サンプルプログラム メモリを読み書き「され…
Ⅰ. はじめに 2018/01/03時点、VisualStudioでプラットフォームをx64と指定した場合インラインアセンブリ(__asm)がサポートされていない為使えません。 エラー C4235 非標準の拡張機能が使用されています: '__asm' キーワードはこのアーキテクチャではサポ…
Ⅰ. はじめに Ⅱ. 「C++/CLIを使う」方法 1. C++のプロジェクト設定を開き「共通言語ランタイム サポート (/clr)」に変更する 2. サンプルプログラム 3. 実行結果 Ⅲ. 「C#(DLL)側で関数をエクスポートする」方法 1. サンプルプログラム 2. DllExport.bat をダ…
Ⅰ. はじめに Ⅱ. 環境 Ⅲ. 呼出規約(calling convention)とは Ⅳ. cdecl main.cpp 逆アセンブル ポイント リバースエンジニア向けのポイント Ⅴ. stdcall main.cpp 逆アセンブル ポイント リバースエンジニア向けのポイント Ⅵ. fastcall main.cpp 逆アセンブル …
Ⅰ. はじめに タイトルの通り「Windowsでsyscallする方法」です。 この記事はWOW64を対象とした内容になっています。 x64向けはこちら http://kagasu.hatenablog.com/entry/2018/01/03/200337 Ⅱ. 環境 Windows 10 64bit 1709 Ⅱ. サンプルプログラム サンプル…
Ⅰ. はじめに Ⅱ. 方法1 Ⅱ. 方法2 Ⅲ. 実行結果 参考 Ⅰ. はじめに タイトルの通り「C++でWindowsのバージョンを取得する」方法です。 Ⅱ. 方法1 以下レジストリの値を読み取る (サンプルプログラム省略) HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\Cur…
Ⅰ. はじめに Ⅱ. サンプルプログラム 1. CreateToolhelp32Snapshot を利用する場合 2. EnumProcesses を利用する場合 3. NtQuerySystemInformationを使用する方法 Ⅲ. 実行結果 Ⅰ. はじめに タイトルの通り「C++でプロセス名からプロセスIDを取得する」方法で…
Ⅰ. はじめに タイトルの通り「C++ リンカエラーを非表示にする方法」です。 型キャスト等で出力されるコンパイラ警告は以下の一行で非表示にできますが、リンカエラーは #pragma では不可能です。 #pragma warning(disable:4312) コンパイラ警告の例 「C4312…
Ⅰ. はじめに cpprestsdk の使い方はこちらcpprestsdk はNuGetで dynamic link 版が配布されています。 static link 版は配布されていません。static link する為には2017/10/08時点、自分でビルドするしか方法がありません。 Ⅱ. 必要なもの VisualStudio 201…
Ⅰ. はじめに Ⅱ. なぜ「C++ RESET SDK(cpprestsdk)」を選んだのか Ⅲ. インストール方法 Ⅳ. GET(同期) Ⅴ. GET(非同期) 実行結果 Ⅵ. POST(JSON)(非同期) 実行結果 Ⅶ. POST(form-urlencoded) 実行結果 その他 Ubuntuでコンパイルする時 参考 Ⅰ. はじめに .…
Ⅰ. はじめに タイトルの通り「OpenSSLをWindowsでビルドする方法」です。 コンパイル済みライブラリだけ欲しい人はこちら Ⅱ. 環境(必要なもの) ・Visual Studio 2017 Community (C++) ・Perl(ActivePerl を利用しました) ・OpenSSL 1.0.2l のソースコー…
https://pocoproject.org/ Ⅰ. はじめに 「POCO C++」はモダンで強力なC++ライブラリです。 XML JSON Zip DB (SQLite, ODBC, MySQL) Foundation(基本機能ライブラリ Base64変換等) 等の機能があります。 Ⅱ. 1つづつビルドする方法 1. ソースコードをダウンロ…
Ⅰ. はじめに Visual Studioのデフォルト設定ではWindowsが発行する「システム的な例外」を捉えることはできません。 無効なメモリアドレスへのアクセス 0での割り算 等が「システム的な例外」に該当します。また、「『システム的な例外』をプログラム上で扱…
Ⅰ. はじめに Ⅱ. サンプル 1. 共有メモリにデータを書き込むだけのプログラム 2. 共有メモリからデータを読み込むだけのプログラム Ⅲ. カーネルモードについて Ⅳ. 実行結果 その他 Ⅰ. はじめに あるプロセスのメモリ空間には他のプロセスからアクセスする事が…
Ⅰ. はじめに Ⅱ. 環境 Ⅲ. プログラム Shift-JIS UTF-8 (BOM なし) UTF-8 (BOM あり) UTF-16 リトルエンディアン (BOM なし) UTF-16 リトルエンディアン (BOM あり) UTF-16 ビッグエンディアン (BOM なし) UTF-16 ビッグエンディアン (BOM あり) Ⅲ. 参考 Ⅰ. は…
Ⅰ. はじめに STL を使ってファイルを全て読み込む(全行読み込む)方法です。※追記 C++でShift-JIS, UTF-8, UTF-16 BOM有無とエンディアンを考慮してファイルの読み込みをする - 備忘録 Ⅱ. サンプル test.txt aiueo Source.cpp #include <iostream> #include <fstream> #include <string></string></fstream></iostream>…
Ⅰ. はじめに Ⅱ. 関数をエクスポートする方法(P/Invoke) 1. サンプルプログラム 2. 実行結果 3. DllImportの呼出規約について Ⅲ. C++/CLIを利用する方法 1. サンプルプログラム 2. 実行結果 Ⅰ. はじめに C#(EXE)からC++(DLL)の関数を呼び出す方法です。方法…
Ⅰ. はじめに ある特定範囲の最初から最後までをサーチをする場合、 メモリを確保していない場所までサーチするため非常に遅くなります。VirtualQueryExを使うと、 メモリのアクセス権の状態などによって分岐を行えるため、 非常に高速にメモリサーチを行うこ…