UNFOXP25(Ver 2.0&Ver 3.0)的使用与经验 1996-05-31 UNFOXP25目前流行的是惠软95'工具箱系列金秋版中的Ver 2.0版,由于当时FOXPRO内核还不很公开,因而Ver 2.0功能做得并不是很完善。例如,用户常常会遇到以下两类问题: ①由于集成环境中菜单、窗口、SQL部分为用户和系统公用,在编译成.EXE文件后该部分变为用户专用,因此,FOXPRO在编译时优化掉了判断公用的部分。这种情况会造成UNFOXP25 Ver 2.0版反编译生成的.PRG无法执行。 ②由于对程序加密或对程序的不正确解密而造成了对.EXE文件的破坏,或采用FOXBASE仿真解释环境编译后的文件,UNFOXP25 Ver 2.0版无法反编译。 然而,惠软新推出的UNFOXP25 3.0则已完全解决了上述的技术缺陷。由于采用了逐字节分析的技术完全突破了现有的所有对Foxpro文件的加密技术所造成的障碍。使得在原文件被加头、加尾、病毒感染甚至文件标志被完全破坏的情况下,只要文件程序体还在,即能从中解出完整的.PRG、.SPR、.MPR、.BMP、.DBF以及FRX等类文件。其内存分配机制允许反编译FOXPRO生成的超大规模.EXE文件(可长达数十兆字节)。由UNFOXP25 Ver 3.0生成的代码甚至有可能比源代码更为优化(因为它取得的是由FOXPRO优化程序处理过的.EXE程序中的代码/数据)。另外,UNFOXP25 Ver 3.0能准确的析出.EXE中嵌入的外部代码,包括在源程序级上嵌入的外部语言代码。 UNFOXP25 Ver 3.0可以处理的以下的文件: ①可反编译的目标程序 .EXE Foxpro可执行程序 .APP Foxpro的.PRG程序库 .FXP Foxpro的.PRG的伪编译程序 ②可反编译出的文件 .PRG Foxpro的源程序文件 .DBF Foxpro的数据库文件 .PLB Foxpro的API文件 .SPR、.MPR、.BMP以及.FRX__其它的由Foxpro嵌入.EXE的文件 下面,就基于Ver 3.0详细介绍一下UNFOXP25系列的使用。事实上,2.0和3.0版在操作上并没有太大的不同,它们都使用命令行方式。 (一)一般性操作 (1)对采用带-E参数加密的.APP文件、需要扩展库支持的EXE文件或独立运行的EXE文件和386增强模式的EXE文件的反编译。 格式:TQAPP FOXPRO <带-E加密文件名> [反编译后的文件名] (2)对未作-E参数加密的.APP文件、需要扩展库支持的EXE文件或独立运行的EXE文件和386增强模式的EXE文件的反编译。 格式:UNFOXP25 (二)带开关操作(Ver 3.0特有) (1)在文件程序体本身已被破坏,造成反编译结果不正常的情况下,可先将待反编译文件切分开来,然后对每一个切分开的文件进行反编译,以便跳过程序体被破坏的那一段。操作如下: 命令行输入:UNFOXP25 FOXPROG(待反编译文件) CUT 结果输出:BMP、DBF、PLB、FRX等数据都已解开,而程序部分(PRG、MPR、SPR)则只是被切开,生成文件分别为PR-、SP-、MP-。 事实上,这种切分文件的方法,能有效地处理大多数一般性操作无法反编译的.EXE文件。另外,用户也应当考虑系统是否有足够的内存供UNFOXP25使用。因此,如果反编译不正常,你可以重新启动计算机,卸掉一些内存驻留程序,以保证给程序尽可能多的常规内存。 (2)如果用户想近一步解开已被切分开的程序文件,则应进行以下操作: 命令行输入:UNFOXP25 文件名 [pr-|sp-|mp-] 结果输出:反编译出来的代码 (3)在文件头(在每个Foxpro文件的最后)遗失被破坏的情况下,可以强制命令程序解出其中一类文件(DBF、PRG或BMP)。其操作如下: 命令行输入:UNFOXP25 FOXPROG(待反编译文件) [Bmp|Dbf|Prg] 说明:UNFOXP25 Ver 3.0是根据Foxpro 2.5/2.6内部语法分析后进行反编译的,因此,有些程序中的语法与我们一般的使用格式不完全一样,但它们是完全等效的。