バイナリ解析技法【Python3での利用】

「そんな目で見つめるなよ。興奮しちゃうじゃないか。」 ヒソカ=モロウ

はじめに

このブログをリバースエンジニアについてあまりわかんない;)という全国の女子高校生に捧げます。

概要

リバースエンジニアリング Pythonによるバイナリ解析技法を読みましたか??このブログでは2009年に出版された本書で使われているPython2のモジュールがPython3でどの様に生き残っているか紹介していく。
【邦書】 O'Reilly Japan - リバースエンジニアリング 【洋書】 Gray Hat Python - O'Reilly Media

ctypes:Pythonのための外部関数ライブラリ

ctypes は Python のための外部関数ライブラリです。このライブラリは C と互換性のあるデータ型を提供し、動的リンク/共有ライブラリ内の関数呼び出しを可能にします。動的リンク/共有ライブラリを純粋な Python でラップするために使うことができます。

16.16. ctypes — Pythonのための外部関数ライブラリ — Python 3.6.1 ドキュメント

pydbg

独自のデバッガを構築はほかのブログで構築するとして pydbgについては特に見つからなかったので誰かに紹介してほしい。 一応、標準のpdbを出しておきます。

27.3. pdb — The Python Debugger — Python 3.6.2rc1 documentation

Immunity Debugger

Immunity Debuggerエクスプロイトを作成し、マルウェアを分析し、バイナリファイルをリバースエンジニアリングする強力な新しい方法です。これは、ヒープ作成のために特別に構築された業界初のヒープ解析ツールであり、容易に拡張できるように大きくサポートされているPython APIである、機能グラフ作成機能を備えた堅牢なユーザーインターフェイスをベースにしています。

Immunity Debugger

Python3のAPIは見つかりませんでした。4年前から更新がないし悲しい…。python2なら動きました…。

GitHub - kbandla/ImmunityDebugger: ImmunityDebugger

Sulley

Sulleyは、積極的に開発されたファジングエンジンと、複数の拡張可能なコンポーネントで構成されるファズテストフレームワークです。Sulley(IMHO)は、以前に発表されたほとんどのファジング技術、商用およびパブリックドメインの機能を超えています。このフレームワークの目的は、データ表現だけでなくデータ伝送と計測を単純化することです。SulleyはMonsters Inc.の生き物の名前を愛称としています。なぜなら、彼はあまりにも曖昧だからです。

GitHub - OpenRCE/sulley: A pure-python fully automated and unattended fuzzing framework.

http://www.fuzzing.org/wp-content/SulleyManual.pdf

脆弱性を発見するFuzzingの欠点を補う「Sulley」 - Black Hat Japan 2007 | マイナビニュース

現在開発が終わっているので後継であるboofuzzがあるのでこっちを使ってください。

GitHub - jtpereyda/boofuzz: A fork and successor of the Sulley Fuzzing Framework sulleyはメンテナンスが終わっているので Boofuzzは、Sulleyの後継ファジングフレームワーク。boofuzzは数多くのバグ修正の他に、拡張性を目指しています。

最後に

では、リバースエンジニアリングを楽しんで!!!!!!!!!!!!!!