Submit Search
Upload
64ビット対応Dllインジェクション
•
8 likes
•
6,914 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
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
Docker超入門
Docker超入門
VirtualTech Japan Inc.
OS入門
OS入門
Shuntaro Saiba
自動でバグを見つける!プログラム解析と動的バイナリ計装
自動でバグを見つける!プログラム解析と動的バイナリ計装
uchan_nos
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
infinite_loop
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol Buffers
Seiya Mizuno
Recommended
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
Docker超入門
Docker超入門
VirtualTech Japan Inc.
OS入門
OS入門
Shuntaro Saiba
自動でバグを見つける!プログラム解析と動的バイナリ計装
自動でバグを見つける!プログラム解析と動的バイナリ計装
uchan_nos
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
infinite_loop
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol Buffers
Seiya Mizuno
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
組み込みLinuxでのGolangのススメ
組み込みLinuxでのGolangのススメ
Tetsuyuki Kobayashi
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
Masahiro Sakai
初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法
kazkiti
TVMの次期グラフIR Relayの紹介
TVMの次期グラフIR Relayの紹介
Takeo Imai
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
Masahito Zembutsu
最新C++事情 C++14-C++20 (2018年10月)
最新C++事情 C++14-C++20 (2018年10月)
Akihiko Matuura
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
スケーラブルなシステムのためのHBaseスキーマ設計 #hcj13w
スケーラブルなシステムのためのHBaseスキーマ設計 #hcj13w
Cloudera Japan
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
JIT のコードを読んでみた
JIT のコードを読んでみた
y-uti
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
Shota Shinogi
暗号技術の実装と数学
暗号技術の実装と数学
MITSUNARI Shigeo
C# における Redis 徹底活用
C# における Redis 徹底活用
Takaaki Suzuki
いまさら聞けないDockerコンテナ超入門
いまさら聞けないDockerコンテナ超入門
VirtualTech Japan Inc./Begi.net Inc.
カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについて
alwei
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
Exploring the x64
Exploring the x64
FFRI, Inc.
cocos2d-xとネイティブ間の連携
cocos2d-xとネイティブ間の連携
Tomoaki Shimizu
More Related Content
What's hot
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
組み込みLinuxでのGolangのススメ
組み込みLinuxでのGolangのススメ
Tetsuyuki Kobayashi
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
Masahiro Sakai
初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法
kazkiti
TVMの次期グラフIR Relayの紹介
TVMの次期グラフIR Relayの紹介
Takeo Imai
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
Masahito Zembutsu
最新C++事情 C++14-C++20 (2018年10月)
最新C++事情 C++14-C++20 (2018年10月)
Akihiko Matuura
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
スケーラブルなシステムのためのHBaseスキーマ設計 #hcj13w
スケーラブルなシステムのためのHBaseスキーマ設計 #hcj13w
Cloudera Japan
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
JIT のコードを読んでみた
JIT のコードを読んでみた
y-uti
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
Shota Shinogi
暗号技術の実装と数学
暗号技術の実装と数学
MITSUNARI Shigeo
C# における Redis 徹底活用
C# における Redis 徹底活用
Takaaki Suzuki
いまさら聞けないDockerコンテナ超入門
いまさら聞けないDockerコンテナ超入門
VirtualTech Japan Inc./Begi.net Inc.
カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについて
alwei
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
What's hot
(20)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
組み込みLinuxでのGolangのススメ
組み込みLinuxでのGolangのススメ
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
DockerとPodmanの比較
DockerとPodmanの比較
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法
TVMの次期グラフIR Relayの紹介
TVMの次期グラフIR Relayの紹介
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
最新C++事情 C++14-C++20 (2018年10月)
最新C++事情 C++14-C++20 (2018年10月)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
スケーラブルなシステムのためのHBaseスキーマ設計 #hcj13w
スケーラブルなシステムのためのHBaseスキーマ設計 #hcj13w
Redisの特徴と活用方法について
Redisの特徴と活用方法について
JIT のコードを読んでみた
JIT のコードを読んでみた
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
暗号技術の実装と数学
暗号技術の実装と数学
C# における Redis 徹底活用
C# における Redis 徹底活用
いまさら聞けないDockerコンテナ超入門
いまさら聞けないDockerコンテナ超入門
カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについて
Pythonによる黒魔術入門
Pythonによる黒魔術入門
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
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