以下の内容はhttps://iww.hateblo.jp/entry/20120805/execstackより取得しました。


main=195

main.c

int main=195;

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


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

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

できた。おわり




以上の内容はhttps://iww.hateblo.jp/entry/20120805/execstackより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14