DLLインジェクションで実行中プロセスのマシンコードを書き換える

今回はRemoteDLLというツールを使ってdllインジェクションをやってみます。dllインジェクションとは、実行中プロセスのメモリ空間に自分が作成したdllモジュールを読み込ませ、任意のコードを実行するといったものです。


RemoteDLLはdllインジェクションをGUIで簡単に行えるようにするための補助ツールみたいなものです。dllはVisual Studioで作成しています。


参考までに下記画像では、dllインジェクションでCalculatorプロセス内から、メッセージボックスを呼び出している。



それではdllインジェクションを使用してどのようなことを行うのか説明します。

下記の画像を見てください。



解析対象プログラムはユーザーが入力したIDに対して、正解のSNを入力すればCorrect!!というメッセージボックスが出現し、間違えるとエラーメッセージが出るというものです。


それをdllインジェクションを使用して解析対象プログラムのコードを書き換え、どんなSNでも正解のメッセージを出現させるようにします。


適当なIDとSNを入力すると、当然ですがエラーメッセージが出ます。


dllインジェクションでコードを書き換えると、同じIDとSNを使用しているにもかかわらず正解のメッセージが出るようになります。



※上記画像のプログラムは解析演習を目的としたもので、crackmeと呼ばれるものです。
以後、aoi.exeと記述します。


大まかな手順

1.x32dbgでaoi.exeのSNチェックルーチンを解析
2.Visual Studioでdllを作成
3.RemoteDLLで作成したdllをaoi.exeに注入


実行環境と必要なツール

実行した環境
・Windows 10 HOME
必要なツール
・aoi.exe
・RemoteDLL
・x32dbg
・Visual Studio

関連記事

0 Comments