0

起動するたびにランダムなベース アドレスを持つ .exe のベース アドレスを取得する必要があります。私はこれを試しましたが、うまくいかないようです:

int Base = (DWORD)GetModuleHandle("Test.exe");

なにが問題ですか?

4

2 に答える 2

2

別のプロセスのベースアドレスを取得しようとしているようです。残念ながら、GetModuleHandle現在のプロセスのモジュールに対してのみ機能します。目標を達成するには、PSAPI を使用するかCreateToolhelp32Snapshot、別のプロセスのモジュール リストを抽出する必要があります。ベースアドレスはリストにあります。

于 2016-06-13T14:54:16.430 に答える
1

起動するたびにランダムなベース アドレスを持つ .exe のベース アドレス/エントリ ポイント アドレスを取得する必要があります。プログラムは ASLR を使用します。

...

これを使用して、正しいプロセス内のメモリの特定のチャンクを編集します

別のプロセスにデータを書き込むにはWriteProcessMemory()、 を使用する必要があります。これには、書き込み先のプロセスを開く必要がありますHANDLE

、リクエスト、およびパーミッションをHANDLE使用してそれを取得します。入力としてプロセス ID を受け取ります。これは次から取得できます。OpenProcess()PROCESS_VM_OPERATIONPROCESS_VM_WRITEOpenProcess()

プロセスの列挙およびすべてのプロセスの列挙 を参照してください。

書き込み先のプロセスのベース アドレスを特定する必要はありません。システムにその情報を追跡させます。必要なのはHANDLEプロセスへのオープンさだけです。

于 2016-06-13T17:42:26.597 に答える