首页
社区
课程
招聘
[求助]不知道是用什么手段加密的VFP程序!
发表于: 2005-12-15 23:45 5980

[求助]不知道是用什么手段加密的VFP程序!

2005-12-15 23:45
5980
手头上有一个估计是VFP3.0编译的程序,program.exe ,在同一目录下有VFP300.ESL的运行库文件(我猜可能是加密库)!

用FI检测“program.exe”是标准的VFP文件,我用defoxstar和用unfox 等软件对“program.exe”反编译,结果有189个文件,但奇怪的是除了一些BMP文件外,全部都是程序文件(prg),于是打开主logon.prg登陆文件一看,全部都是程序代码,做界面是都用@....Say 的语句,可以看出应该是foxbase出身的老鸟写的代码。

但奇怪的是执行defoxstar生成的build.prg文件加入成一个项目的时候,提示文件掉失了,其中“CALPass”文件,应该说是“CALPass.prg”文件!也就是说程序不能正常运行!经过检查代码以后发现CALPass是这么调用的“pw=CALPass(TxtPw)”是用来加密密码的。但是这个程序在没有反编译的情况下可以很好的运行起来。搞不懂是经过什么处理的?请大家指点!

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 413
活跃值: (837)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
2
你需要了解一些的VF的编程的知识了,不能这么
分析程序,有些代码需要你读懂才行的。
我对你的DeFoxStar工具到是挺有兴趣。
2005-12-16 07:46
0
雪    币: 21
活跃值: (45)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
我对VFP不太了解,但也会用一点!

pw=CALPass(txtpw)
大概的意思是:调用CALPass函数后返回一个值给pw

但偏偏就掉失了这个函数!
2005-12-16 16:18
0
雪    币: 21
活跃值: (45)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
DeFoxStar 到处都有得下载呀。。。

我记得在这儿也有的。。搜索VFP,贴子上面有的。
2005-12-16 20:01
0
雪    币: 413
活跃值: (837)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
5
一般都是普及版的,没有注册的反编的文件大小有限制.
新版本的注册的,功能强大的很.
2005-12-16 21:07
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
是自定义func or proc
2005-12-16 21:42
0
雪    币: 21
活跃值: (45)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
是自定义函数或程序?

但反编译没有成功反出来,奇怪!用了几个反编译的软件都是这样!

这儿是那个原程序,大家可以down 回去试试反编译:
617K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3g2D9k6h3y4@1M7X3W2U0M7r3!0%4k6i4u0Q4x3X3g2U0L8W2)9J5c8W2g2H3L8r3!0S2k6r3k6A6L8r3g2K6i4K6u0r3f1s2u0G2i4K6u0r3M7s2u0G2k6%4u0S2L8g2)9J5k6i4u0S2M7R3`.`.
2005-12-16 22:21
0
雪    币: 21
活跃值: (45)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
有人试一下反编译这个东东吗?
2005-12-18 10:05
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
VFP 3.0程序,没加密。

*------
PROCEDURE calpass
PARAMETER PWORD
PRIVATE XSETDECIMALS , PASS , TMP , TT , TMP1 , TT1 , I , J , ASCII
IF EMPTY(PWORD)
    PWORD = 'Kwisun Kong'
ENDIF
XSETDECIMALS = SET('DECIMALS',1)
SET DECIMALS TO 10
TT = 0
TT1 = 0
FOR I = 1 TO LEN(PWORD)
     TMP = ASC(SUBSTR(PWORD,I,1))
     TT = TT + TMP
     ASCII = ALLTRIM(STR(TMP,4))
     FOR J = 1 TO LEN(ASCII)
         TMP = VAL(SUBSTR(ASCII,J,1))
         TT1 = TT1 + TMP
     ENDFOR
ENDFOR
PASS = ''
FOR I = 1 TO 10
     TMP = STR(SIN(TT),15,10)
     TT = TT + VAL(TMP)
     TMP1 = STR(SQRT(TT1),20,10)
     TT1 = TT1 + VAL(TMP1)
     PASS = PASS + RIGHT(TMP,VAL(RIGHT(TMP,1))) + RIGHT(TMP1,VAL(RIGHT(TMP1,1)))
ENDFOR
SET DECIMALS TO XSETDECIMALS
RETURN PASS
ENDPROC
*------
2005-12-19 15:01
0
雪    币: 21
活跃值: (45)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
奇怪,为什么我用UNFox、DefoxStar 、FoxTools 反出来的就少了这一段,是什么回事?

请问您是用什么工具返编译出来的?
2005-12-19 20:54
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
熟悉VFP就能找到了
2005-12-20 00:24
0
雪    币: 21
活跃值: (45)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
感谢Silk 的提醒!!已经成功编译了!!

不过用unfox 编译后有些代码的顺序调乱了又或者出了多余的“,”,一运行到那里就提示出错。。
2005-12-20 20:22
0
游客
登录 | 注册 方可回帖
返回