私のアプリケーションは、ポインタを取得するために他のアプリケーションメモリを読み込んでいます。私は最初にアプリケーション自体で作業を開始するために静的ライブラリからのオフセットを読み取る必要があります。macOS - 他のアプリケーションライブラリコードの一部を読み込み、オフセットを取得するために逆アセンブルする
いくつかのdylibの関数には、ポインタ "0x41b1110"へのオフセットが含まれています。このオフセットは手動で使用すると機能することがわかりますが、メモリから読み込みを単純にすると、 SomeAddressXをuint64_tとしてアドレス指定すると、0x41b1110と等しくないばかばかしいアドレスが得られます。私が得たものは、この命令だけです。次に、私はバイト配列としてこれを読んでみました。このバイト配列は、このアドレスのプレーンバイナリからバイト配列に等しいものでした。私は単純に "0x41b1110"を完全に読んでいないのでしょうか?バイトコードをx64命令に逆アセンブルしてからアドレスを取得するために解析する必要がありますか、それともよりスマートな方法ですか?私はあまり経験がありません。
SomeAddressX - rax, qword [ds:0x41b1110]
例のバイトコード命令を追加する
が48 8D 05 6F D9 99 00
最初の3 48 8D 05
はlea rax, qword
ように見えますが、他の部分6F D9 99 00
が01 04 37 40 (0x1043740)
のように見ていない与え
lea rax, qword [ds:0x1043740]
?
任意のバイナリで固定アドレスにあるものはすべて読み込む必要がありますか?あるいは、そのバイナリ内のシンボルのアドレスを調べたいということですか? –
基本的には任意のバイナリで固定アドレスから値を読み込みますが、簡単に実行できますが、結果は貼り付けられた命令を含むバイト配列です。私はそれから "0x41b1110"を抽出する必要があるが、私はどのように考えている。 – Steven
バイト配列がどのように見えるかを表示できますか? (バイト値)。あなたは命令BTWを貼り付けておらず、一部の引数のみを貼り付けました。 – Ped7g