揮発性のメモ2

知識をメモ書きしておく

main=195

main.c

int main=195;

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


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

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

できた。おわり