私はcrackmeチャレンジの一部として、難読化されたバイナリで作業しています。 push
、pop
およびnop
命令(これは何千回も繰り返されます)のシーケンスを持っています。機能的には、これらのチャンクはプログラムに何の影響も与えません。しかし、彼らはCFGの生成とその逆行のプロセスを非常に難しくしています。ELFからのアセンブリ命令の削除
命令をnopに変更する方法があります。は、を削除できます。しかし、私の場合は、CFGの見通しを良くするために、その指示を完全に取り除きたいと思います。命令が削除された場合、私はメモリオフセットも変更する必要があることを理解しています。私が見る限り、これを直接達成するためのツールはありませんでした。
私はIDA Proの評価版を使用しています。私は他のリバース・エンジニアリング・フレームワークを使用したソリューションも公開しています。スクリプティングが可能であれば、それが望ましい。
私はsimilar questionて行ったが、提案された解決策は、私の場合には適用されません。一般的に
スクリプト、CLI、WEB、シンプルTUIと、まだ完成していないGUIとUnixの世界のためにR2(radare.org)フレームワークがあります。また、http://reverseengineering.stackexchange.com/ – osgx
にお尋ねしてみてください。いつもそうすることはできません。コードは、自動的に検出するのが難しい方法で、物の相対的なオフセットに依存する可能性があります。 (例えば、除去されたinsnを横切るジャンプアドレス上の変位を修正することよりも複雑である)。しかし、私はそれがプログラムを壊すことなく動作するかどうかを試してみる価値があると思う。 –
あるいは、CFGを生成している間に、コードの一部( 'push'、' pop'、 'nop'シーケンスのようなもの)を無視する方法を探してみてください。それに対処するために質問を編集すべきですか、新しい質問を開くべきですか? – gtux