2

私はPEBで働いています。_RTL_USER_PROCESS_PARAMETERS の中に入ることができました。私の目的->バイナリファイル(.exeファイル)を使用してのみ argc と argv .(可能であればそれらの値も)のメモリアドレスを知ること 私の現在のアプローチ->コマンドライン文字列(構造体 _RTL_USER_PROCESS_PARAMETERS.

acプログラム内にasmを埋め込むことで、なんとか内部に入ることができました

mov eax:fs[0x30]
mov [PEBaddress] , eax

mov ebx, [eax+0x10]
mov [ProcessParameters] , ebx

Windowsデバッガーでバイナリを調べて、オフセット0x30と0x10を取得しました

現在、Processparameters アドレスから 0x40 のオフセットに、文字列コマンドラインがあります。これは、argc と argv の値を保持しているとさらに信じているバッファです。

問題: そのバッファを読み取り、argc と argv (プロセスに渡されるコマンドライン引数) のアドレス値を取得したいのですが、バッファを読み取るためのコード (Unicode 文字列であるため) を提供することで、誰でもこれを可能にできますか?必要なアドレスを取得します。

この仕事を行う別の方法はありますか? (また、main 内の argc と argv のアドレスを出力するオプションを私に与えないでください) 静的な回答が必要です。

4

1 に答える 1

2

Windows はプログラムに渡されargcません。argv完全なリテラル コマンド ラインを文字列として渡します。問題のプログラムが C プログラムであっても、この解析はそのプログラムに埋め込まれた C ランタイム ライブラリによって行われます。

于 2012-10-19T18:43:37.687 に答える