リーバスエンジニアリングバイブル メモ1
リバースエンジニアリングバイブルという本を読み始めたので、章ごとにわかったことをまとめていきたいと思います。
※レジスタ = 変数
EAX : 32bit( 4Byte )のレジスタ
算術計算と戻り値の保存
EDX
EAX と役割は同じだが、戻り値の保存には使用されない
ECX
ループを実行するときに(減算)カウントする
EBX
EAX、EDX、ECX では足りない場合利用
ESI、EDI
ESI と EDI もスタートアドレスと目的地アドレスであり、ESI からメモリの内容を読み込んで EDI にコピーする
ソース(Source:スタートアドレス)
デスティネーション(Destination:目的地アドレス)
__declspec(naked)
naked を使用すると、それ以降、この関数の中では補助的なコードを全く使用しないことを指定することになり、コンパイラはこの関数内にどんな独自コード、戻り値を生成しない。
重要なアセンブラの命令
PUSH, POP
MOV 値を渡す
LEA アドレスを渡す
ADD
SUB
INT
CALL
INC, DEC
AND OR XOR
XOR EAX, EAX でEAXを0で初期化できる
NOP
CMP, JMP
関数の呼び出し(理解不十分)
ebp+4にはリターンアドレスが入っている。
反省
まだ関数呼び出しのスタックの部分の理解があいまい