今日、Visual C++で書かれた簡単な「Hello world」プログラムをIDA Proを使って逆コンパイルすることにしました。リバースエンジニアリングC++
私の知る限りでは、実行可能なエントリポイントでprintfをすぐに呼び出すことができないと確信していました。 コンパイルプロセス中に私によって書かれずにコンパイラによって追加された多くのコードが見つかりました。
コンパイルプロセス中にどのコードが追加されたかをよりよく理解したいと思います。 どうしますか? "main"をすばやく見つけ出し、逆アセンブリによって生成された不要なコードをすべてスキップする "トリック"はありますか?
私はこの記事にあった見つけることができる最高: http://www.codeproject.com/Articles/4210/C-Reverse-Disassembly、 は、次のようにVisual C++を使用してコンパイルされた実行可能の実行順序があると言って:
メイン
CrtlStartUpを
CrtlCleanUp
もっと詳しい回答がありますか?
非常にコンパイラとプラットフォーム固有です。私は、あなたが望む正確な答えを得ることは疑う。 – Matt
リバース・エンジニア・ガー・ウィナビーの方にロードマップとして[この記事](http://stackoverflow.com/a/9952374/176769)をお勧めします。 – karlphillip
リバースエンジニアリングの経験はありませんが、メインアドレスの先頭にデバッガのブレークポイントを設定して相対アドレスを取得することはできませんでしたか?あるいは、実行可能ファイルのオブジェクトダンプをメインで検索しますか? – bjhend