ハッキングからの悩み:搾取の術

私は最近、ハッキング:搾取の技術(第2版)と題されたこの本を購入しました。いずれにしても、firstprog.c:

#include 
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を使って、objdumpをOS
Xで見つけることができませんでした)。出力をgrepにパイプします:正規表現と最初の20ライン。その後、gdbでデバッグし、mainでブレークします。
私の主な問題は次のとおりです。すべてのメモリアドレスが異なります。 たとえば、本のeipは
0x804837a です。しかし、私のコンピュータではリッピングがあります:
0x100000ee8
私は64ビットOSを使用していると思っていましたが、32ビットバージョンのDarwinで起動したときにも同じ結果が得られました。誰かがこの問題が何であるか知っていれば、私は大いに感謝しています。それは本当に愚かな何か私に休憩を与える場合、私はちょうど14になった:)

ベストアンサー

あなたがリバースエンジニアリングを学んでいると確信しているので、 ASLR
が何であるかを調べるべきです。これは、あなたのプログラムのオフセットが本のものと異なる主な理由です。基本的には、プログラムがメモリ上にある場所をランダムにするので、アドレスをシェルコードにハードコードするエクスプロイトを作成することはできません。これにより、悪用をもっと難しくすることができます。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です