从指定地址反编译

在工具 (Tools)菜单中,有一个非常实用的功能——从 VA 反编译 (Decompile from VA)(从提供的虚拟地址反编译任意代码)。该功能的主要特点是,它不要求被反编译的文件具有正确的结构,也不需要通过标准方式进行处理。当然,在这种情况下,代码的反编译将受到一定限制。例如,如果未预先处理导入函数或OLE对象,则相关代码片段可能无法提供足够的信息。

VB Decompiler 从地址进行反编译

若要反编译文件中的特定代码段,只需指定该代码的虚拟地址(如果涉及Native Code或.NET 程序集),或提供ProcInfo结构引用(如果涉及经典Visual BasicP-Code)。与P-Code相关的独特之处在于,ProcInfo结构包含代码所使用的数据数组。没有该数组,就无法确定代码使用哪些函数、引用哪些字符串等。在处理.NET 程序集时,输入地址后,反编译器将提供选择:是将代码作为MS IL 中间代码进行反编译,还是将其反汇编。此选项是因为.NET程序集可以同时包含MS IL 中间代码(托管代码)和机器码(即所谓的非托管代码)。

如果文件已在反编译器中打开,只需调用从 VA 反编译函数并指定处理地址即可。如果尚未打开文件,将自动提示,并以简化模式打开该文件。

从 VA 反编译函数在所需代码无法自动反编译或文件部分损坏(导致无法按常规方式分析)时特别有用。当然,应理解在这种情况下反编译的结果不如标准反编译理想。