UNFOXP25(Ver 2.0&Ver 3.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 <FOXPRO的文件>
(二)带开关操作(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内部语法分析后进行反编译的,因此,有些程序中的语法与我们一般的使用格式不完全一样,但它们是完全等效的。