obfuscation

GitHub にMASMパーサ(VC++リスティングファイル向け)を公開

今年の3月の休暇中にOCamlで簡単なMASM(x86, not x64)パーサもどきを書いたので、github に公開します。 masmfront - GitHub コード自体は、去年 flex/BsionC++を用いてC++で書いたMASMパーサをOCamlで書き直しました。自分が作りたい難読化ツールなどに流用…

難読化ツールソースコード公開

難読化ツールのソースコードを公開します。コンパイル済バイナリは含まれていません。ライセンスは自動化ツールと難読化エンジンの両方ともGPLv2となっています。 READMEにも書いていますが、実験・研究目的以外には役に立たないと思いますので、ご注意を。V…

「VC++向け難読化ツールの開発」レポートPDFの公開

平成20年度 情報特別演習レポート VC++向け難読化ツールの開発 難読化ツール開発について書いた大学のレポートを公開します。先日のAVTokyoのスライド(id:obfuscation:20081103#p1)の文章バージョンと思っていただければわかりやすいと思います。関数呼び…

レポート終わったー

いやっほー、難読化ツール開発について書いたレポート提出しました。2段組で表紙含め5ページ。もう一度校正してからアップロードします。

AVTokyo 2008「VC++プロジェクト向け難読化ツールの開発」資料

Slideshareにアップロードしたので、貼っておきますね。構文木やコントロールグラフ云々といった高度なところまではまだ実装できておらず、このときの資料でも詳しく説明できていないので、そういう点ではあまり期待しないでくださいね(汗 英語版の資料作成…

The Deobfuscator at RECON 2008 by Eric D. Laspe/Jason Raber

RECON 2008 Speakers RECON 2008で発表されたEric D. Laspe氏とJason Raber氏による「The Deobfuscator」(IDA Pro向け難読化の復号ツールの紹介)が興味深いです(Blackhat USA 2008でも発表されているようですが)。概要としては、難読化の復号ツール(Deo…

言語処理系の洋書を借りてきた

『Engineering a Compiler』『A Retargetable C Compiler: Design and Implementation』という言語処理系の洋書を大学図書館で借りてきました。タイガーブックと呼ばれる『Modern Compiler Implementation in C』は中央図書館に置いてなかったので、まずはこ…

リバースエンジニアリングとプロテクト開発のココが熱い!

耐タンパー(アンチクラック, アンチリバースエンジニアリング)と難読化を流行らせるにはどうすればいいか、一考してみました。とりあえずリバースエンジニアリングとか、プロテクト開発、難読化の何が熱いのか少し書きつづってみます。 果てのない戦いであ…

いまさら聞けない「難読化」超入門 その1 〜難読化とは〜

「難読化技術」について、広く浅く、できれば簡単に説明したいと思います。 難読化とは 難読化(obfuscation)とは、プログラムやHTMLなどのコード(ソースコード・アセンブリコードなど)を読みづらくする技術です。読みづらくとは、読んで字のごとく人間が…

いまさら聞けない「難読化」超入門

実は釣りです。じゃなくて後で書く。

難読化ツールに実装すると面白そうな機能

難読化ツールでやってしまうと面白そうな機能をメモってみる。 VM化 今流行のやつですね。 構造化例外ハンドラの追加 バッファオーバーフローの検出 スタックメモリの意図しない書き込みとかね! 単なる妄想でした。というか“難読化”だけだとプロテクトとし…

難読化進捗具合

情報特別演習という講義で作っているので、進捗状況の中間報告書を先日書きました。本来はテーマ報告&進捗報告なので、1ページでよかったみたいなんですが、気付いたら2ページに。昨日内容についてアドバイスを指導教官から頂いたので、修正してから来週提…

BHJとか

Paperもあるし毎年開催してるから急がなくてもry、などと諭されてしまい(ry)。少しモチベーションが落ちたのでバイナリエディタ関連を少しやった後、また難読化へ。アセンブリ解析だけじゃぬるいから、Cパーサでも書くか?

難読化の続き

構文木作成までできました。意味解析(or中間コード生成)して、コード生成と難読化するのがこれからです。ここからが難読化の本番ですよ。単純な置換なら一晩でできそうですが、複数ソースコードまたいでグローバルにpublicな関数の呼び出し規約変更してみ…