Reversing

高機能トレーサーqiraを使ってみる

qira(QEMU Interactive Runtime Analyser)は、George Hotz(geohot)氏が開発している高機能トレーサーである。 qiraは実行時のレジスタ、メモリ操作をすべて記録することにより、特定の命令アドレスを実行しているタイミングや特定アドレスのメモリ読み書…

angrでシンボリック実行をやってみる

シンボリック実行とは、プログラム上の変数をシンボルとして扱い、シンボルに対する一連の操作を分析することで条件を満たす入力値を特定するプログラム解析手法である。 ここでは、CTFチームShellphishが開発しているバイナリ解析ツールangrを使い、簡単な…

DLL injectionでWindows APIによる暗号化処理を覗いてみる

「LD_PRELOAD injectionでOpenSSLによる暗号化処理を覗いてみる」では、Linux環境におけるOpenSSLを使った暗号化処理を覗いてみた。 ここでは、「IAT書き換えによるAPIフックをやってみる」と同様の方法にて、Windows環境におけるWindows APIを使った暗号化…

LD_PRELOAD injectionでOpenSSLによる暗号化処理を覗いてみる

LD_PRELOAD環境変数を使ったライブラリ関数フックにより、OpenSSLの暗号化処理を覗くコードを書いてみる。 環境 Ubuntu 14.04.4 LTS 64bit版 $ uname -a Linux vm-ubuntu64 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 x…

Intel Pinでlivestringsを作ってみる

「Intel Pinでcmptraceを作ってみる」では、x86/x64用のDBIツールであるIntel Pinを使ってcmp命令のトレースを行うコードを書いた。 ここでは、同様にIntel Pinを使い、メモリ上に展開されているASCII文字列を列挙するlivestringsを作ってみる。 環境 Ubuntu…

Intel Pinでcmptraceを作ってみる

「Intel Pinを使ってみる」では、Intel Pinをダウンロードし、付属しているコードを使ってみた。 ここでは、実際にコードを書き、cmp命令のトレースを行うコードcmptraceを作ってみる。 環境 Ubuntu 14.04.4 LTS 64bit版 $ uname -a Linux vm-ubuntu64 3.19.…

Intel Pinを使ってみる

Dynamic Binary Instrumentation(DBI)は実行時にバイナリの内容を書き換えることにより、CPU命令の単位でプログラム実行のトレースなどを行う手法である。 ここでは、x86/x64用のDBIツールであるIntel Pinを使ってみる。 環境 Ubuntu 14.04.4 LTS 64bit版 …