VBKiller の使用説明書
Killer は、VB 支援の逆分析ツールです。まず最初に断っておきますが、VB プログラムを VB ソース コードに逆コンパイルするのには役立ちません。VB プログラムの逆アセンブリを VB コードに近づけるだけです。
IDA を使用すると、VB プログラムのほぼすべてのクラス構造、メソッド テーブル、関数本体を作成し、VB プログラムで参照される COM の CLSID を識別し、ProgID を使用して名前を付けることができます。任意の COM プログラム (VB 以外でも、メソッド テーブルと関数本体をコンパイルし、メソッド テーブル構造を作成できます。これらの構造は、分析する VB プログラムで使用できます。これらのプロセスを経て、分析対象の VB プログラムは IDA 内で非常に標準化されたクラスとメソッドを多数形成しており、ソース コードをリバース エンジニアリングすることもそう遠くありません。
使用方法:
参照ボタンをクリックして COM プログラム、DLL、Exe、または ocx を選択します。VB プログラムではない場合は、「非 VB プログラム」にチェックを入れてクリックして表示します。左側のボックスには、選択したプログラムのすべての COM インターフェイスがリストされます。クラスと列挙も表示したい場合は、[インターフェイスを除くすべてのクラスを表示] を選択できます。任意のインターフェイスをクリックすると、メソッド テーブル内のアドレスやメソッド本体の実際のアドレスを含む、インターフェイスのすべてのメソッドが右側に表示されます。最初の 7 つの基本メソッドを表示するには、「基本インターフェイスのメソッドを表示」を選択する必要があります。非 VB プログラムの場合、右側にイメージ ベース アドレスと仮想ベース アドレスがあります。イメージ ベース アドレスはプログラムの ImageBase であり、仮想ベース アドレスはプログラムのメモリ空間に割り当てられる開始アドレスです。おそらく、デフォルトでこのアドレスが計算されます。これが間違っている場合は、手動で変更する必要があります。これは、プログラムによって取得されたメソッド テーブルのアドレスが実行領域内にあり、これら 2 つのベース アドレスが、静的ファイルなので非常に重要なので入力できません。入力しないとエラーが認識されます。 [IDC の生成] をクリックして、現在選択されているインターフェイスに対応する IDC ファイルを生成します。クラスと列挙は IDC を生成できません。この IDC を IDA にロードすると、対応するメソッド アドレスが自動的に識別され、処理されます。 [すべて生成] をクリックして、すべてのインターフェイスの IDC ファイルを生成します (同じファイルに入れます)。 [構造の生成] を選択し、2 つの生成ボタンを使用して、この COM に対応する構造作成スクリプトを生成します。この構造 IDC を IDA にロードすると、次のような対応する構造のバッチが IDA に生成されます。 分析されたプログラムの 1 つはデータベース操作を使用します。通常、ADO と CAPICOM の構造スクリプトをロードする必要があります。
VBKiller には、スキャンが完了していない COM をスキャンして識別する機能もあります。
同じディレクトリには、他にもいくつかの c ファイルがあります。
このうち、header.c は上記の IDC ファイルに含まれています。これは公開関数ファイルです。
vb.c はネット上で流通している vb.idc の修正版ですが、あまり変更されていないところが多いように感じます。このスクリプトは、VB プログラムのクラス構造とイベント テーブルを確立するために使用できます。
vboop.c は、VB のオブジェクト指向機能の分析を支援するために特別に設計されたスクリプトです。
内部の Do_BasicOOP メソッドは主に vb.c で確立されたイベント テーブルに基づいて、対応する関数本体を処理します。関数が作成されていない場合は、関数を作成し、イベント テーブルの名前と一致するように関数の名前を変更して作成します。各クラスを同時に実行します。メソッド テーブルの構造は後で分析します。
ParseAPI は、VB 内部関数を処理するために使用され、指定されたすべての関数の相互参照をスキャンし、関数に繰り返し可能なコメントを追加し、パラメーターを識別し、パラメーターがレジスターの場合は各パラメーターにコメントを追加します。レジスタデータのソースとコメント。スキャンされた関数とコメントは、現在、コード内で指定されています。必要に応じて、新しい関数を追加できます。
ParseNew メソッドを使用して、すべての _vbaNew および _vbaNew2 相互参照をスキャンし、対応する CLSID を識別しようとします。識別できた場合は、見やすくするために対応するプログラム名に変更されます。認識は組み込みで実装されていますが、現時点では組み込みのものは多くありません。必要に応じて独自のものを追加できます。スキャンでは、認識できない CLSID が見つかった場合、プログラムはその CLSID を同じディレクトリ内の UnKnown.txt に書き込みます。認識できない CLSID が見つかった場合は、ファイルを確認して、レジストリを検索します。 CLSID を取得し、プログラム名を取得した後、それをプログラム内の対応する場所に追加します。