Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
Shinichi Hirauchi
PDF, PPTX
7,037 views
64ビット対応Dllインジェクション
CLR/H66で担当させて頂いたセッションの資料です。 pdf用に一部編集されています。
Read more
8
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 24
2
/ 24
3
/ 24
4
/ 24
5
/ 24
6
/ 24
7
/ 24
8
/ 24
9
/ 24
10
/ 24
11
/ 24
12
/ 24
13
/ 24
14
/ 24
15
/ 24
16
/ 24
17
/ 24
18
/ 24
19
/ 24
20
/ 24
21
/ 24
22
/ 24
23
/ 24
24
/ 24
More Related Content
PDF
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...
by
Akihiro Suda
PDF
SSE4.2の文字列処理命令の紹介
by
MITSUNARI Shigeo
PDF
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
by
NTT DATA Technology & Innovation
PDF
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
by
Kuniyasu Suzaki
PDF
unique_ptrにポインタ以外のものを持たせるとき
by
Shintarou Okada
PDF
FridaによるAndroidアプリの動的解析とフッキングの基礎
by
ken_kitahara
PDF
eBPF - Rethinking the Linux Kernel
by
Thomas Graf
PDF
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
by
Yoshio Hanawa
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...
by
Akihiro Suda
SSE4.2の文字列処理命令の紹介
by
MITSUNARI Shigeo
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
by
NTT DATA Technology & Innovation
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
by
Kuniyasu Suzaki
unique_ptrにポインタ以外のものを持たせるとき
by
Shintarou Okada
FridaによるAndroidアプリの動的解析とフッキングの基礎
by
ken_kitahara
eBPF - Rethinking the Linux Kernel
by
Thomas Graf
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
by
Yoshio Hanawa
What's hot
PDF
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
by
Kuniyasu Suzaki
PDF
初心者向けCTFのWeb分野の強化法
by
kazkiti
PDF
Git을 조금 더 알아보자!
by
Young Kim
PDF
eBPF Trace from Kernel to Userspace
by
SUSE Labs Taipei
PDF
Scapyで作る・解析するパケット
by
Takaaki Hoyo
PDF
TripleO Deep Dive 1.1
by
Takashi Kajinami
PDF
Linux kernel
by
Mahmoud Shiri Varamini
PPTX
ConfD で Linux にNetconfを喋らせてみた
by
Akira Iwamoto
PDF
Building Network Functions with eBPF & BCC
by
Kernel TLV
PPTX
LLVM Instruction Selection
by
Shiva Chen
PDF
Docker Compose 徹底解説
by
Masahito Zembutsu
PDF
マイクロサービスバックエンドAPIのためのRESTとgRPC
by
disc99_
PDF
Open Policy Agent (OPA) 入門
by
Motonori Shindo
PDF
AndroidとSELinux
by
android sola
PPTX
LLVM Backend Porting
by
Shiva Chen
PDF
Docker, Linux Containers (LXC), and security
by
Jérôme Petazzoni
PDF
initramfsについて
by
Kazuhiro Nishiyama
PDF
About GStreamer 1.0 application development for beginners
by
Shota TAMURA
PPTX
NVMCT #1 ~今さら聞けないSSDの基本~
by
Fixstars Corporation
PDF
A quick tour of the Cysharp OSS
by
Yoshifumi Kawai
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
by
Kuniyasu Suzaki
初心者向けCTFのWeb分野の強化法
by
kazkiti
Git을 조금 더 알아보자!
by
Young Kim
eBPF Trace from Kernel to Userspace
by
SUSE Labs Taipei
Scapyで作る・解析するパケット
by
Takaaki Hoyo
TripleO Deep Dive 1.1
by
Takashi Kajinami
Linux kernel
by
Mahmoud Shiri Varamini
ConfD で Linux にNetconfを喋らせてみた
by
Akira Iwamoto
Building Network Functions with eBPF & BCC
by
Kernel TLV
LLVM Instruction Selection
by
Shiva Chen
Docker Compose 徹底解説
by
Masahito Zembutsu
マイクロサービスバックエンドAPIのためのRESTとgRPC
by
disc99_
Open Policy Agent (OPA) 入門
by
Motonori Shindo
AndroidとSELinux
by
android sola
LLVM Backend Porting
by
Shiva Chen
Docker, Linux Containers (LXC), and security
by
Jérôme Petazzoni
initramfsについて
by
Kazuhiro Nishiyama
About GStreamer 1.0 application development for beginners
by
Shota TAMURA
NVMCT #1 ~今さら聞けないSSDの基本~
by
Fixstars Corporation
A quick tour of the Cysharp OSS
by
Yoshifumi Kawai
Similar to 64ビット対応Dllインジェクション
PDF
今よりも少し(?)昔、 Windowsを作ろうとした話
by
Masaru Oki
PPTX
Dll Injection
by
Hiroaki Hata
PPTX
as-5. サブルーチン呼び出しのメカニズム
by
kunihikokaneko1
PDF
あなたの知らないnopたち@ラボユース合宿
by
MITSUNARI Shigeo
PDF
怪しいWindowsプログラミング
by
nagoya313
PDF
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
by
7shi
PDF
超基礎からのコンピュータ
by
Yoshihiro Yamaguchi
PDF
Visual Studio Community 2013 で始めるプログラミング Win32/MFC #clrh93
by
hiyohiyo
PDF
V6read#3
by
magoroku Yamamoto
PDF
Exploring the x64
by
FFRI, Inc.
PDF
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
by
Yuto Takei
PDF
Loading dl lfrommemory
by
ry0kvn
PDF
PFI Seminar 2010/02/18
by
Preferred Networks
PDF
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
by
Yoshihisa Ozaki
PDF
【学習メモ#3rd】12ステップで作る組込みOS自作入門
by
sandai
PDF
llvm入門
by
MITSUNARI Shigeo
PDF
PWNの超入門 大和セキュリティ神戸 2018-03-25
by
Isaac Mathis
PPTX
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
by
Satoshi Mimura
PDF
From IA-32 to avx-512
by
MITSUNARI Shigeo
PPTX
ネイティブコードを語る
by
Kenji Imasaki
今よりも少し(?)昔、 Windowsを作ろうとした話
by
Masaru Oki
Dll Injection
by
Hiroaki Hata
as-5. サブルーチン呼び出しのメカニズム
by
kunihikokaneko1
あなたの知らないnopたち@ラボユース合宿
by
MITSUNARI Shigeo
怪しいWindowsプログラミング
by
nagoya313
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
by
7shi
超基礎からのコンピュータ
by
Yoshihiro Yamaguchi
Visual Studio Community 2013 で始めるプログラミング Win32/MFC #clrh93
by
hiyohiyo
V6read#3
by
magoroku Yamamoto
Exploring the x64
by
FFRI, Inc.
[Basic 7] OS の基本 / 割り込み / システム コール / メモリ管理
by
Yuto Takei
Loading dl lfrommemory
by
ry0kvn
PFI Seminar 2010/02/18
by
Preferred Networks
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
by
Yoshihisa Ozaki
【学習メモ#3rd】12ステップで作る組込みOS自作入門
by
sandai
llvm入門
by
MITSUNARI Shigeo
PWNの超入門 大和セキュリティ神戸 2018-03-25
by
Isaac Mathis
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
by
Satoshi Mimura
From IA-32 to avx-512
by
MITSUNARI Shigeo
ネイティブコードを語る
by
Kenji Imasaki
More from Shinichi Hirauchi
PPTX
最近、ショッピングセンターとかの駐車場で見かける「自動でナンバープレートを認識して決算するやつ」←これ、作ってみました
by
Shinichi Hirauchi
PPTX
Developer IO 2024 Odyssey SAMを応用したコンピュータビジョンの話
by
Shinichi Hirauchi
PPTX
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
by
Shinichi Hirauchi
PPTX
Amazon Forecast 機械学習でビジネスの予測と成果を簡単かつ正確に予測する
by
Shinichi Hirauchi
PPTX
Amazon connect について 〜各種AWSのサービスとの連携〜
by
Shinichi Hirauchi
PPTX
Alexa SDK Alexa Salon
by
Shinichi Hirauchi
PDF
Developers.io 2017 iPhoneによるAlexa/Lex/Pollyを利用した 音声対応クライアントの作成方法
by
Shinichi Hirauchi
PPTX
Developers.io.札幌 xamarinってどうよ
by
Shinichi Hirauchi
PPTX
20分でできる!Xamarin.Forms入門
by
Shinichi Hirauchi
PPTX
ソフト屋が挑戦した電子工作 〜力ずくの10か月〜
by
Shinichi Hirauchi
PPTX
Developers.IO 2016 F-1 セッション資料
by
Shinichi Hirauchi
PDF
シルバーウィークにfacebookアプリを作成した
by
Shinichi Hirauchi
PDF
Xamarin.formsで作成する翻訳機能付きtwitterクライアント
by
Shinichi Hirauchi
PPTX
簡易電話交換機の作成~廃品利用による低予算プロジェクト~
by
Shinichi Hirauchi
PDF
この辺でXamarin導入による 効果と限界をしっかり把握してみよう MVP Community Camp 2015
by
Shinichi Hirauchi
PDF
BoxViewの美味しい食べ方
by
Shinichi Hirauchi
PDF
C#で作成するfacebookアプリ mvp community camp
by
Shinichi Hirauchi
PDF
Facebookスパムデータベース~あなたのお友達に、スパムアカウントが紛れ込んでませんか
by
Shinichi Hirauchi
PDF
簡易電話交換機の作成~廃品利用による低予算プロジェクト
by
Shinichi Hirauchi
PDF
Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして
by
Shinichi Hirauchi
最近、ショッピングセンターとかの駐車場で見かける「自動でナンバープレートを認識して決算するやつ」←これ、作ってみました
by
Shinichi Hirauchi
Developer IO 2024 Odyssey SAMを応用したコンピュータビジョンの話
by
Shinichi Hirauchi
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
by
Shinichi Hirauchi
Amazon Forecast 機械学習でビジネスの予測と成果を簡単かつ正確に予測する
by
Shinichi Hirauchi
Amazon connect について 〜各種AWSのサービスとの連携〜
by
Shinichi Hirauchi
Alexa SDK Alexa Salon
by
Shinichi Hirauchi
Developers.io 2017 iPhoneによるAlexa/Lex/Pollyを利用した 音声対応クライアントの作成方法
by
Shinichi Hirauchi
Developers.io.札幌 xamarinってどうよ
by
Shinichi Hirauchi
20分でできる!Xamarin.Forms入門
by
Shinichi Hirauchi
ソフト屋が挑戦した電子工作 〜力ずくの10か月〜
by
Shinichi Hirauchi
Developers.IO 2016 F-1 セッション資料
by
Shinichi Hirauchi
シルバーウィークにfacebookアプリを作成した
by
Shinichi Hirauchi
Xamarin.formsで作成する翻訳機能付きtwitterクライアント
by
Shinichi Hirauchi
簡易電話交換機の作成~廃品利用による低予算プロジェクト~
by
Shinichi Hirauchi
この辺でXamarin導入による 効果と限界をしっかり把握してみよう MVP Community Camp 2015
by
Shinichi Hirauchi
BoxViewの美味しい食べ方
by
Shinichi Hirauchi
C#で作成するfacebookアプリ mvp community camp
by
Shinichi Hirauchi
Facebookスパムデータベース~あなたのお友達に、スパムアカウントが紛れ込んでませんか
by
Shinichi Hirauchi
簡易電話交換機の作成~廃品利用による低予算プロジェクト
by
Shinichi Hirauchi
Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして
by
Shinichi Hirauchi
64ビット対応Dllインジェクション
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