如何将Windows XP时期的老旧VB(疑似VB6)EXE反编译为源代码?
从2004年编写的疑似VB版本EXE文件还原源代码问题
问题背景
团队正在使用一款2004年编写的*.exe文件,开发于Windows XP/Windows 6时期,不确定基于哪个Visual Basic版本(疑似VB6)。目前只能在XP虚拟机中运行,源代码已丢失,尝试借助VB.Net框架相关工具反编译还原源代码但未成功。
已尝试方案
- 安装32位dotpeek工具,反编译失败
- 通过命令行使用
ildasm工具(曾拼写错误为ildsam),反编译失败
操作环境
- Windows 10系统的Dell Precision 7560笔记本
- Visual Studio 2022
核心疑问
- 如何判断该
*.exe文件基于的Visual Basic版本? - 针对此类情况,有哪些可行的反编译/源代码还原方案?
解决方案建议
一、判断VB版本的方法
- 检查PE文件类型:使用Visual Studio自带的
dumpbin工具,执行命令dumpbin /headers yourfile.exe。若输出中包含"CLR Header"相关内容,说明是VB.NET程序;VB6编译的原生PE文件无此信息。 - 查看依赖库:执行
dumpbin /dependents yourfile.exe,若依赖msvbvm60.dll,则大概率是VB6程序;VB.NET程序依赖的是.NET Framework相关dll(如mscorlib.dll)。 - 分析资源结构:用Resource Hacker打开exe,VB6程序会包含特定的窗体资源(如
VB_FORM类型),而VB.NET的资源格式与原生VB6差异明显。
二、反编译/还原方案
若为VB6程序
.NET相关工具(dotpeek、ildasm)无法处理VB6原生编译的exe,需使用VB6专用反编译工具:
- VB Decompiler:能还原窗体布局、部分代码逻辑,支持解析VB6编译的原生指令
- PeekPoke:针对VB6的反编译工具,可提取部分可执行代码
注意:VB6原生编译会丢失部分源代码信息,任何工具都无法100%还原原始代码,只能还原可执行的逻辑结构。
若为早期VB.NET程序
针对2004年的VB.NET版本(如2002/2003),尝试以下方案:
- 使用ILSpy工具:对旧.NET版本兼容性优于dotpeek,支持32位程序反编译
- 直接用Visual Studio 2022打开exe文件:VS自带反编译功能,可自动解析.NET字节码并生成可读代码
- 确认程序位数:2004年的VB.NET程序基本为32位,确保工具以32位模式运行(如在任务管理器中查看工具进程的位数)
内容的提问来源于stack exchange,提问作者VINOD Bhoite
相关产品推荐
相关产品推荐

