Submit Search
Upload
64ビット対応Dllインジェクション
•
8 likes
•
6,917 views
Shinichi Hirauchi
Follow
CLR/H66で担当させて頂いたセッションの資料です。 pdf用に一部編集されています。
Read less
Read more
Report
Share
Report
Share
1 of 24
Download now
Download to read offline
Recommended
Process hollowing
Process hollowing
ry0kvn
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
sairoutine
あなたの知らないnopたち@ラボユース合宿
あなたの知らないnopたち@ラボユース合宿
MITSUNARI Shigeo
Play with DockerでDocker学習環境を整えよう!
Play with DockerでDocker学習環境を整えよう!
Hori Tasuku
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
Hiroshi Tokumaru
Cプログラマのためのカッコつけないプログラミングの勧め
Cプログラマのためのカッコつけないプログラミングの勧め
MITSUNARI Shigeo
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツール
MITSUNARI Shigeo
「Android案件できます」って言ったら、ヒドい目にあった話
「Android案件できます」って言ったら、ヒドい目にあった話
Kenta Komori
Recommended
Process hollowing
Process hollowing
ry0kvn
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
sairoutine
あなたの知らないnopたち@ラボユース合宿
あなたの知らないnopたち@ラボユース合宿
MITSUNARI Shigeo
Play with DockerでDocker学習環境を整えよう!
Play with DockerでDocker学習環境を整えよう!
Hori Tasuku
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
『例えば、PHPを避ける』以降PHPはどれだけ安全になったか
Hiroshi Tokumaru
Cプログラマのためのカッコつけないプログラミングの勧め
Cプログラマのためのカッコつけないプログラミングの勧め
MITSUNARI Shigeo
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツール
MITSUNARI Shigeo
「Android案件できます」って言ったら、ヒドい目にあった話
「Android案件できます」って言ったら、ヒドい目にあった話
Kenta Komori
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介
MITSUNARI Shigeo
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovy
Yasuharu Nakano
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
Kohsuke Yuasa
良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方
Shigenori Sagawa
2章 Linuxカーネル - メモリ管理1
2章 Linuxカーネル - メモリ管理1
mao999
shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理
DADA246
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
Ryo Sakamoto
プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコード
Shigenori Sagawa
ZynqMP勉強会
ZynqMP勉強会
Hidemi Ishihara
Jetson x Azure ハンズオン DeepStream With Azure IoT
Jetson x Azure ハンズオン DeepStream With Azure IoT
Deep Learning Lab(ディープラーニング・ラボ)
GoによるiOSアプリの開発
GoによるiOSアプリの開発
Takuya Ueda
TDD のこころ
TDD のこころ
Takuto Wada
新しい並列for構文のご提案
新しい並列for構文のご提案
yohhoy
冬のLock free祭り safe
冬のLock free祭り safe
Kumazaki Hiroki
C#, C/CLI と CUDAによる画像処理ことはじめ
C#, C/CLI と CUDAによる画像処理ことはじめ
NVIDIA Japan
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
ret2plt
ret2plt
sounakano
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
Toshiharu Sugiyama
エラーハンドリング
エラーハンドリング
道化師 堂華
LLVM overview 20110122
LLVM overview 20110122
nothingcosmos
Exploring the x64
Exploring the x64
FFRI, Inc.
cocos2d-xとネイティブ間の連携
cocos2d-xとネイティブ間の連携
Tomoaki Shimizu
More Related Content
What's hot
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介
MITSUNARI Shigeo
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovy
Yasuharu Nakano
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
Kohsuke Yuasa
良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方
Shigenori Sagawa
2章 Linuxカーネル - メモリ管理1
2章 Linuxカーネル - メモリ管理1
mao999
shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理
DADA246
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
Ryo Sakamoto
プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコード
Shigenori Sagawa
ZynqMP勉強会
ZynqMP勉強会
Hidemi Ishihara
Jetson x Azure ハンズオン DeepStream With Azure IoT
Jetson x Azure ハンズオン DeepStream With Azure IoT
Deep Learning Lab(ディープラーニング・ラボ)
GoによるiOSアプリの開発
GoによるiOSアプリの開発
Takuya Ueda
TDD のこころ
TDD のこころ
Takuto Wada
新しい並列for構文のご提案
新しい並列for構文のご提案
yohhoy
冬のLock free祭り safe
冬のLock free祭り safe
Kumazaki Hiroki
C#, C/CLI と CUDAによる画像処理ことはじめ
C#, C/CLI と CUDAによる画像処理ことはじめ
NVIDIA Japan
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
ret2plt
ret2plt
sounakano
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
Toshiharu Sugiyama
エラーハンドリング
エラーハンドリング
道化師 堂華
LLVM overview 20110122
LLVM overview 20110122
nothingcosmos
What's hot
(20)
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovy
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方
2章 Linuxカーネル - メモリ管理1
2章 Linuxカーネル - メモリ管理1
shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコード
ZynqMP勉強会
ZynqMP勉強会
Jetson x Azure ハンズオン DeepStream With Azure IoT
Jetson x Azure ハンズオン DeepStream With Azure IoT
GoによるiOSアプリの開発
GoによるiOSアプリの開発
TDD のこころ
TDD のこころ
新しい並列for構文のご提案
新しい並列for構文のご提案
冬のLock free祭り safe
冬のLock free祭り safe
C#, C/CLI と CUDAによる画像処理ことはじめ
C#, C/CLI と CUDAによる画像処理ことはじめ
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
ret2plt
ret2plt
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
エラーハンドリング
エラーハンドリング
LLVM overview 20110122
LLVM overview 20110122
Similar to 64ビット対応Dllインジェクション
Exploring the x64
Exploring the x64
FFRI, Inc.
cocos2d-xとネイティブ間の連携
cocos2d-xとネイティブ間の連携
Tomoaki Shimizu
Dalvikバイトコードリファレンスの読み方 改訂版
Dalvikバイトコードリファレンスの読み方 改訂版
Takuya Matsunaga
Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)
marsee101
DartVM on Android
DartVM on Android
nothingcosmos
デバドラを書いてみよう!
デバドラを書いてみよう!
Masami Ichikawa
Cocos2d xをさらにさわってみよう!
Cocos2d xをさらにさわってみよう!
Tomoaki Shimizu
Visual Studio Community 2013 で始めるプログラミング Win32/MFC #clrh93
Visual Studio Community 2013 で始めるプログラミング Win32/MFC #clrh93
hiyohiyo
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
Satoshi Mimura
SQL Server 2008 で統合ログ管理システムを構築しよう
SQL Server 2008 で統合ログ管理システムを構築しよう
junichi anno
怪しいWindowsプログラミング
怪しいWindowsプログラミング
nagoya313
20010901
20010901
小野 修司
Hbstudy41 auto scaling
Hbstudy41 auto scaling
Fujishiro Takuya
Dbts2012 unconference wttrw_yazekatsu_publish
Dbts2012 unconference wttrw_yazekatsu_publish
Yohei Azekatsu
Node.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャー
Yahoo!デベロッパーネットワーク
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
Akira Inoue
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
Yoshihisa Ozaki
実践 NestJS
実践 NestJS
Ayumi Goto
社内勉強会資料(Varnish Module)
社内勉強会資料(Varnish Module)
Iwana Chan
Windowsのパケットモニタ作成
Windowsのパケットモニタ作成
Shinichi Hirauchi
Similar to 64ビット対応Dllインジェクション
(20)
Exploring the x64
Exploring the x64
cocos2d-xとネイティブ間の連携
cocos2d-xとネイティブ間の連携
Dalvikバイトコードリファレンスの読み方 改訂版
Dalvikバイトコードリファレンスの読み方 改訂版
Vivado hls勉強会1(基礎編)
Vivado hls勉強会1(基礎編)
DartVM on Android
DartVM on Android
デバドラを書いてみよう!
デバドラを書いてみよう!
Cocos2d xをさらにさわってみよう!
Cocos2d xをさらにさわってみよう!
Visual Studio Community 2013 で始めるプログラミング Win32/MFC #clrh93
Visual Studio Community 2013 で始めるプログラミング Win32/MFC #clrh93
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
SQL Server 2008 で統合ログ管理システムを構築しよう
SQL Server 2008 で統合ログ管理システムを構築しよう
怪しいWindowsプログラミング
怪しいWindowsプログラミング
20010901
20010901
Hbstudy41 auto scaling
Hbstudy41 auto scaling
Dbts2012 unconference wttrw_yazekatsu_publish
Dbts2012 unconference wttrw_yazekatsu_publish
Node.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャー
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
実践 NestJS
実践 NestJS
社内勉強会資料(Varnish Module)
社内勉強会資料(Varnish Module)
Windowsのパケットモニタ作成
Windowsのパケットモニタ作成
More from Shinichi Hirauchi
Amazon connect について 〜各種AWSのサービスとの連携〜
Amazon connect について 〜各種AWSのサービスとの連携〜
Shinichi Hirauchi
Alexa SDK Alexa Salon
Alexa SDK Alexa Salon
Shinichi Hirauchi
Developers.io 2017 iPhoneによるAlexa/Lex/Pollyを利用した 音声対応クライアントの作成方法
Developers.io 2017 iPhoneによるAlexa/Lex/Pollyを利用した 音声対応クライアントの作成方法
Shinichi Hirauchi
Developers.io.札幌 xamarinってどうよ
Developers.io.札幌 xamarinってどうよ
Shinichi Hirauchi
20分でできる!Xamarin.Forms入門
20分でできる!Xamarin.Forms入門
Shinichi Hirauchi
ソフト屋が挑戦した電子工作 〜力ずくの10か月〜
ソフト屋が挑戦した電子工作 〜力ずくの10か月〜
Shinichi Hirauchi
Developers.IO 2016 F-1 セッション資料
Developers.IO 2016 F-1 セッション資料
Shinichi Hirauchi
シルバーウィークにfacebookアプリを作成した
シルバーウィークにfacebookアプリを作成した
Shinichi Hirauchi
Xamarin.formsで作成する翻訳機能付きtwitterクライアント
Xamarin.formsで作成する翻訳機能付きtwitterクライアント
Shinichi Hirauchi
簡易電話交換機の作成~廃品利用による低予算プロジェクト~
簡易電話交換機の作成~廃品利用による低予算プロジェクト~
Shinichi Hirauchi
この辺でXamarin導入による 効果と限界をしっかり把握してみよう MVP Community Camp 2015
この辺でXamarin導入による 効果と限界をしっかり把握してみよう MVP Community Camp 2015
Shinichi Hirauchi
BoxViewの美味しい食べ方
BoxViewの美味しい食べ方
Shinichi Hirauchi
C#で作成するfacebookアプリ mvp community camp
C#で作成するfacebookアプリ mvp community camp
Shinichi Hirauchi
Facebookスパムデータベース~あなたのお友達に、スパムアカウントが紛れ込んでませんか
Facebookスパムデータベース~あなたのお友達に、スパムアカウントが紛れ込んでませんか
Shinichi Hirauchi
簡易電話交換機の作成~廃品利用による低予算プロジェクト
簡易電話交換機の作成~廃品利用による低予算プロジェクト
Shinichi Hirauchi
Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして
Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして
Shinichi Hirauchi
初めてのFacebookアプリの開発
初めてのFacebookアプリの開発
Shinichi Hirauchi
Facebookの偽アカウント
Facebookの偽アカウント
Shinichi Hirauchi
テストコードの定型化
テストコードの定型化
Shinichi Hirauchi
HTMLを1行も書かずにwebアプリを作ってみました
HTMLを1行も書かずにwebアプリを作ってみました
Shinichi Hirauchi
More from Shinichi Hirauchi
(20)
Amazon connect について 〜各種AWSのサービスとの連携〜
Amazon connect について 〜各種AWSのサービスとの連携〜
Alexa SDK Alexa Salon
Alexa SDK Alexa Salon
Developers.io 2017 iPhoneによるAlexa/Lex/Pollyを利用した 音声対応クライアントの作成方法
Developers.io 2017 iPhoneによるAlexa/Lex/Pollyを利用した 音声対応クライアントの作成方法
Developers.io.札幌 xamarinってどうよ
Developers.io.札幌 xamarinってどうよ
20分でできる!Xamarin.Forms入門
20分でできる!Xamarin.Forms入門
ソフト屋が挑戦した電子工作 〜力ずくの10か月〜
ソフト屋が挑戦した電子工作 〜力ずくの10か月〜
Developers.IO 2016 F-1 セッション資料
Developers.IO 2016 F-1 セッション資料
シルバーウィークにfacebookアプリを作成した
シルバーウィークにfacebookアプリを作成した
Xamarin.formsで作成する翻訳機能付きtwitterクライアント
Xamarin.formsで作成する翻訳機能付きtwitterクライアント
簡易電話交換機の作成~廃品利用による低予算プロジェクト~
簡易電話交換機の作成~廃品利用による低予算プロジェクト~
この辺でXamarin導入による 効果と限界をしっかり把握してみよう MVP Community Camp 2015
この辺でXamarin導入による 効果と限界をしっかり把握してみよう MVP Community Camp 2015
BoxViewの美味しい食べ方
BoxViewの美味しい食べ方
C#で作成するfacebookアプリ mvp community camp
C#で作成するfacebookアプリ mvp community camp
Facebookスパムデータベース~あなたのお友達に、スパムアカウントが紛れ込んでませんか
Facebookスパムデータベース~あなたのお友達に、スパムアカウントが紛れ込んでませんか
簡易電話交換機の作成~廃品利用による低予算プロジェクト
簡易電話交換機の作成~廃品利用による低予算プロジェクト
Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして
Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして
初めてのFacebookアプリの開発
初めてのFacebookアプリの開発
Facebookの偽アカウント
Facebookの偽アカウント
テストコードの定型化
テストコードの定型化
HTMLを1行も書かずにwebアプリを作ってみました
HTMLを1行も書かずにwebアプリを作ってみました
64ビット対応Dllインジェクション
1.
2.
3.
DLLInjectionの利用例
4.
動作イメージ
パワー ポイント メモ帳 Windows メモ帳 メモ帳 ブラウザ
5.
動作イメージ 各プロセスのメモリ空間内には、当該プロセ スの独自コード・カーネル・DLLがロード
プロセスA プロセスB カーネルコード カーネルコード プロセスAのコード プロセスBのコード Other.dll test.dll user32.dll user32.dll kernel32.dll kernel32.dll
6.
2種類のDLL配置
7.
ダイナミックにロードする //test.dllをロードする HMODULE hDll =
::LoadLibrary( "test.dll" ); if ( hDll != NULL ){ //DLLを使用するコードをここに記述 //test.dllをアンロードする ::FreeLibrary( hDll ); }
8.
AのコードでBのメモリ空間に ロードすればインジェクション成立
プロセスA プロセスB プロセスAのコード LoadLibrary() プロセスBのコード test.dll
9.
他プロセスでスレッド実行 HANDLE CreateRemoteThread( HANDLE
hProcess, // 挿入先プロセスハンドル LPSECURITY_ATTRIBUTES lpAttr,// セキュリティ属性 DWORD dwStackSize, // スタックサイズ LPTHREAD_START_ROUTINE lpAddr,//関数ポインタ LPVOID lpParameter, // 引数ポインタ DWORD dwCreationFlags, // 作成フラグ LPDWORD lpThreadId // スレッド識別子 );
10.
LPTHREAD_START_ROUTINE 型 typedef DWORD
( __stdcall *LPTHREAD_START_ROUTINE) ( [in] LPVOID lpThreadParameter ); HMODULE LoadLibrary( LPCTSTR lpFileName //モジュール名 ); BOOL FreeLibrary( HMODULE hModule // DLLハンドル );
11.
関数のアドレス
プロセスA プロセスB カーネルコード カーネルコード プロセスAのコード プロセスBのコード 0x75230000 kernel32.dll 0x75230000 kernel32.dll 0x75230xxx 0x75230xxx Loadribrary() Loadribrary()
12.
インジェクション・コード //kernel32のモジュールハンドル取得 IntPtr m =
GetModuleHandle("kernel32.dll"); //LoadLibrary()のアドレス取得 UIntPtr a = GetProcAddress(m, "LoadLibraryA"); //スレッド実行 IntPtr t = CreateRemoteThread( hProcess,IntPtr.Zero, 0, a, param, 0, out b); //スレッド完了待ち(DllMainから返るのを待つ) WaitForSingleObject(t,INFINITE); //DLLハンドルの取得 if (GetExitCodeThread(t, out hDll)) { if(hDll!=IntPtr.Zero)result = true;//成功 } //スレッドクローズ CloseHandle(t);
13.
LoadLibraryのパラメータ HMODULE hDll =
::LoadLibrary( "test.dll" ); 自プロセスのメモリ空間に展開された文字列へのポインタ プロセスBのスレッドにはプロセスB上のアドレスが必要 プロセスA プロセスB 0x02583000 0x02583000 “test.dll” Int x=100
14.
他プロセスでメモリ操作 VirtualAllocEx()
挿入先プロセスでメモリ確保 WriteProcessMemory() 挿入先のメモリ空間に書き込む 書き込んだメモリを使用する Loadribrary()のパラメータ VirtualFreeEx() 確保したメモリの開放 プロセスA プロセスB VirtualAllocEx WriteProcessMemory 0x000034000 “test.dll”
15.
メモリ操作・コード UInt32 MEM_COMMIT =
0x1000; UInt32 PAGE_EXECUTE_READWRITE = 0x40; IntPtr m = (IntPtr)VirtualAllocEx( hProcess, IntPtr.Zero, (uint)len, MEM_COMMIT, PAGE_EXECUTE_READWRITE); if (m != IntPtr.Zero) { //確保した挿入先の領域にDLL名を書き込む WriteProcessMemory( hProcess, m, dllName, (UIntPtr)len, out b); //確保したメモリをここで使用する //(挿入先でLoadLibraryを呼び出す) //確保したメモリの開放 VirtualFreeEx(hProcess, m, 0, 0x8000);
16.
64bitOSの問題(混在) 64ビットOSでは、従来の32ビットプログラムもWOW64に よりそのまま使用することができるため、両者が混在している 64ビットEXEは、64ビットDLLのみ使用可能 32ビットEXEは、32ビットDLLのみ使用可能 Dllインジェクションも、挿入先に合わせたDLLが必要
17.
64bitOSの問題 (ERROR_ACCESS_DENIED) WOW64上からは、CreateRemoteThread()は、 ERROR_ACCESS_DENIEDが発生して使用できません。 使用できないという正規のドキュメントは、見つけられませんでしたが、 同一趣旨のコメントが多数検索にヒットします。 64bit上では、64bitのEXEしか使用できない
18.
64bitOSの問題 (kernel32.dllのアドレスが違う) WOW64上の32bitプロセスは、違うkernel32.dllを ロードしている。 c:¥>listdlls POWERPNT.EXE
32ビットプロセス ListDLLs v3.1 - List loaded DLLs Base Size Path 0x00000000776b0000 0x160000 C:¥Windows¥SysWOW64¥ntdll.dll 0x0000000075230000 0x110000 C:¥Windows¥syswow64¥kernel32.dll >ListDlls notepad 64ビットプロセス ListDLLs v3.1 - List loaded DLLs Base Size Path 0x0000000077650000 0x186000 C:¥Windows¥system32¥ntdll.dll 0x00000000771c0000 0x12d000 C:¥Windows¥system32¥kernel32.dll 64ビット上から32ビットプロセスのアドレスが分からない
19.
64bitOSの問題(まとめ) マトリックスにしてみると、下記の3種類しか動作できないこ とが分かる 挿入先に応じたDLLが必要 WOW64で動作させない 64bitのEXE上で32bitのkernel32ロードのアドレスが必要
20.
挿入先に応じたDLLが必要 64bitOS上では、64bitの「notepad.exe」が動作している OSにより違う場合は、2種類用意して実行時に選択する
21.
WOW64で動作させない OSに合わせたEXEを用意する .NETの「AnyCPU」で作成すれば解決 //ポインタが8バイトの場合 If(IntPtr.Size == 8){
//64bit環境で動作中 }
22.
64bitから32bitの kernel32.dllのアドレス取得
32bitでコンパイルした下記のEXEを実行して アドレスを取得する #include <windows.h> int main(int, char**){ return(int) = GetProcAddress( GetModuleHandle(“kernel32”), “LoadLibraryA”); } 参考「64bitプロセスから32bitプロセスにDLL Injection (C言語) 」 http://nazochu.blogspot.com/2011/09/64bit32bitdll-injection.html
23.
4G超のアドレスに注意が必要 kernel32.dllのアドレスは幸い32bitで表現可能だった >ListDlls notepad
64ビットプロセス ListDLLs v3.1 - List loaded DLLs Base Size Path 0x0000000077650000 0x186000 C:¥Windows¥system32¥ntdll.dll 0x00000000771c0000 0x12d000 C:¥Windows¥system32¥kernel32.dll Dllハンドルは32bitで表現できない
Download now