タグ

ブックマーク / yupo5656.hatenadiary.org (3)

  • 最近のglibcではatexit関数やjmp_bufを狙った攻撃は効かない (PTR_MANGLE) - memologue

    小ネタ。MSの中の人のblogをなんとなく眺めていたら、 Address Space Layout Randomization in Windows Vista - Function Pointer Obfuscation http://blogs.msdn.com/michael_howard/archive/2006/05/26/608315.aspx Protecting against Pointer Subterfuge http://blogs.msdn.com/michael_howard/archive/2006/01/30/520200.aspx という記事がありました。要約すると、「長生きするポインタ(特に関数ポインタ)は悪用されやすいので、値を素のまま格納しないほうがよい」という話です。長生きなポインタというのは、 atexit関数で登録された関数へのポインタ (プロ

    最近のglibcではatexit関数やjmp_bufを狙った攻撃は効かない (PTR_MANGLE) - memologue
    iga_k
    iga_k 2008/08/26
    pointer subterfuge
  • 2007-10-08

    でかいソフトウェアの、大量のソースコードを短時間で読む必要が生じたので、その補助ツールとしてptrace(2)ベースのLinux用関数トレーサを自作しました。こういうツール上でまずソフトウェアを実行してみて、どのファイルのどの関数がどういう順で呼ばれるか把握おけば、いきなりソースコードの山と格闘を始めるより楽かなーと思いまして。せっかく作ったので公開します。 http://binary.nahi.to/hogetrace/ straceはシステムコールだけ、ltraceは共有ライブラリ(DSO)の関数呼び出しだけ*1をトレースしますが、このツールは、実行バイナリ中の自作関数の呼び出しもトレースします。例えば再帰で1から10まで足し算するソースコードを用意して % cat recursion.c #include <stdio.h> int sum(int n) { return n ==

    2007-10-08
    iga_k
    iga_k 2007/10/09
    関数コールトレーサ
  • memologue - Java の ConTest っぽいものを、glibcの新機能(LD_AUDIT)を使って Linux + C/C++ で実現してみる

    たまには何か書きます。C/C++のマルチスレッドなプログラムのユニットテストでバグを効率的に見つけるためのライブラリ?の作成について。 IBM dWのConTest はてなブックマークを眺めていたら、「ConTestを使用したマルチスレッド・ユニットのテスト - 並列テストが困難な理由とConTestの活用」というIBM developerWorksの記事が話題になっていました。 「(Javaの) 並列プログラム上での単体テストの問題点を解決する補助的なテスト手法」だそうで、例としてあがっているのは次のようなケースです。 名前を印刷するのに3つのスレッドを用意する それぞれ、「姓」「スペース」「名」を印刷する 3つのスレッドは同期を取っていない。つまりバグがある しかし、単体テストを行っても、ほぼ毎回、「姓」「スペース」「名」という正しい順序で(スレッドが実行)されてしまい、バグを検出でき

    memologue - Java の ConTest っぽいものを、glibcの新機能(LD_AUDIT)を使って Linux + C/C++ で実現してみる
    iga_k
    iga_k 2006/05/29
  • 1