IDAの操作メモ - コードの再解析 - | reverse-eg-mal-memoのブログ

reverse-eg-mal-memoのブログ

サイバーセキュリティに関して、あれこれとメモするという、チラシの裏的存在。
medium(英語):https://sachiel-archangel.medium.com/

Ghidraのコード再解析機能と真のルート発見の例で、別のコードに見えている部分を、再解析することで真のコードを見つけることを書きました。

IDAでもそれは可能なので、同じ例を挙げてみます。

今回は簡単な方法として、デバッガでステップ実行するだけでできちゃう、という例です。

 

まず、Ghidraで表示した、hltで終わっているように見えるコードの部分を再掲します。

 

 

 

同じ箇所を、IDAで解析した画面は以下となりました。

デバッガで実行し、0x00496567までステップ実行して止まっているところです。

 

 

表示の仕方は多少違いますが、0x00496578のhltまでは、やっぱり同じコード解析結果となっています。IDAの場合、デフォルトでの解析でも、hltの続きは解析してくれています。スタックに値を積んでcallしているなどが見られることから、続きもコードのようだ、ということは分かります。

一方で、Ghidraの記事で触れたとおり、最初の解析結果では正しくなっていません。

 

IDAのデバッガを使う場合、実は非常に再解析できます。「ステップ実行で、1ステップ実行するだけ」でOKです。

このケースでは、0x00496567から、「Step in (F7)」または「Step over (F8)」を一回押します。すると、以下のようなアラートが表示されます。

 

 

既に解析された命令コードの間にEIPが行こうとしてて、下手するとエラー起こすけど、EIPの位置で直にコードを作っちゃっていい?」と聞かれてる(えらい意訳だな・・・)ので、Yesを押します。

すると、ステップは0x00496576に移動し、以下のようなコードになります。

 

 

hltは無くなり、「mov eax, [ebp - 0Ch]」に置き換わりました。これが本当に実行されるコードというわけです。

ユーザは難しい操作しなくても、ステップ実行を一つ押して、アラートに対して承認するだけで、あとは勝手にやってくれちゃいます。このあたりの使い勝手の良さが、慣れると離れられないIDAの魅力かなと思っています。

 

同じ部分の、Ghidraでの画面も再掲します。当たり前ですが、内容は同じですね。

それぞれ、慣れと利点を上手く使うことが、解析の効率、成功率の上昇に繋がるので、それぞれの特徴は把握しておくといいのではと思います。

 

 

2019/6/15追記:

検体のハッシュ値

MD5:5A80F4F7307ED946DB450DD42EEA2F77
SHA1:5398F2F77C5DCEC3A98041E8D61B67D06B452FDF