揮発性のメモ2

http://d.hatena.ne.jp/iww/

main=195

main.c

int main=195;

mainが0xC3(retq)として実行されるので、これだけで正常に「なにもせず終了するプログラム」になるはずだった。


このままコンパイルすると、スタック領域にmainが確保されるらしいので実行できずセグメンテーション違反になる。
実行できるようにするには、スタック領域のコードを実行可能になるようにコンパイル時にオプションを指定する。
IPA ISEC セキュア・プログラミング講座:C/C++言語編 第10章 著名な脆弱性対策:バッファオーバーフロー: #5 運用環境における防御

$ gcc -z execstack main.c
$ ./a.out
$

できた。おわり