リバースエンジニアリングの学習(独学)を始めたばかりです。私は組み立てを理解できるところまで知っています。Cコードを逆アセンブルした後にポップアップする基本的な命令は、私にはほとんど理解できます(各命令の意味など)。それが始まったので、誰かがこれらをばかげた質問のように感じるかもしれません.リバースの基本に関するいくつかの良い電子書籍を提案してください. さて、クエリは次のとおりです。- これは単純な C コードです。
#include<stdio.h>
int main(void)
{
printf("hello world");
}
次に、main の逆アセンブル コードを示します。
0x004013b0 <+0>: push %ebp //saves ebp to stack
0x004013b1 <+1>: mov %esp,%ebp //saves esp onto ebp
0x004013b3 <+3>: and $0xfffffff0,%esp //alignong the stack
0x004013b6 <+6>: sub $0x10,%esp //creating 16 bytes on stack
0x004013b9 <+9>: call 0x401980 <__main> //main call
0x004013be <+14>: movl $0x403064,(%esp) ?? what is it exactly doing??
0x004013c5 <+21>: call 0x401bf0 <printf> //print call
0x004013ca <+26>: leave
0x004013cb <+27>: ret
ここでは、それが何をしているのか理解できませんでした (0x403064 の内容が esp のスタックにコピーされているようですが)- movl $0x403064,(%esp)
このアセンブリ コードでは、"hello world" がどこに保存されているかを知る必要があります。また、基本からの逆転を学ぶために、誰かが私にいくつかの良い読み物を提案できれば. 前もって感謝します。