首页
社区
课程
招聘
[求助]:如何直接修改vfp程序?
发表于: 2005-3-22 13:10 8682

[求助]:如何直接修改vfp程序?

2005-3-22 13:10
8682
日前碰到一个工程预算软件,感觉不错,是VFP程序,ROCKY狗,未加壳,反编译后发现是调用ROCKY DLL实现加密的
......
DECLARE INTEGER Rockey IN RYDLL32.dll INTEGER , INTEGER @ , LONG @ , LONG @ , INTEGER @ ,  ;
      INTEGER @ , INTEGER @ , INTEGER @ , STRING @

......

分析代码,很容易找到判断狗狗的代码及跳转

CL_ERRTXT = '您的加密狗有问题!!! ......)'

NDOS = WROWS('imis')
IF NDOS < 30
GD_SIZE = 9
ENDIF
USE (CDK)
STORE 0 TO LP1 , LP2 , HANDLE
STORE '' TO BUFFER
RETCODE = ROCKEY(RY_FIND,@HANDLE,@LP1,@LP2,@P1,@P2,@P3,@P4,@BUFFER)
TEST_JM = IIF(RETCODE <> 0,.F.,.T.)
CP_JMG = ''
IF TEST_JM
RETCODE = ROCKEY(RY_OPEN,@HANDLE,@LP1,@LP2,@P1,@P2,@P3,@P4,@BUFFER)
TEST_JM = IIF(RETCODE <> 0,.F.,.T.)
IF TEST_JM
P1 = 0
P2 = 20
BUFFER = '                   '
RETCODE = ROCKEY(RY_READ,@HANDLE,@LP1,@LP2,@P1,@P2,@P3,@P4,@BUFFER)
TEST_JM = IIF(RETCODE <> 0,.F.,.T.)
IF TEST_JM
CP_JMG = BUFFER
ENDIF
ENDIF
ENDIF
IF TEST_JM             ★★★★是否有狗★★★★
DIMENSION A_TMP( 4 ) , B_TMP( 4 )
FOR II_M = 1 TO 4
RETCODE = ROCKEY(RY_RANDOM,@HANDLE,@LP1,@LP2,@P1,@P2,@P3,@P4,@BUFFER)
XX_M = ALLTRIM(STR(P1,5))
A_TMP( II_M ) = IIF(LEN(XX_M) > 3,VAL(LEFT(XX_M,3)),VAL(XX_M))
ENDFOR
LP1 = 0
LP2 = 7
P1 = A_TMP(1)
P2 = A_TMP(2)
P3 = A_TMP(3)
P4 = A_TMP(4)
RETCODE = ROCKEY(RY_CALCULATE2,@HANDLE,@LP1,@LP2,@P1,@P2,@P3,@P4,@BUFFER)
IF (RETCODE <> 0)
  messagebox(&etsbl_m,48,'警告')
QUIT
ELSE
NO_M = 0
ON ERROR no_m=10
FOR II_M = 1 TO 4
II_C = STR(II_M,1)
  if p&ii_c>32768
  p&ii_c=p&ii_c-65536
ENDIF
ENDFOR
B_TMP( 1 ) = P1 - P3 + P4 - P2 - 63
B_TMP( 2 ) = P4 - P2 - 56
B_TMP( 3 ) = P3 + 7
B_TMP( 4 ) = P4 - P1
IF NO_M = 10
  messagebox(&etsbl_m,48,'警告')
QUIT
ELSE
IF  .NOT. (A_TMP(1) = B_TMP(1) AND A_TMP(2) = B_TMP(2) AND A_TMP(3) = B_TMP(3) AND  ;
A_TMP(4) = B_TMP(4))
  messagebox(&etsbl_m,48,'警告')
QUIT
ENDIF
ENDIF
......

如何直接在可执行程序中修改跳转代码?有无专业工具?求指点!!!!

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 2874
活跃值: (1047)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
要么重新编译,要么动态跟踪暴破,好像从没看到过你要求的工具
2005-3-22 14:41
0
雪    币: 5905
活跃值: (2722)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
直接改代码,再用vfp编译。
2005-3-22 16:58
0
雪    币: 260
活跃值: (81)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
这个软件好像我碰到过,也考虑用这种方法,但是不知道怎么解决,好像是个水利预算软件吧?
2005-3-22 18:04
0
雪    币: 463
活跃值: (116)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
RYDLL32.dll 从他里面下手吧,比较轻松的3:
2005-3-22 18:43
0
雪    币: 205
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
哪儿可以下载到?我试试看?
2005-3-23 00:08
0
雪    币: 214
活跃值: (100)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
7
www.epoint。com。cn
2005-3-23 12:37
0
雪    币: 84
活跃值: (710)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
最初由 Pan88168 发布
RYDLL32.dll 从他里面下手吧,比较轻松的3:

我赞同Pan88168的方法,我一般都是用此种思路解决,免除重新编译vfp程序有时可能编译不了的毛病。基本上vfp加狗的方式作为加密的方式不太有效,通过反编译vfp源代码容易看见里面的判断算法和对狗的dll api函数的调用方式,通过修改dll 对应的函数(模拟vfp中的算法),就可以完美解狗了。
2005-3-23 13:43
0
雪    币: 214
活跃值: (100)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
9
我认为,既然可以作出反编译工具,那么作出一个直接修改源程序调整代码的小软件应该很容易,这个工具应该已经存在,各位大侠,公开吧!
2005-4-22 09:01
0
雪    币: 1866
活跃值: (95)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
最初由 shacksing 发布
我认为,既然可以作出反编译工具,那么作出一个直接修改源程序调整代码的小软件应该很容易,这个工具应该已经存在,各位大侠,公开吧!

已经有人提出好的建议了!写个接口最好!兼容性好如果数据不变还支持升级!
2005-4-22 19:08
0
雪    币: 158
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
你自己写一个dll让他调用还不是一切尽在掌握中呀
2005-4-22 20:46
0
雪    币: 425
活跃值: (205)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
ROCKEY(RY_RANDOM,@HANDLE,@LP1,@LP2,@P1,@P2,@P3,@P4,@BUFFER)
ROCKEY的调用
2005-4-22 23:59
0
雪    币: 198
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
要修改可以,但是不要修改文件长度,否则累死你!
2005-4-23 17:42
0
游客
登录 | 注册 方可回帖
返回
//