284

私の友人が Facebook からマルウェアをダウンロードしました。.exe を実際に逆コンパイルできないことはわかっていますが、少なくともアセンブリで表示したり、デバッガをアタッチしたりできますか?

編集して、.NET 実行可能ファイルではなく、CLI ヘッダーもありません。

4

16 に答える 16

537

デバッガーを使用すると、プログラム アセンブリを対話的にステップ実行できます。逆アセンブラ
を 使用すると、プログラム アセンブリをより詳細に表示できます。逆コンパイラを 使用すると、プログラムが何に書かれているかを知っていると仮定して、プログラムを部分的なソース コードに戻すことができます (これは、 PEiDなどの無料のツールで見つけることができます。プログラムがパックされている場合は、最初にアンパックする必要があります)。または、どこにも PEiD が見つからない場合はDetect-it-Easy (現在、DIE はgithubに強力な開発者コミュニティを持っています)。

デバッガー:

  • OllyDbgは、無料の優れた 32 ビット デバッガーであり、ユーザーが作成した多数のプラグインとスクリプトを見つけて、さらに便利にすることができます。
  • WinDbg、無料、Microsoft による非常に有能なデバッガー。WinDbg は、他のデバッガーよりもデータ構造についてよく知っているため、Windows の内部を調べるのに特に役立ちます。
  • SoftICE、 SICE を友達に。商業化と開発は 2006 年に停止しました。SoftICE は一種のハードコア ツールで、オペレーティング システムの下で実行されます (起動するとシステム全体が停止します)。SoftICE はまだ多くの専門家によって使用されていますが、入手が難しく、一部のハードウェア (またはソフトウェア - つまり、Vista または NVIDIA gfx カードでは動作しません) では動作しない可能性があります。

逆アセンブラ:

  • IDA Pro (商用) - 最高級の逆アセンブラー/デバッガー。マルウェア アナリストなど、ほとんどの専門家が使用します。ただし、かなりの費用がかかります (無料版もありますが、かなり制限されています)。
  • W32Dasm (無料) - 少し時代遅れですが、仕事は完了します。最近では W32Dasm は放棄されたものであり、非常に便利な機能を追加するためのユーザー作成のハックが数多く存在します。最適なバージョンを見つけるには、周りを見回す必要があります。

逆コンパイラ:

  • Visual Basic:商用のVB Decompilerは、ある程度識別可能なバイトコードを生成します。
  • Delphi:無料のDeDeは、高品質のソース コードを生成します。
  • C: HexRays、商用、同社による IDA Pro 用プラグイン。素晴らしい結果をもたらしますが、多額の費用がかかり、誰にも販売されません (と聞いています)。
  • .NET(C#):無料のdotPeekは、.NET 1.0-4.5 アセンブリを C# に逆コンパイルします。.dll、.exe、.zip、.vsix、.nupkg、および .winmd ファイルのサポート。

何をしていても便利な関連ツールには、ResourceHacker (無料) などのリソース エディターや、 Hex Workshop (商用)などの優れた 16 進エディターがあります。

さらに、マルウェア分析を行っている (または SICE を使用している) 場合は、仮想マシン、つまりVMware Workstation内ですべてを実行することを心からお勧めします。SICE の場合は実システムを BSOD から保護し、マルウェアの場合は実システムをターゲット プログラムから保護します。VMware を使用したマルウェア分析については、こちらを参照してください。

個人的には、Olly、WinDbg & W32Dasm、およびいくつかの小さなユーティリティ ツールを使用しています。

また、他の人のソフトウェアを逆アセンブルしたり、デバッグしたりすることは、通常、少なくとも EULA に反することを覚えておいてください :)

于 2008-11-07T19:11:48.153 に答える
54

psoulの優れた投稿はあなたの質問に答えるので、彼の良い仕事を再現することはしませんが、これが完全に有効であると同時にひどくばかげた質問である理由を説明するのに役立つと思います。結局のところ、これは学ぶ場所ですよね?

最新のコンピュータプログラムは、人間が読めるテキスト命令(「ソースコード」と呼ばれる)の入力から始まり、コンピュータが読める命令(「バイナリ」または「マシン」と呼ばれる)で終わる一連の変換によって生成されます。コード")。

コンピュータが一連のマシンコード命令を実行する方法は、最終的には非常に簡単です。プロセッサが実行できる各アクション(たとえば、メモリからの読み取り、2つの値の追加)は、数値コードで表されます。1番は悲鳴を意味し、2番はクスクス笑うことを意味し、それに応じて悲鳴を上げるかクスクス笑うことを期待して1または2のカードを掲げた場合、私はコンピューターが使用するのと本質的に同じシステムを使用します。動作します。

バイナリファイルは、これらのコード(通常は「オペコード」と呼ばれます)と、オペコードが作用する情報(「引数」)のセットです。

現在、アセンブリ言語はコンピュータ言語であり、言語の各コマンドワードはプロセッサ上の1つのオペコードを表します。アセンブリ言語コマンドとプロセッサオペコードの間には、直接1:1の変換があります。これが、x386プロセッサのコーディングアセンブリがARMプロセッサのコーディングアセンブリと異なる理由です。

逆アセンブルは単純にこれです。プログラムはバイナリ(マシンコード)を読み取り、オペコードを同等のアセンブリ言語コマンドに置き換え、結果をテキストファイルとして出力します。これを理解することが重要です。コンピューターがバイナリーを読み取ることができる場合は、オペコードテーブルを手に持って手動で(ick)、または逆アセンブラーを介して、バイナリーを読み取ることもできます。

逆アセンブラにはいくつかの新しいトリックがありますが、逆アセンブラは最終的には検索と置換のメカニズムであることを理解することが重要です。そのため、それを禁止するEULAは、最終的に熱風を吹き込みます。コンピューターがプログラムデータを読み取ることを一度に許可したり、コンピューターがプログラムデータを読み取ることを禁止したりすることはできません。

(誤解しないでください。そうする試みがありました。曲ファイルのDRMと同様に機能します。)

ただし、分解アプローチには注意が必要です。変数名は存在しません。そのようなことはあなたのCPUには存在しません。ライブラリ呼び出しは地獄のように混乱し、多くの場合、さらにバイナリを逆アセンブルする必要があります。そして、組み立ては、最高の状態で読むのは地獄のように難しいです。

ほとんどのプロのプログラマーは、頭を悩ませることなく、座ってアセンブリ言語を読むことはできません。アマチュアにとって、それは起こらないでしょう。

とにかく、これはやや大雑把な説明ですが、お役に立てば幸いです。誰もが私の側の虚偽表示を自由に訂正することができます。久しぶりです。;)

于 2008-11-07T21:12:47.220 に答える
19

朗報です。IDA Pro は現在、古いバージョンは無料です: http://www.hex-rays.com/idapro/idadownfreeware.htm

于 2008-11-07T20:18:18.097 に答える
12

適切なデバッガーであれば、これを行うことができます。OllyDbgを試してください。(編集: パラメータを WinAPI 呼び出しにデコードする優れた逆アセンブラもあります!)

于 2008-11-07T18:50:29.257 に答える
8

マルウェアが何をするのかを理解しようとしているだけなら、ファイルシステム、レジストリ、ポートなどにアクセスしようとするたびに報告する無料のツールProcessMonitorのようなものの下で実行する方がはるかに簡単かもしれません...

また、無料のVMWareサーバーのような仮想マシンを使用すると、この種の作業に非常に役立ちます。「クリーンな」イメージを作成し、マルウェアを実行するたびにそのイメージに戻ることができます。

于 2008-11-07T18:59:16.087 に答える
6

もちろん、IDA Proを見てください。彼らは評価版を提供しているので、試してみることができます。

于 2008-11-07T18:49:58.243 に答える
5

アセンブリで表示すると情報が得られるかもしれませんが、仮想マシンを起動して動作を確認するのが最も簡単だと思います。ただし、開いている共有や、ジャンプできるようなものがないことを確認してください;)

于 2008-11-07T18:49:17.823 に答える
4

ブーメランもチェックする価値があるかもしれません。

于 2008-11-08T00:26:46.377 に答える
4

Immunity Debuggerについて誰も何も言わなかったなんて、まだ信じられません。

Immunity Debugger は、エクスプロイトの作成、マルウェアの分析、およびバイナリ ファイルのリバース エンジニアリングを行うための強力なツールです。最初は Ollydbg 1.0 ソース コードに基づいていましたが、名前解決のバグが修正されました。簡単に拡張できるPython APIがサポートされているため、Python スクリプトを記述して分析に役立てることができます。

また、Corelan チームの Peter が書いた mona.py という優れたツールがあります。

于 2013-07-06T13:41:39.637 に答える
3

あなたが欲しいのは、「逆アセンブラ」と呼ばれるソフトウェアの一種です。

クイックグーグルはこれをもたらします:リンク

于 2008-11-07T18:50:45.073 に答える
2

プログラムを実行して、コンピューターに感染せずにプログラムが何を実行するかを確認する場合は、VMWareやMicrosoft VPCなどの仮想マシン、またはSandboxIEなどのプログラムをサンドボックス化できるプログラムで使用します。

于 2008-11-07T21:12:36.240 に答える
2

時間がない場合は、マルウェアを cwsandbox に送信します。

http://www.cwsandbox.org/

http://jon.oberheide.org/blog/2008/01/15/detecting-and-evading-cwsandbox/

HTH

于 2008-11-16T04:40:23.687 に答える
0

エクスプローラースイートは、あなたが望むことをすることができます.

于 2012-08-25T11:25:38.173 に答える