エントリーの編集
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
Perlを1行でセグフォらせる - Qiita
つまり、さっきのワンライナーは、あるアドレス値を起点として、延々と mprotect システムコールを発行... つまり、さっきのワンライナーは、あるアドレス値を起点として、延々と mprotect システムコールを発行するものだったということです。 ※syscallがシステムコールを呼び出す関数で、10 というのが mprotect に相当する番号。 これでどんな効果があるかというと、指定したメモリ領域の保護属性の変更です。 第3引数の 0 は、PROT_NONE 相当なので、そのメモリ領域に対する、読み書き・プログラム実行全ての許可が失われます。なので、メモリアクセスした瞬間にSEGVが飛んでくるようになるわけです。 なお、開始アドレスとしている 0x800000000000 は、64bitプロセスのメモリの末尾 ( heap,stack,vdso ) が大体ここの直前に配置されることから決めてます。 $ perl -e 'system "cat","/proc/$$/maps"' 7f11879