VB.netのリバースエンジニアリングの完全ガイド

VB.netのリバースエンジニアリングは、既存システムの仕様や構造を調べ、保守や移行に必要な情報を明らかにする作業です。進め方から費用相場、発注、会社選び、法的リスクまで、検討の流れに沿って整理しました。各テーマの詳しい内容は、下の関連記事で確認できます。

VB.netのリバースエンジニアリングとは

VB.netのリバースエンジニアリングで得られる情報と、業務部門へのヒアリングで補う情報を示す図。
コードの解析結果と、ヒアリングで補う情報を見分けられます。

リバースエンジニアリングとは、完成した製品(ここではVB.netで開発されたソフトウェア)を解析し、その構造・仕様・業務ロジックを復元する作業です。

ソフトウェア開発では通常、要件定義、設計、実装の順でシステムを作ります。

リバースエンジニアリングは、その逆向きに、実装済みのシステム(コード・バイナリ)から設計や仕様へとさかのぼって情報を取り出すものです。

VB.netの.NET IL特性:逆コンパイルが容易な理由

VB.netはC#と同様に.NETフレームワーク上で動作し、コンパイル後のバイナリは.NET中間言語(IL:Intermediate Language)として格納されます。

ILにはCOBOLやC言語のネイティブバイナリと違い、型情報、クラス構造、メソッド名などの高レベルな情報が残っています。

  • メリット:ILSpy・dnSpy・dotPeekなどの逆コンパイラツールで、元のVB.netソースコードに近い形まで復元できます。
  • リスク:仕様書を復元しやすい特性は、第三者にもコードを解読されやすいという面につながります。
  • 得られる情報:逆コンパイルで得られるのは、あくまで「どう動くか(What/How)」の情報です。
  • 得られない情報:「なぜその業務ルールになっているのか(Why)」はコードに記録されておらず、業務部門へのヒアリングでしか補えません。

VB.netリバースエンジニアリングの本質的な難しさは、技術的な解析と業務的な理解を組み合わせた、総合的なアプローチが必要な点にあります。

VB6とVB.netの根本的な違いとリバース難易度

VB.netのリバースエンジニアリングで最も重要な固有の知識は、VB6(クラシックVB)との本質的な違いです。VB6はCOMアーキテクチャに基づくネイティブバイナリで動作するのに対し、VB.netは完全に異なる.NETランタイム上で動作します。この二つは「VB」という名称を共有していますが、技術的には全く別の言語・実行環境です。

国内の既存システムには、VB6時代から段階的に移行・改修されてきたものが多くあります。そのため、VB6で開発されたCOMコンポーネント(ActiveX DLL等)とVB.netモジュールが、同一システム内に混在しているケースが多数あります。

このような混在システムは、VB6とVB.netの両方の知識と、それぞれ異なる解析ツールが必要になります。そのぶん難易度が特に高く、費用も標準より30〜50%以上増加します。

VB.netで実施する目的とメリット

VB.netのリバースエンジニアリングが求められる背景と、実施して得られるメリットを押さえておくと、社内で検討や説明をする際に役立ちます。

引き継ぎ問題の解決:最大の発注動機

「VBで書かれたシステムを保守できるエンジニアが社内にいない」という引き継ぎ問題は、VB.netのリバースエンジニアリングを発注する最大の動機です。

VB.netが盛んに使われた2000年代初頭から20年以上が経ち、当時のシステムを開発した技術者の多くは退職しています。

  • 若手エンジニアの状況:若い世代にとってVB.netは学習機会の少ない言語で、社内に保守できる人材がいない状況が多くの企業で起きています。
  • 文書化の効果:リバースエンジニアリングで業務仕様書を復元すれば、言語に依存しない形で業務ロジックを文書にまとめられます。
  • 文書の活用先:復元した文書は、新しいエンジニアへの引き継ぎや、新システム開発の土台として活用できます。

C#移行・モダナイゼーションへのメリット

VB.netからC#への移行を目的としたリバースエンジニアリングも、主要な用途の一つです。C#とVB.netは同じ.NETエコシステム内の言語で、技術的な移行障壁は比較的低いです。ただし、VB.net固有の構文・ライブラリ・設計パターンをC#に適切に置き換えるには、業務ロジックの深い理解が必要です。

リバースエンジニアリングで業務仕様書を先に復元しておくと、移行後の動作保証テストの品質が大幅に向上します。

また、スクラッチ開発との費用比較では、現行システムに蓄積された業務ロジックの80%以上が今後も必要な場合は、リバース活用の方が費用対効果に優れます。一方で、現行機能の大半が陳腐化している場合は、スクラッチ開発が有利です。

VB.netのリバースエンジニアリングの進め方

フローチャート、業務仕様書、詳細設計書の3段階について、それぞれの費用目安を示すパネル図。
求める成果物の細かさに応じて、費用の幅も変わります。

VB.netのリバースエンジニアリングは、対象の選定と目的の明確化から始め、ツールの準備、静的解析、動的解析、抽象化(Design Recovery)、成果物化の6工程で進めるのが標準的です。

各工程の概要を押さえておくと、外注先と認識を合わせたり、進捗を管理したりする際に役立ちます。

静的解析・動的解析の概要

静的解析は、VB.netの実行ファイル(.exe・.dll)をILSpyなどで逆コンパイルし、コードを実行せずに構造やロジックを解析する手法です。

  • 静的解析の用途:クラス構成、メソッド一覧、依存関係の把握に適しています。
  • Windowsフォームの構造:GUIコードと業務ロジックが同じクラスに混在していることが多く、静的解析で切り分ける作業が重要です。
  • 動的解析:dnSpyのデバッグ機能などを使い、実際にアプリケーションを実行しながら処理の流れを追跡する手法です。

実行しながら確かめる対象は、静的解析では把握できない入出力データの流れや、特定の業務シナリオでの動作です。そのため、業務部門の担当者の協力が必要になります。

抽象化(Design Recovery)と成果物の粒度

解析で得た情報を、実装レベルから設計レベル・仕様レベルへと段階的に抽象化する工程が、Design Recoveryです。たとえば、メソッドレベルの処理フローを業務フロー図へ、クラス間の関係を業務エンティティ関連図へ、画面と機能の関係を画面遷移図へ変換します。

成果物の粒度ごとに、費用の目安を整理しておきます。

  • フローチャート:30〜60万円
  • 業務仕様書:60〜150万円
  • 詳細設計書:150〜400万円

目的に応じた粒度を事前に決めておくことが、発注コスト管理の鍵です。

具体的な進め方は、関連記事「VB.netのリバースエンジニアリングの進め方・手順・工程を解説」で確認できます。

ポイント

工程の順序だけでなく、どの粒度の成果物まで求めるかを発注前に決めておくと、外注先との認識合わせや進捗管理がしやすくなります。

VB.netリバースエンジニアリング会社の選び方

VB.netのリバースエンジニアリングを外注する場合、開発会社やベンダーの選定が成否を左右します。

開発会社のなかには、VB.netのリバースエンジニアリングに対応していない所もあります。

VB.net固有の経験と体制を持つパートナーかどうかを見極めることが大切です。

実績と技術力の確認ポイント

会社選定で最初に確認したいのは、VB.net固有の解析実績です。

VB6との混在システムへの対応経験があるかどうかも大切です。

  • VB6の解析:COMコンポーネントの解析には、.NETツールとは別のネイティブバイナリ解析ツールと専門知識が必要です。
  • ツールへの習熟度:ILSpy・dnSpy・dotPeekなどの.NETツールへの習熟度を確認します。
  • 難読化への対応:DotfuscatorやConfuserEx等による難読化が施されたバイナリへの対応経験も、技術力を測る指標になります。

「VB.netは対応可能だがVB6の混在は対応外」というベンダーでは、不十分な可能性があります。

プロジェクト管理体制とサポートの評価

プロジェクト管理の体制では、クリーンルーム手法を実施できる体制が整っているかを確認してください。

  • チームの分離:解析チームと開発チームを分けているかどうか。
  • 法務・仲介の配置:法務・仲介担当者を配置しているかどうか。
  • 進め方の確認:業務部門へのヒアリングをどう進めるか、週次報告をどの形式で行うかも、重要な評価の観点です。
  • サンプルの確認:成果物のサンプルを提示してもらえば、過去の類似案件で作成した仕様書の一部などから、品質水準を事前に確かめられます。

コンサルティングから実装・テストまで一気通貫で対応できるか、C#移行後の動作保証テストまで支援できるかも、長期的なパートナーとして適しているかの判断基準になります。

会社選びのポイントは、関連記事「VB.netのリバースエンジニアリングでおすすめの開発会社6選と選び方」で確認できます。

ポイント

まずVB.net固有の解析実績とVB6混在への対応経験を確かめ、そのうえでクリーンルーム体制や成果物サンプルまで見ると、会社を比べやすくなります。

VB.netリバースエンジニアリングの費用相場

VB.netのリバースエンジニアリング費用は、LOC(コード行数)に基づく従量課金制が一般的です。市場相場の基準は、基本料金30万円(4,000行まで)で、超過分は1行あたり50円です。ただし、これはVB.netのみのシステムを対象とした標準値で、VB.net固有のコスト要因によって大きく変わります。

規模別の費用目安

規模別の費用目安は、小規模(〜5,000行・単一機能の仕様書復元)で30〜60万円、中規模(5,000〜30,000行・業務システム全体の仕様書)で80〜200万円です。大規模(30,000行超・詳細設計書含む)では、200万円以上が目安となります。

成果物の粒度による差も大きく、フローチャートレベルで30〜60万円、業務仕様書レベルで60〜150万円、詳細設計書レベルで150〜400万円です。いずれも中規模システムを基準とした額で、粒度の違いによって費用は大きく変わります。

モダナイゼーション全体の費用規模は、リホスト(数千万円〜1億円台)からリビルド(5億円以上)まで、手法によって大きく異なります。

費用を左右するVB.net固有の主な要因

費用を大きく左右するVB.net固有の要因は、主に3つです。1つ目は、VB6コンポーネントとの混在です。VB6バイナリの別途解析が必要になるため、標準費用の30〜50%以上の増加が見込まれます。

2つ目は難読化(DotfuscatorやConfuserEx等)の有無で、難読化解除の工程が加わり、標準費用の50〜200%増になることがあります。3つ目は、GUIコードと業務ロジックの混在です。Formクラスに業務ロジックが多く直接書かれたモノリシックな構造ほど、分離・整理の工数が増えます。

短納期の特急対応は通常の20〜30%増、休日・深夜対応は40〜60%増の割増が発生します。費用の見積もり方は、関連記事「VB.netのリバースエンジニアリングの費用相場・見積もりの考え方」で確認できます。

ポイント

費用は、規模と成果物の粒度、VB6混在や難読化の有無で大きく変わります。標準値から見積もるときは、どの要因が含まれるかを先に確認しておくと判断しやすくなります。

発注・外注方法

VB.netのリバースエンジニアリングを外注するときは、発注前の準備、RFP作成、契約、プロジェクト推進の各段階で、適切な対応が求められます。

発注側の準備が不十分だと、見積もりの食い違い、成果物の品質不足、業務ルールの抜けといったトラブルが起きやすくなります。

発注前に準備すべきドキュメントと情報

発注前に対象システムの規模や構成を把握しておくと、RFPに書くべき情報がそろいます。発注側で決めることも、あわせて整理しておきます。

  • ソース資産:VB.netプロジェクト一覧、ファイル数、推定LOC(棚卸)
  • VB6コンポーネント:混在の有無
  • 実行環境:.NET Frameworkのバージョン
  • 難読化と既存資料:難読化の有無、既存ドキュメント(古い設計書・画面仕様書等)の有無
  • 発注側で決めること:リバースの目的と必要な成果物の粒度、業務部門のヒアリング対応者の確保

発注前に集めた情報をRFPに明記すると、ベンダーからの見積もり精度が上がり、複数社の提案内容を適切に比較できるようになります。

契約時の必須チェック項目

契約書には、途中で認識がずれないように取り決めを明記しておく必要があります。

  • 秘密保持:NDA(秘密保持契約)の締結
  • クリーンルーム手法:適用条項(解析チームと開発チームの分離・法務担当者の配置)
  • 成果物の品質基準:「新システム開発の要件定義に直接使用できるレベル」等の定義を明記
  • 費用:VB6コンポーネント発見時の追加費用の算定方法を事前に合意
  • 進め方:週次ヒアリングサイクルの設定、業務ルール欠損時の対処方法の取り決め

これらを契約時に明確にしておくと、プロジェクト途中のトラブルを大幅に減らせます。外注の方法と発注前の準備の詳細は、関連記事「VB.netのリバースエンジニアリングを外注する方法・発注前の準備」で確認できます。

ポイント

発注前に対象システムの情報と成果物の粒度を整理し、契約時にはクリーンルームやNDA、成果物の品質基準を条項にしておくことが、トラブルを減らす目安になります。

解析チーム、法務・仲介担当者、開発チームの役割と、業務仕様書の受け渡しを示す図。
業務仕様書は法務・仲介担当者の確認を経て開発側へ渡ります。

安全にプロジェクトを進めるには、VB.netのリバースエンジニアリングに伴う法的リスクを正しく理解しておくことが前提になります。

ここでは、日本の著作権法・不正競争防止法・EULAの観点から、主要なリスクと対策を取り上げます。

2018年の著作権法改正(第30条の4)により、情報解析、調査研究、セキュリティ確保などを目的とした「非享受目的」のリバースエンジニアリングは、原則として合法になりました。

仕様書復元、セキュリティ診断、モダナイゼーション準備を目的とするVB.netのリバースエンジニアリングは、この「非享受目的」に当たるため、基本的に著作権侵害とはなりません。

「非享受目的」であったことを後から立証するには、次の対応が必要です。

  • 作業環境:解析専用の隔離環境を使う
  • 解析過程:レポートに記録しておく
  • 意図:「機能を享受するのではなく、業務仕様書の復元が目的である」という意図を文書にしておく

EULAの「リバースエンジニアリング禁止」条項については、互換性の確保に不可欠な場合は無効となる可能性があります。ただし、必ず法務部門に確認してください。

クリーンルーム手法の実務と著作権侵害回避

クリーンルーム手法は、1980年代にフェニックス・テクノロジーズがIBM BIOS互換製品を開発した際に確立された手法です。

この手法では、役割の異なる2つのチームを完全に分けて、著作権侵害(依拠性)を回避します。

  • 解析チーム(Dirty Room):既存システムの解析を担う
  • 開発チーム(Clean Room):新システムの開発を進める

VB.netのリバースエンジニアリングでも、この手法は有効です。解析チームが復元した業務仕様書は、法務・仲介担当者がチェック(著作権保護対象の「表現」が混入していないかを確認)してから、開発チームに引き渡します。この引き渡しの流れを確立しておくことが大切です。

「セガ対アッコレード事件」の教訓からも、解析チームと開発チームの間に法務担当者を配置することは、著作権侵害リスクを実質的にゼロにする最も確実な手法として知られています。

外注先にクリーンルーム手法の実施体制があるかどうかは、ベンダー選定の必須確認事項として組み込んでください。

ポイント

非享受目的の要件を満たすことと、クリーンルームで解析と開発の担当を分けることが、法的リスクを抑える目安になります。自社システムでも、EULAや開発委託の経緯は法務部門に確認してください。

VB.net特化の解析ツール紹介

VB.netのリバースエンジニアリングに使うツールは、VB.net(.NET IL)向けと、VB6(ネイティブバイナリ)向けで異なります。主要ツールの特徴を知っておくと、外注先の技術力を評価するときの参考にもなります。

.NET ILの逆コンパイルツール(ILSpy・dnSpy・dotPeek)

VB.net(.NET IL)の逆コンパイルには、主に3つのツールがあります。

  • ILSpy(オープンソース・無料):シンプルで使いやすく、VB.netとC#のどちらの形式でも出力できます。
  • dnSpy(オープンソース・無料):逆コンパイルに加えてデバッグ機能が充実しています。
  • dotPeek(JetBrains製・無料):ReSharperと連携した高度な解析機能を持ち、Visual Studioとの統合が容易です。

ILSpyは、逆コンパイルやソースコードの参照に広く使われ、コード構造の俯瞰に適しています。dnSpyは、ソースがなくてもブレークポイントを設定してステップ実行できるため、動的解析との組み合わせで特に威力を発揮します。VB6との混在システムを解析する場合は、これらの.NETツールに加えて、OllyDbg・x64dbg等のネイティブバイナリデバッガが必要になります。

セキュリティ解析ツール(Ghidra・IDA Pro)の位置付け

Ghidra(NSA開発・無料オープンソース)とIDA Pro(業界標準・有料)は、主にネイティブバイナリのリバースエンジニアリングに使う汎用の解析ツールです。VB.netアプリだけなら、前述の.NET専用ツールの方が適しています。一方、VB6コンポーネントや難読化の強いバイナリの解析、セキュリティ脆弱性診断が目的の場合は、GhidraやIDA Proが活用されます。

業界標準の判断基準では、APIやスクリプティングの使いやすさはBinary Ninjaが、チーム協調解析はGhidraが優れています。コストパフォーマンスでは、無料のGhidraが最優秀と評価されています。

セキュリティ専門チームを起用するか、業務システムのSIerを起用するかは、リバースの目的(業務仕様書の復元か、脆弱性診断か)によって決まります。

よくある質問(FAQ)

VB.netのリバースエンジニアリングについて、よく寄せられる質問と回答をまとめました。

A:自社が著作権を持つVB.netシステムであれば、リバースエンジニアリングは原則として問題ありません。

ただし、第三者が開発したシステムの場合は、開発委託時の著作権帰属を確認する必要があります。EULAにリバースエンジニアリング禁止の条項がある場合も、法務部門との確認が必要です。

2018年の著作権法改正(第30条の4)により、仕様書復元やセキュリティ調査などの「非享受目的」のリバースエンジニアリングは、原則として合法化されています。そのうえで、具体的な案件については、必ず法務部門か弁護士に相談してください。

Q:VB.netリバースエンジニアリングの期間はどのくらいかかりますか?

A:対象システムの規模・複雑さ・成果物の粒度によって、期間は大きく異なります。期間の目安は、小規模システム(〜5,000行・フローチャートレベル)で1〜2ヶ月です。中規模システム(5,000〜30,000行・業務仕様書レベル)では2〜4ヶ月、大規模システム(30,000行超・詳細設計書レベル)では4〜8ヶ月です。

VB6コンポーネントとの混在や難読化がある場合は、期間がさらに延びます。業務部門のヒアリングが円滑に進むかどうかも、期間に大きく影響します。

Q:ソースコードがない状態でもリバースエンジニアリングできますか?

A:はい。VB.netは.NET ILで動作するため、実行ファイル(.exe・.dll)があれば、ソースコードがない状態でもILSpyやdnSpyで逆コンパイルできます。VB6コンポーネントが含まれる場合も、実行ファイル(.dll・.exe)から解析できます。

ただし、難読化が施されていると、逆コンパイルで得られるコードの可読性が大幅に下がります。また、逆コンパイルで得られるのは技術的な処理の流れで、業務ロジックの意図(Why)は業務部門へのヒアリングで補う必要があります。

Q:VB.netからC#への移行を目的としたリバースの場合、注意点はありますか?

A:VB.netとC#は同じ.NETエコシステム内の言語のため、技術的な移行障壁は比較的低いです。ただし、VB.net固有の構文(On Error Resume Next・With文・Nothing比較等)は、C#への変換で手動対応が必要になります。さらに、Microsoft.VisualBasic名前空間のライブラリの使用箇所も、手作業での対応が必要です。

特に重要なのは、リバースエンジニアリングで業務仕様書を先に復元しておき、言語変換後の動作保証テストに使うテストケース仕様書を並行して作ることです。

業務ロジックが正確にC#へ移植されたかを検証するテストなしに移行を完了すると、本番環境で業務ロジックの誤解によるバグが多発するリスクがあります。

まとめ

VB.netのリバースエンジニアリングは、「VBで書かれたシステムを保守できるエンジニアが社内にいない」という引き継ぎ問題の解決から、C#への移行準備やセキュリティ診断まで、幅広い用途で使われています。

VB.netは.NET ILで動作するため逆コンパイルが比較的容易ですが、GUIと業務ロジックの混在、VB6コンポーネントとの混在、難読化への対処など、固有の難しさもあります。

業務ロジックの意図(Why)はコードからは読み取れないため、技術的な解析と業務部門へのヒアリングを組み合わせることが成功の鍵です。

費用は規模、成果物の粒度、VB6混在の有無によって大きく変わります。標準的な相場(基本30万円〜LOC従量)からVB6混在や難読化がある場合は、1.5〜3倍になることを念頭に置いてください。

発注時は、RFPにVB.net固有の情報を明記し、クリーンルーム手法・NDA・成果物品質基準を契約条項として確定させることが重要です。法的リスクの管理では、著作権法第30条の4(非享受目的)の適用要件を満たしたうえで、クリーンルーム手法によって著作権侵害リスクを排除してください。

各テーマの詳細は、以下の記事で確認できます。

会社紹介

株式会社riplaでは、お客様の事業・ユーザー・業務に最適化したオーダーメイド型システムを、構想策定・要件定義から開発・改善まで一気通貫で支援。事業会社でIT・DXを経験したプロフェッショナルによる高い要件定義力・システム設計力を活かし、事業成果の最大化に伴走します。

また、当社独自の開発テンプレート「Boxシリーズ」による標準機能の高速開発と、AI駆動開発の独自フレームワーク「GoDD」による独自機能のAI実装を組み合わせることで、低コスト・短期間で開発を実現いたします。

もし、システム開発やプロダクト開発に関するご要望がございましたら、お気軽にお問い合わせください。

・サービス概要資料のURLはこちら >>>
・お問合せページのURLはこちら >>>
・お役立ち資料のURLはこちら >>>

執筆者プロフィール
張田谷凌央
張田谷凌央

株式会社ripla 代表取締役CEOとして、システムパッケージ活用、システム開発、データ分析、生成AI活用、SaaS開発、アプリ開発、EC構築など、幅広い領域で企業のDX推進と事業成長を支援している。事業会社でIT・DXを経験したプロフェッショナルが集う株式会社riplaにおいて、お客様の事業・ユーザー・業務に最適化したオーダーメイド型システムを構想策定・要件定義から開発・改善まで一気通貫で支援し、単なるシステム納品にとどまらず、クライアントと同じ目線で事業成果の最大化に向けた伴走支援を行う。早稲田大学卒業後、ラクスル株式会社、LINEヤフー株式会社にて事業開発やDX推進などに従事した後、株式会社riplaを創業。