要するに、プロセスプロセスメモリスペースにコードを注入することも、PCソフトウェア開発によって習得する必要がある基本的な知識ポイントです。
Windowsは各プロセスに4Gメモリスペースを割り当て、この4Gスペースのコードにアクセスしてこのプロセスで実行できます。 ソフトウェアの「パッチング」は、実際にはプロセスインジェクションです。
また、プロセスインジェクションを使用して、攻撃のターゲットプロセスに悪意のあるコードを注入するハッカーも多くあります。
Windows環境で一般的に使用されるプロセス注入方法には、CreatereMotethread、Apcinject、SuspendThread、SetWindowHookexなどがあります。
さらに、比較的ユニークな注入方法である反射注入を学びました。反射注入は、主にPEファイルの操作を通じて注入を実装するために使用され、注入成功率が高く、最も価値のある学習があります。
OpneProcess )を開きます。VirtualAllocEX )を取得します。WriteProcessMemory )にDLLの道路力を書き込みます。CreateRemoteThread )を作成します。 Kenerl32からLoadLibrary( GetProcAddress )の関数アドレスを取得し、ターゲットプロセスに書き込まれた動的ライブラリパスをパラメーターとしてLoadLibraryに渡します。WaitForSingleObejct )、メモリを解放し、ハンドルを閉じます。CreateProcess 、6番目のパラメーターを設定して吊り下げます。QueueUserAPC関数を使用して、 LoadLibrary関数をAPCオブジェクトとしてスレッドのAPCキューに追加し、パラメーターとしてDLLのパスを渡します。解放ハンドルとメモリに注意してください。全体的なアイデアは、DLLに動的ライブラリをロードし、ターゲットプロセスにロードするloadlibrary関数を実装することです。
Loadibrary関数は、PEファイルを変更することにより実装されます。
1.ターゲットプロセスアドレス空間のアプリケーションスペースにDLLを書き込みます。
2. DLLに実装されたファイルに独自のロードをロードする関数のアドレスを取得し、リモートスレッドを作成し、関数のアドレスを渡します。 DLLにロードする関数も巧妙に実装されます。
setWindowsHookEX関数を使用した注入。Windowsオペレーティングシステム、VS2015。
両方のテストは、32ビットWindowsシステムと64ビットWindowsシステムで渡されます。
.
|-- APCInject(Ring0) // 驱动层的APC注入
|-- APCInject // Ring3层的APC注入
|-- CreateSuspend // 挂起线程注入
|-- InjectByRegister // 注册表注入(未测试)
|-- ReflectDll // 反射注入的Dll
|-- ReflectiveInject // 反射注入
|-- RemoteThread // 远程线程注入
|-- Src // 驱动层的APC注入源码
|-- Dll.dll // 32位测试Dll
|-- Dll64.dll // 64位测试Dll
|-- Process-Inject.sln // 项目启动文件
|-- README.md // 项目说明文件
.
Pullリクエストへようこそ。問題を求めてください。
この作品を解釈するときは、同じように署名して共有してください。