Decompiler-VB.Net
JP
ログイン
VBReFormer Gen2 エンジンを全面的に書き直し、P-code に完全対応。オンラインスタジオはパブリックベータ公開中。 発表を読む
ドキュメント
VBReFormer Online

VBReFormer Online マニュアル

VBReFormer Online のユーザーマニュアル:ブラウザーに VB6 実行ファイルをドロップし、再構築されたコードを探索し、IDE で再読み込みできるプロジェクトをダウンロードする。

更新日:2026/09/2011 章

ブラウザーの中のスタジオです。Visual Basic 5 または 6 の実行ファイルをドロップし、再構築されたコードを探索して、VB6 IDE で再び開けるアーカイブを持ち帰ります。インストール不要で、どのシステムでも動作します。macOS、Linux、そしてデスクトップアプリケーションには古すぎる Windows でも使えます。

1. スタジオを開く

始めるにあたって、インストールも設定もアカウントの作成も不要です。最近のブラウザーでスタジオのアドレスを開けば、それで完了です。

  • どのシステムでも — スタジオはブラウザーにしか依存しません。Mac、Linux マシン、Windows 10 より前の Windows から VBReFormer を使う唯一の方法です。
  • 11 言語 — Web スタジオは 11 言語で提供され、デスクトップアプリケーションの約 4 倍です。セレクターはヘッダーにあります。
  • ライトテーマまたはダークテーマ — スタジオはシステムの設定に従い、固定することもできます(ライト / ダーク)。

Français · English · Español · Deutsch · Italiano · Português · 日本語 · 简体中文 · Українська · हिन्दी · العربية

2. バイナリをドロップする

  1. 宣言にチェックを入れます。 スタジオは、お客様がそのプログラムの所有者であるか、コードを解析する権利を持っていることの宣言を求めます。これは利用条件であり、形式的なものではありません。
  2. ファイルをドロップします。 所定の領域にドラッグするか、ファイルを選択します。受け付ける形式:.exe.dll.ocx。最大サイズ:64 MB。この制限は、アップロード失敗後に判明するのではなく、画面に表示されています。
  3. 解析を進行させます。 スタジオは各段階を名前とカウンター付きで表示します。ファイルを受信中 → バイナリを解析中 → 逆コンパイル中 → シンボルを一覧中 → 呼び出しグラフ → 制御フロー。

所要時間はバイナリの大きさと性質によります。目安として、9.35 MB の実行ファイルは、開いてからプロジェクトが書き出されるまで 12 秒ほどです。

解析が終わると、スタジオは見つけたものの性質も伝えます。ネイティブコード、P-code、または不明です。

3. ファイルはどうなるか

ファイルは解析され、その後セッションとともに消去されます。何も保持されません。

これはドロップページに書かれていることであり、実際の動作でもあります。バイナリは作業セッションの間だけ処理され、セッションとともに消えます。アーカイブされず、索引化されず、再利用されません。

これが意味するもう一つのこと。 作業はセッションを超えて残りません。タブを閉じたりセッションが期限切れになったりした場合は、バイナリを再度ドロップする必要があります。離れる前にアーカイブをダウンロードしてください。サービスの再起動も進行中のセッションを切断します。お使いのマシンにある元のファイルに危険はありませんが、進行中の探索は失われます。

バイナリの機密性が契約上の問題であれば、Desktop エディションはファイルの読み取りに関わるものすべて(形式、バイト、逆アセンブル、リソース)をローカルで処理し、再構築に関わるものだけをサービスに送ることを知っておいてください。

4. バイナリへの 4 つの入り口

左側のパネルには 4 つの入り口があり、それぞれ異なる質問に答えます。

タブ 答える質問
プロジェクト 「このプログラムはどう構成されているか」 — VB6 が見ていたとおりの、フォーム、クラス、モジュール、およびそれらのプロシージャのツリー。
シンボル これはどこで定義されているか」 — 各シンボルの種類とコンテナを含む完全な一覧。読み取った名前と合成した名前を区別するため、何を信頼できるかが最初から分かります。
検索 「このテキストはどこに現れるか」 — 再構築されたコードとデザイナーセクションの両方で。
リソース 「コード以外に何があるか」 — アイコン、カーソル、ビットマップ、文字列テーブル、バージョン情報。種類、サイズ、内容付き。ライセンスなしで提供されます。リソースは読み取るものであり、再構築するものではないからです。

ツリーの各メンバーには、バイナリが宣言しているとおりの可視性が付きます。(Public)(Private)(Friend) です。可視性を読み取れなかったメンバーには何も付きません。分からないことは書かないからです。

名前の変更

Web スタジオではシンボルの名前を変更でき、変更はグローバルです。他のモジュール内の呼び出し箇所も追従します。これはバイナリに取り組む上での中心的な操作です。逆コンパイラは論理を返し、お客様は名前を返します。

5. ビュー

7 つのビューがあり、スタジオ自身が各ビューの下に、何を表示するか、ライセンスが必要かを示します。

ビュー 表示内容 ライセンス
ソース 再構築された VB6 コード ライセンスなしでプレビュー
IR 制御フローを組み立てる前に逆コンパイラが見ているもの ライセンスなしでプレビュー
アセンブリ x86 機械語、シンボル解決済み 全体を提供
P-code VB6 仮想マシンのオペコード 全体を提供
デザイナ フォームのデザイナーセクション 全体を提供
プロジェクト 再構築された .vbp 全体を提供
構造 読み取られたとおりの形式の構造 全体を提供

境界線。 ファイルから読み取れるものは無料で、再構築するものが有料です。逆アセンブル、構造、デザイナー、.vbp は実行ファイル内に存在するテーブルから取り出されます。一方、VB6 ソースはどこにも存在せず、再構築しなければなりません。その作業こそが製品です。

コードの下には、現在のプロシージャについて逆コンパイラが報告していること、つまり診断(できなかったこととその理由)も表示されます。結果に驚いたときに真っ先に見るべき場所です。

6. コンパイルが残すもの、捨てるもの

この章では、フォームが非常に読みやすく戻ってくる一方で、.bas モジュールが技術的な名前で戻ってくる理由を説明します。規則は単純です。

Visual Basic が実行時に必要とするものはファイルに書き込まれており、VBReFormer はそれを見つけ出します。コンパイル後に不要になったものは捨てられており、誰にも取り戻せません。

残るもの: フォーム、クラス、モジュールの名前 · コントロールの名前 · イベントハンドラー · クラスのパブリックメンバー · インターフェースプロパティ · VB ランタイムの呼び出し(635 関数) · Win32 API(15,680 シグネチャ) · コードの構造 · 文字列。

ファイルにないもの: コメント · ローカル変数の名前 · パラメーターの名前 · 値に置き換えられた名前付き定数 · .bas モジュールのプロシージャ名 · 元のインデント。

検証できる例

以下の抜粋は、Visual Basic 6 に付属するインストールウィザード SETUP1.EXE からのものです。Microsoft はそのソースコードを配布しているため、VB6 を持っている人なら誰でもこの比較を再現できます。

元のソース、COMMON.BAS

Sub AddDirSep(strPathName As String)
    If Right(Trim(strPathName), Len(gstrSEP_URLDIR)) <> gstrSEP_URLDIR And _
       Right(Trim(strPathName), Len(gstrSEP_DIR)) <> gstrSEP_DIR Then
        strPathName = RTrim$(strPathName) & gstrSEP_DIR
    End If
End Sub

VBReFormer による出力:

Public Sub proc_42C506(ByRef arg_8 As String)
    If ((Right(Trim(arg_8), Len("/")) <> "/") And (Right(Trim(arg_8), Len("\")) <> "\")) <> 0 Then
        arg_8 = (RTrim$(arg_8) & "\")
    End If
End Sub

論理は一行ずつ同一です。 RightTrimLenRTrim$ には名前が付き、ByRef 渡しは推論されています。一方、プロシージャ名とパラメーター名は失われ、定数はそのとして現れます。それらを置き換えたのはコンパイラであって、VBReFormer ではありません。

マーカー

VBReFormer は決して推測しません。確定できない値は、でっち上げられるのではなくマークされます。

マーカー 意味 対処
proc_42C506 アドレスで指定されたプロシージャ 名前を変更する — 名前は伝播します
var_18arg_8 ローカル変数またはパラメーター 用途を読み取ってから名前を変更する
? 確定できなかった値 同じ箇所をアセンブリビューで確認する

? を含むファイルは VB6 IDE に拒否されます。マーカーはお客様が判断するためにあるのであって、そのまま再コンパイルするためのものではありません。もっともらしいが誤った値は、逆コンパイラが生み出しうる最悪の結果です。

7. グラフ

2 つのグラフがあり、語る物語は異なります。

  • 呼び出し — 何が何を呼ぶか:プログラムのアーキテクチャ。フィルターは呼び出し元呼び出し先両方で、孤立したノードを隠すオプションがあります。
  • フロー — 実行がどこを通るか:ブロック、エントリ、ループヘッダー、ループの戻り、そして到達不能とマークされたブロック。

ブロックを読む 5 つの方法

グラフのブロックを選択し、そこに何を見たいかを選びます。IRVB6アセンブリP-code。同じプログラム部分を 5 つの読み取りレベルで見ることができます。

表示の誠実さ。 スタジオは、リストの行に対応づけられたブロックの数と、アドレスが証明されていないブロックの数を示します。後者の命令は直前の区間に落ちます。これにより、分割のどの部分が確実かが分かります。

グラフにはライセンスが必要です。何が何を呼び、実行がどこを通るかは、プログラムのアーキテクチャだからです。逆アセンブルと構造はライセンスなしでも開いたままです。

8. プレビューとライセンス

ライセンスがなくても、ソースビューは拒否されません。一部が隠された状態で表示されます。何かを支払う前に、ご自身のバイナリで、構造、復元された名前、再構築の実際の品質を確認できます。

これは意図的な選択です。何も見えない訪問者は判断できません。そしてサブスクリプションが期限切れになっても、閉ざされた扉ではなく、何が取り戻せるかが見えます。

同時に 1 台

VBReFormer のライセンスは同時に 1 台で使え、ブラウザーも 1 台として数えられます。ライセンスが別の場所で使われている場合、スタジオはアカウントからここへ移すか、シートを追加するかを提案します。これは穏やかな拒否です。お客様は支払い済みで、何も不足していません。

9. ソースをダウンロードする

配信パネルは、.vbp とそのファイル(.bas.cls.frm)を含む .zip アーカイブを生成します。ファイルは IDE が期待するとおり ANSI で書き込まれます。パネルにはダウンロード前にファイル数とサイズが表示されます。

プロジェクトを開く前にノートを読む

スタジオは**「復元できなかったもの」を、各項目の理由とともに表示します。外部参照、コンパイルオプション、起動モードといった一部の情報はバイナリのどの構造にも存在しません**。消されたのではなく、最初からそこにないのです。したがって、でっち上げられず、報告されます。

IDE で参照が不足していれば、プロジェクト ▸ 参照設定 から追加してください。? マーカーがあれば手作業で処理します。

その後パネルは別のバイナリを解析することを提案します。セッションはゼロから始まり、前のファイルは消去されます。

10. Online か Desktop か

2 つのエディションは同じエンジンを共有し、同じコードを生成します。ただし用途は異なります。

Online Desktop
インストール 不要 MSI、Windows 10 以降
システム すべて Windows 10 および 11
インターフェース言語 11 3
ツリー、シンボル、検索、名前変更
7 つのビュー
呼び出しグラフとフローグラフ
プロジェクトのエクスポート ✔(zip) ✔(フォルダー)
注釈付き 16 進ビュー
リソース:一覧と内容
リソース:ファイルへの抽出
描画されたデザイナー、画像エクスポート (セクションはテキストのみ)
バイナリパッチ
相互参照
Object Browser、API Browser
ブックマーク、描画オプション
作業がセッションを超えて残る
課金 クレジット サブスクリプション

まとめ — Online は、バイナリを開き、何をしているかを理解し、ソースを持ち帰るためのものです。Desktop は、バイナリに長く取り組むためのものです。バイト、リソース、相互参照、パッチ、そしてタブを閉じても消えない作業。

11. よくある質問

バイナリは保持されますか? いいえ。解析後、セッションとともに消去されます。第 3 章を参照してください。

ファイルが 64 MB を超えています。 これはドロップ前に案内されるスタジオの制限です。より大きなバイナリの場合、Desktop エディションにはこのアップロード制限がありません。

バイナリのリソースはどこにありますか? 左側のリソースタブです。ライセンスは不要です。各エントリの種類とサイズ、開いたときの内容が表示されます。画像は描画され、テキストは表示され、それ以外は隠されずにバイトとして示されます。一方、ファイルへの抽出は 16 進ビューと同様、Desktop エディション固有です。

なぜコードがプロシージャの途中で止まるのですか? それがプレビューです。ライセンスなしの無料版では、構造、名前、完全な逆アセンブルは表示されますが、再構築された本体にはライセンスが必要です。

タブを閉じたらすべて失われました。 作業はセッションを超えて残りません。離れる前にアーカイブをダウンロードしてください。バイナリ自体はお使いのマシンに残っています。

エクスポートしたコードはそのまま再コンパイルできますか? 多くの場合可能です。149 プロジェクトのテストベンチでは 121 が手を加えずに再コンパイルできました。残りは参照の追加か、いくつかのマーカーの処理が必要です。

実行ファイルが圧縮(パッカー)されています。 事前に展開する必要があります。そうしないと VB6 の構造がファイル内に見えません。

合法ですか? お客様の法域と、バイナリに対する権利によります。これがドロップ時にチェックする宣言の意味です。想定されている用途は、ご自身のコード、または権利や許諾をお持ちのコードの復元です。