私は最近この本を購入しました: Hacking: The Art of Exploitation (第 2 版)というタイトルで、最近とても悩まされています。とにかく、例の 1 つである firstprog.c :
#include <stdio.h>
int main() {
int i;
for(i=0; i < 10; i++) {
// Loop 10 times.
printf("Hello, world!\n"); // put the string to the output. }
return 0; // Tell OS the program exited without errors. }
gcc(明らかに :3 )でコンパイルしてから、objdumpを使用します(これには、gobjdumpを使用しただけで、OS Xのobjdumpが見つかりませんでした)出力をmain.:でgrepにパイプし、正規表現として最初の20を表示します行。次に、gdb でデバッグし、main で中断します。これが私の主な問題です。すべてのメモリアドレスが異なります!! たとえば、本の eip は0x804837aです。しかし、リップ付きの私のコンピューターでは: 0x100000ee8 64ビットOSを使用しているからだと思っていましたが、32ビットバージョンのDarwinで起動すると同じ結果が得られました. 誰かがこの問題が何であるかを知っていれば、私はそれを大いに感謝します. それが本当に愚かなことなら、私に休憩を与えてください、私はちょうど14歳になりました:)