問題タブ [virtualalloc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - ユーザー定義アドレスへの DLL のロード
loadlibrary()
DLL をユーザー定義メモリ アドレスにロードする方法、または関数を使用して DLL をロードした後に DLL アドレスを変更することは可能ですか。
VirtualAllocEx()
メモリアドレスを割り当ててDLLをリモートプロセスにロードするために使用してみました。DLL はリモート プロセスにロードされていますが、アドレスが同じではありません。
関数を使用してみrebaseimage()
ましたが、DLL をロードした後にメモリ アドレスが変更されました。
c - VirtualAlloc() は特定のメモリ アドレスでは機能するが、他のメモリ アドレスでは機能しない
VMdriver5.exe というプログラム (添付した画像の左側) を実行しています。このプログラムは、VMmapper.exe という別のプログラムのプロセスを作成します。VMdriver5.c コード内で、その PID を (GetCurrentProcessId() を使用して) 取得し、作成時にその PID を VMmapper.exe に渡します。これにより、VMmapper は VMdriver5.exe のメモリ レイアウトを表示するため、仮想メモリ オプションを確認できます。
特定のメモリ アドレスで VirtualAlloc() を呼び出すと正常に動作するため、何か助けが得られるかどうか疑問に思っていました。ただし、下の画像でわかるように、503,808 バイトの空きメモリ領域があり、 VirtualAlloc() を使用してその領域の 65,536 バイトを確保しようとしましたが、何らかの理由で失敗しました。パラメータの 1 つとしてメモリ アドレス 00185000 を渡します。
私が使用しているコードは次のとおりです。
助けていただければ幸いです。必要に応じて、さらにコードや情報を提供できます。みんなありがとう、ハッピーイースター。