【问题标题】:Making use of decompiled VB6 code使用反编译的 VB6 代码
【发布时间】:2023-12-31 22:09:01
【问题描述】:

我已经反编译了一个 10 多年前制作的 exe,我想知道如何在 Visual Studio 中查看该程序。它被保存为 .bas 文件,我想将它转换成它所用的语言(我认为是 Visual Basic 6)。这是部分代码:

Object: frmNewCustomer
Private Sub Form_Unload(Cancel As Integer) '6CF5C0
  'Data Table: 42BA04
  loc_6CF584: On Error Resume Next
  loc_6CF589: LitNothing
  loc_6CF58B: CastAd
  loc_6CF58E: FStAdFuncNoPop
  loc_6CF591: FLdPr Me
  loc_6CF594: MemStAd
  loc_6CF598: FFree1Ad var_88
  loc_6CF59D: LitNothing
  loc_6CF59F: CastAd
  loc_6CF5A2: FStAdFuncNoPop
  loc_6CF5A5: FLdPr Me
  loc_6CF5A8: MemStAd
  loc_6CF5AC: FFree1Ad var_88
  loc_6CF5B1: LitNothing
  loc_6CF5B3: CastAd
  loc_6CF5B6: ImpAdStAdFunc MemVar_911008
  loc_6CF5BC: ExitProcHresult
End Sub

Private Sub txtCustomers_GotFocus(Index As Integer) '6CF72C
  'Data Table: 42BA04
  loc_6CF6F8: On Error Resume Next
  loc_6CF6FD: FLdRfVar var_8C
  loc_6CF700: ILdI2 Index
  loc_6CF703: FLdPrThis
  loc_6CF704: VCallAd txtCustomers
  loc_6CF707: FStAdFunc var_88
  loc_6CF70A: FLdPr var_88
  loc_6CF712: FLdZeroAd var_8C
  loc_6CF715: FStAdFunc var_90
  loc_6CF718: FLdRfVar var_90
  loc_6CF71B: ImpAdCallFPR4 Proc_10_19_6D164C()
  loc_6CF720: FFreeAd var_88 = "" = ""
  loc_6CF729: ExitProcHresult
End Sub

【问题讨论】:

  • 你试过在 Microsoft Visual Basic 6 IDE 中打开它吗?
  • 使用了什么反编译器?它是否有任何关于如何使用它产生的输出文件的文档?您发布的代码不是直接可执行的 VB6 代码。
  • 供参考(并非完全重复):有一个关于finding a VB6 decompiler的问题

标签: vb6 decompiler


【解决方案1】:

是的,它看起来像 VB6 或更早版本。不过,有很多子程序调用您没有向我们展示。它们必须在文件中指定。

要查看您的 .bas 文件:

  1. 在 Visual Studio 6.0 IDE 中打开 Visual Basic。
  2. 开始一个新的标准 EXE 项目。
  3. 删除默认添加的 Form1 表单。
  4. 将您的 .bas 文件添加到项目中(选择项目/添加模块,选择现有选项卡,浏览到您的文件)。

您应该可以从那里查看它。如果你想运行它:

  1. 确保您有一个名为 Main() 的 Sub。
  2. 如果没有,则创建一个,然后调用文件中的*子例程。
  3. 确保在项目属性中选择 Sub Main 作为启动对象(选择 Project/Properties,General 选项卡,然后在 Startup object 下拉列表中找到 Sub Main)。

【讨论】:

  • Visual Studio 6 IDE 是否在 Visual Studio 201 中可用,还是我必须下载新的 IDE?
  • @Joepowell567 你必须有一个微软不再销售的 VB 6.0 IDE。您可能想尝试 VB6 学习版,您可以在 eBay 上找到便宜的。我从未使用过它,但据我所知,它拥有查看和编辑代码所需的一切。我相信它缺少的是一些控件和本机代码编译器。 Here's 一个 50 美元。专业版和企业版运行更多,可能是 250 美元。
  • 是的,我在网上找到了一个副本并下载了它。当我将文件添加到项目中时,没有主子。当我尝试添加一个时,它会给出一条错误消息“内存不足”。有什么我能做的吗?
  • Sub Main 是放置它的方式。内存不足通常是由于代码中某处的递归过程调用,如果您说它是在您尝试运行代码时发生的。如果是这样,请检查调用堆栈。如果您说(是吗?)您一输入“Sub Main”就会出现内存不足错误,那么这不是原因。
  • 是的,每当我尝试在代码顶部输入任何内容时都会这样做
最近更新 更多