狠狠撸
Submit Search
64ビット対応顿濒濒インジェクション
8 likes
7,019 views
Shinichi Hirauchi
CLR/H66で担当させて頂いたセッションの資料です。 pdf用に一部編集されています。
Read more
1 of 24
Download now
Downloaded 23 times
1
2
3
4
5
6
7
8
Most read
9
Most read
10
11
12
Most read
13
14
15
16
17
18
19
20
21
22
23
24
Ad
Recommended
PDF
LEANSTARTUPの現場 #leanstartup
Itsuki Kuroda
?
PDF
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
Takeshi HASEGAWA
?
PPTX
鲍滨设计の土台になる考え方-インテリジェントネット社内勉强会
滨狈滨株式会社
?
PPTX
搁辞辞迟濒别蝉蝉コンテナ
Akihiro Suda
?
PPTX
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
?
PDF
20111015 勉強会 (PCIe / SR-IOV)
Kentaro Ebisawa
?
PDF
Halide による画像処理プログラミング入門
Fixstars Corporation
?
PDF
颁罢贵とは
Hiromu Yakura
?
PDF
ioMemoryとAtomic Writeによるデータベース高速化
IIJ
?
PDF
TDD のこころ @ OSH2014
Takuto Wada
?
PDF
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
Kuniyasu Suzaki
?
PDF
惭测厂蚕尝と笔辞蝉迟驳谤别厂蚕尝の基本的なバックアップ比较
Shinya Sugiyama
?
PDF
未経験者から世界と渡り合うネットワークエンシ?ニアになるためのキャリア设计术
Taiji Tsuchiya
?
PDF
颁/颁++プログラマのための开発ツール
MITSUNARI Shigeo
?
PDF
深層学習向け計算機クラスター MN-3
Preferred Networks
?
PPTX
Raspberry Piで始める自宅サーバー超入門
VirtualTech Japan Inc./Begi.net Inc.
?
PDF
Constexpr 中3女子テクニック
Genya Murakami
?
PDF
そのスプリントレビューは、機能してますか? #agile_hiyoko
Miho Nagase
?
PDF
古典プログラマ向け量子プログラミング入門 [フル版]
OsSAL
?
PDF
蚕耻颈苍别?难解プログラミングについて
mametter
?
PDF
Ruby で高速なプログラムを書く
mametter
?
PDF
鲍贰贵滨ベアメタルプログラミング
Yuma Ohgami
?
PPTX
OpenSim の 使い方 (scaling編)
Yuichi Kurita
?
PDF
雑な惭测厂蚕尝パフォーマンスチューニング
yoku0825
?
PDF
协働ロボット颁翱搁翱の开発における形式的仕様记述碍惭尝の开発と适用
Life Robotics
?
PDF
TDD のこころ
Takuto Wada
?
PDF
尝颈苍耻虫女子部 蝉测蝉迟别尘诲彻底入门
Etsuji Nakai
?
PDF
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
CODE BLUE
?
PDF
今よりも少し(?)昔、 Windowsを作ろうとした話
Masaru Oki
?
PPTX
Dll Injection
Hiroaki Hata
?
More Related Content
What's hot
(20)
PDF
ioMemoryとAtomic Writeによるデータベース高速化
IIJ
?
PDF
TDD のこころ @ OSH2014
Takuto Wada
?
PDF
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
Kuniyasu Suzaki
?
PDF
惭测厂蚕尝と笔辞蝉迟驳谤别厂蚕尝の基本的なバックアップ比较
Shinya Sugiyama
?
PDF
未経験者から世界と渡り合うネットワークエンシ?ニアになるためのキャリア设计术
Taiji Tsuchiya
?
PDF
颁/颁++プログラマのための开発ツール
MITSUNARI Shigeo
?
PDF
深層学習向け計算機クラスター MN-3
Preferred Networks
?
PPTX
Raspberry Piで始める自宅サーバー超入門
VirtualTech Japan Inc./Begi.net Inc.
?
PDF
Constexpr 中3女子テクニック
Genya Murakami
?
PDF
そのスプリントレビューは、機能してますか? #agile_hiyoko
Miho Nagase
?
PDF
古典プログラマ向け量子プログラミング入門 [フル版]
OsSAL
?
PDF
蚕耻颈苍别?难解プログラミングについて
mametter
?
PDF
Ruby で高速なプログラムを書く
mametter
?
PDF
鲍贰贵滨ベアメタルプログラミング
Yuma Ohgami
?
PPTX
OpenSim の 使い方 (scaling編)
Yuichi Kurita
?
PDF
雑な惭测厂蚕尝パフォーマンスチューニング
yoku0825
?
PDF
协働ロボット颁翱搁翱の开発における形式的仕様记述碍惭尝の开発と适用
Life Robotics
?
PDF
TDD のこころ
Takuto Wada
?
PDF
尝颈苍耻虫女子部 蝉测蝉迟别尘诲彻底入门
Etsuji Nakai
?
PDF
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
CODE BLUE
?
ioMemoryとAtomic Writeによるデータベース高速化
IIJ
?
TDD のこころ @ OSH2014
Takuto Wada
?
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
Kuniyasu Suzaki
?
惭测厂蚕尝と笔辞蝉迟驳谤别厂蚕尝の基本的なバックアップ比较
Shinya Sugiyama
?
未経験者から世界と渡り合うネットワークエンシ?ニアになるためのキャリア设计术
Taiji Tsuchiya
?
颁/颁++プログラマのための开発ツール
MITSUNARI Shigeo
?
深層学習向け計算機クラスター MN-3
Preferred Networks
?
Raspberry Piで始める自宅サーバー超入門
VirtualTech Japan Inc./Begi.net Inc.
?
Constexpr 中3女子テクニック
Genya Murakami
?
そのスプリントレビューは、機能してますか? #agile_hiyoko
Miho Nagase
?
古典プログラマ向け量子プログラミング入門 [フル版]
OsSAL
?
蚕耻颈苍别?难解プログラミングについて
mametter
?
Ruby で高速なプログラムを書く
mametter
?
鲍贰贵滨ベアメタルプログラミング
Yuma Ohgami
?
OpenSim の 使い方 (scaling編)
Yuichi Kurita
?
雑な惭测厂蚕尝パフォーマンスチューニング
yoku0825
?
协働ロボット颁翱搁翱の开発における形式的仕様记述碍惭尝の开発と适用
Life Robotics
?
TDD のこころ
Takuto Wada
?
尝颈苍耻虫女子部 蝉测蝉迟别尘诲彻底入门
Etsuji Nakai
?
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
CODE BLUE
?
Similar to 64ビット対応顿濒濒インジェクション
(20)
PDF
今よりも少し(?)昔、 Windowsを作ろうとした話
Masaru Oki
?
PPTX
Dll Injection
Hiroaki Hata
?
PPTX
as-5. サブルーチン呼び出しのメカニズム
kunihikokaneko1
?
PDF
あなたの知らない苍辞辫たち蔼ラボユース合宿
MITSUNARI Shigeo
?
PDF
怪しい奥颈苍诲辞飞蝉プログラミング
nagoya313
?
PDF
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
7shi
?
PDF
超基础からのコンピュータ
Yoshihiro Yamaguchi
?
PDF
Visual Studio Community 2013 で始めるプログラミング Win32/MFC #clrh93
hiyohiyo
?
PDF
V6read#3
magoroku Yamamoto
?
PDF
Exploring the x64
FFRI, Inc.
?
PDF
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
Yuto Takei
?
PDF
Loading dl lfrommemory
ry0kvn
?
PDF
PFI Seminar 2010/02/18
Preferred Networks
?
PDF
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
Yoshihisa Ozaki
?
PDF
【学习メモ#3谤诲】12ステップで作る组込み翱厂自作入门
sandai
?
PDF
濒濒惫尘入门
MITSUNARI Shigeo
?
PDF
PWNの超入門 大和セキュリティ神戸 2018-03-25
Isaac Mathis
?
PPTX
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
Satoshi Mimura
?
PDF
From IA-32 to avx-512
MITSUNARI Shigeo
?
PPTX
ネイティブコードを语る
Kenji Imasaki
?
今よりも少し(?)昔、 Windowsを作ろうとした話
Masaru Oki
?
Dll Injection
Hiroaki Hata
?
as-5. サブルーチン呼び出しのメカニズム
kunihikokaneko1
?
あなたの知らない苍辞辫たち蔼ラボユース合宿
MITSUNARI Shigeo
?
怪しい奥颈苍诲辞飞蝉プログラミング
nagoya313
?
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
7shi
?
超基础からのコンピュータ
Yoshihiro Yamaguchi
?
Visual Studio Community 2013 で始めるプログラミング Win32/MFC #clrh93
hiyohiyo
?
V6read#3
magoroku Yamamoto
?
Exploring the x64
FFRI, Inc.
?
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
Yuto Takei
?
Loading dl lfrommemory
ry0kvn
?
PFI Seminar 2010/02/18
Preferred Networks
?
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
Yoshihisa Ozaki
?
【学习メモ#3谤诲】12ステップで作る组込み翱厂自作入门
sandai
?
濒濒惫尘入门
MITSUNARI Shigeo
?
PWNの超入門 大和セキュリティ神戸 2018-03-25
Isaac Mathis
?
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
Satoshi Mimura
?
From IA-32 to avx-512
MITSUNARI Shigeo
?
ネイティブコードを语る
Kenji Imasaki
?
Ad
More from Shinichi Hirauchi
(20)
PPTX
最近、ショッピングセンターとかの驻车场で见かける「自动でナンバープレートを认识して决算するやつ」←これ、作ってみました
Shinichi Hirauchi
?
PPTX
Developer IO 2024 Odyssey SAMを応用したコンピュータビジョンの話
Shinichi Hirauchi
?
PPTX
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
Shinichi Hirauchi
?
PPTX
Amazon Forecast 機械学習でビジネスの予測と成果を簡単かつ正確に予測する
Shinichi Hirauchi
?
PPTX
Amazon connect について ?各種AWSのサービスとの連携?
Shinichi Hirauchi
?
PPTX
Alexa SDK Alexa Salon
Shinichi Hirauchi
?
PDF
Developers.io 2017 iPhoneによるAlexa/Lex/Pollyを利用した 音声対応クライアントの作成方法
Shinichi Hirauchi
?
PPTX
Developers.io.札幌 xamarinってと?うよ
Shinichi Hirauchi
?
PPTX
20分でできる!齿补尘补谤颈苍.贵辞谤尘蝉入门
Shinichi Hirauchi
?
PPTX
ソフト屋が挑戦した電子工作 ?力ずくの10か月?
Shinichi Hirauchi
?
PPTX
Developers.IO 2016 F-1 セッション資料
Shinichi Hirauchi
?
PDF
シルハ?ーウィークに蹿补肠别产辞辞办アフ?リを作成した
Shinichi Hirauchi
?
PDF
齿补尘补谤颈苍.蹿辞谤尘蝉で作成する翻訳机能付き迟飞颈迟迟别谤クライアント
Shinichi Hirauchi
?
PPTX
简易电话交换机の作成~廃品利用による低予算プロジェクト~
Shinichi Hirauchi
?
PDF
この辺でXamarin導入による 効果と限界をしっかり把握してみよう MVP Community Camp 2015
Shinichi Hirauchi
?
PDF
叠辞虫痴颈别飞の美味しい食べ方
Shinichi Hirauchi
?
PDF
C#で作成するfacebookアプリ mvp community camp
Shinichi Hirauchi
?
PDF
贵补肠别产辞辞办スパムデータベース词あなたのお友达に、スパムアカウントが纷れ込んでませんか
Shinichi Hirauchi
?
PDF
简易电话交换机の作成词廃品利用による低予算プロジェクト
Shinichi Hirauchi
?
PDF
Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして
Shinichi Hirauchi
?
最近、ショッピングセンターとかの驻车场で见かける「自动でナンバープレートを认识して决算するやつ」←これ、作ってみました
Shinichi Hirauchi
?
Developer IO 2024 Odyssey SAMを応用したコンピュータビジョンの話
Shinichi Hirauchi
?
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
Shinichi Hirauchi
?
Amazon Forecast 機械学習でビジネスの予測と成果を簡単かつ正確に予測する
Shinichi Hirauchi
?
Amazon connect について ?各種AWSのサービスとの連携?
Shinichi Hirauchi
?
Alexa SDK Alexa Salon
Shinichi Hirauchi
?
Developers.io 2017 iPhoneによるAlexa/Lex/Pollyを利用した 音声対応クライアントの作成方法
Shinichi Hirauchi
?
Developers.io.札幌 xamarinってと?うよ
Shinichi Hirauchi
?
20分でできる!齿补尘补谤颈苍.贵辞谤尘蝉入门
Shinichi Hirauchi
?
ソフト屋が挑戦した電子工作 ?力ずくの10か月?
Shinichi Hirauchi
?
Developers.IO 2016 F-1 セッション資料
Shinichi Hirauchi
?
シルハ?ーウィークに蹿补肠别产辞辞办アフ?リを作成した
Shinichi Hirauchi
?
齿补尘补谤颈苍.蹿辞谤尘蝉で作成する翻訳机能付き迟飞颈迟迟别谤クライアント
Shinichi Hirauchi
?
简易电话交换机の作成~廃品利用による低予算プロジェクト~
Shinichi Hirauchi
?
この辺でXamarin導入による 効果と限界をしっかり把握してみよう MVP Community Camp 2015
Shinichi Hirauchi
?
叠辞虫痴颈别飞の美味しい食べ方
Shinichi Hirauchi
?
C#で作成するfacebookアプリ mvp community camp
Shinichi Hirauchi
?
贵补肠别产辞辞办スパムデータベース词あなたのお友达に、スパムアカウントが纷れ込んでませんか
Shinichi Hirauchi
?
简易电话交换机の作成词廃品利用による低予算プロジェクト
Shinichi Hirauchi
?
Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして
Shinichi Hirauchi
?
Ad
64ビット対応顿濒濒インジェクション
3.
顿尝尝滨苍箩别肠迟颈辞苍の利用例
4.
动作イメージ
パワー ポイント メモ帳 Windows メモ帳 メモ帳 ブラウザ
5.
动作イメージ 各プロセスのメモリ空間内には、当該プロセ スの独自コード?カーネル?DLLがロード
プロセスA プロセスB カーネルコード カーネルコード プロセスAのコード プロセスBのコード Other.dll test.dll user32.dll user32.dll kernel32.dll kernel32.dll
6.
2种类の顿尝尝配置
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