首页
社区
课程
招聘
[求助]关于时钟控件的破解问题,高人请入。
发表于: 2007-4-28 16:06 7528

[求助]关于时钟控件的破解问题,高人请入。

2007-4-28 16:06
7528
一个测试版的程序,在启动后什么也不操作的情况下,约1小时至两小时间,该程序窗口中会出现“测试版已过时”字样,在观察期间,本人曾多次调整系统时间,均该程序均能在1至2小时的决对时间内出现“测试版已过时”字样,也就是说该程序内调用的时钟根本就不是电脑的系统时间。

经几天的观察,估计该程序在启动后就随机为时钟定义一个1至2小时的周期,并让时钟开始运转,待时钟运转一周期后出现“测试版过时”字样并封锁程序主要功能。
在调试时,用OD载入该程序后按CTRL+W键未发现时钟的相关控件。
还有一点,按常规在OD内用串式参考根本找不到“测试版已过时”的字样。
按CTRL+M查找“测试版已过时”字样,在数据段及代码段均找到,且不只一处,不知道设哪个为断点,而且内存断点只能设一个,无奈。
基本情况就差不多是上面这些了。

急需如下帮助:
1、如何找到为该时钟的周期付值的语句?
2、有没有生成随机数的函数可以下断?
3、如何找到生成的随机数的地址?
4、有没有可以直接让该程序的时钟控件停止运转的办法?

以上四条有一条管用就行,或者能给出其他思路,不胜感激!

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (13)
雪    币: 200
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
自己顶一下,别沉了
2007-4-30 01:40
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
帮顶一个
我也想知道
2007-4-30 04:01
0
雪    币: 200
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
哪们大人有兴趣的话,我可以把该程序发给你,大约365K左右,只有一个主程序,是个网络游戏外挂的试用版(测试版)。

差点忘了,我的QQ是316863625,在这里先谢谢啦。

要是用变速齿轮的话,开到最高速(256速)大约20秒就能出现揭示字符。也就是正常速度的约1.5个小时吧。
2007-4-30 20:42
0
雪    币: 200
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
一百多人看,就是没人能帮忙,不会吧,能帮我找到那串字符也好啊。
2007-5-1 10:15
0
雪    币: 200
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
顶回去。
难道真的除了串式参考以外就没有别的办法吗?
可是我在OD里查不到那个字符串呀,有人说用VB编的程序字符在内存中会以乱码的形式出现,有这么回事吗?如果真是这样的活,怎么办?
真没有大侠能帮帮我吗?
2007-5-3 00:32
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
BP SetTimer
2007-5-3 08:52
0
雪    币: 200
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
这个API我试过,程序里做延时的时候也用他,太多,无法分析。

最好是哪位能帮我找到串式参考的方法,这样会比较有针对性,相对简单一些。
2007-5-4 12:51
0
雪    币: 247
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
既然是外挂 恐怕作者对解密也很熟 所以可能是加壳了
生成随机数 你看看有没有这个指令rdtsc
2007-5-4 16:16
0
雪    币: 253
活跃值: (250)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
10
简便脱壳法:
   
    用OD加载,停在这里:设置OD不忽略任何异常,然后F9运行,发生一次int3异常

004BB000 >push ebp        <====停在这里
004BB001  call AutoXYDE.004BB007

    设置OD不忽略任何异常,然后F9运行,发生一次int3异常:
   
004CC99E  int3
004CC99F  nop        <====停在这里

    然后下:bp GetProcAddress,再按F9运行,断下后,取消GetProcAddress这个断点,然后Alt+F9返回这里:

004B804F  call dword ptr [ebp+F49]
004B8055  mov dword ptr [ebp+54D],eax    <====返回这里
004B805B  lea ebx,dword ptr [ebp+6B]
004B805E  push ebx
004B805F  push edi
004B8060  call dword ptr [ebp+F49]
004B8066  mov dword ptr [ebp+551],eax
004B806C  lea eax,dword ptr [ebp+77]
004B806F  jmp eax

004B808A  mov ebx,dword ptr [ebp+531]
004B8090  or ebx,ebx
004B8092  je short AutoXYDE.004B809E

004B809E  lea esi,dword ptr [ebp+569]
004B80A4  cmp dword ptr [esi],0
004B80A7  je AutoXYDE.004B81CE                单步走到这里

    单步走到004B80A7,按一下回车,来到
   
004B81CE  mov edx,dword ptr [ebp+422]        来到这里,按F4
004B81D4  mov eax,dword ptr [ebp+52D]
004B81DA  sub edx,eax
004B81DC  je short AutoXYDE.004B8257

    到004B81CE处,按一下F4,然后打开内存窗口,在00401000段F2下断点,然后F9运行,就停在OEP处:
   
00493BCC  push ebp                OEP                         ; ntdll.7C930738
00493BCD  mov ebp,esp
00493BCF  add esp,-0C
00493BD2  push ebx
00493BD3  mov eax,AutoXYDE.004939A4
00493BD8  call AutoXYDE.00406838

    经另外的跟踪可知,跳OEP前的语句为:

004B83AF    61              popad
004B83B0    75 08           jnz short AutoXYDE.004B83BA
004B83B2    B8 01000000     mov eax,1
004B83B7    C2 0C00         retn 0C
004B83BA    68 CC3B4900     push AutoXYDE.00493BCC
004B83BF    C3              retn

    到OEP处后直接用OD的DUMP功能,即可脱壳,并且可以运行。
2007-5-4 21:32
0
雪    币: 200
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
根据大侠的方法已经成功脱壳,并找到相就的字符串,下面的工作我会作了,谢谢啦!
2007-5-4 22:43
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
破解后的时间限制怎么去除呀?
2007-6-20 16:31
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
给你个建议:

1、放弃

2、真要尝试,先要让软件为过期状态。。。。。。在SetTimer前有三个JE和

类似MOV ESI,DWORD PTR DS:[EBX+24]。。。。 TEST ESI,ESI

如果你修改成MOV ESI,1000  你会发现程序在两秒左右就过期了,呵呵

别问我怎么破,可以向10楼的大大请教。。。。我也不会:)
2007-6-20 18:41
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
[QUOTE=HaiNaby;325060]给你个建议:

1、放弃

2、真要尝试,先要让软件为过期状态。。。。。。在SetTimer前有三个JE和

类似MOV ESI,DWORD PTR DS:[EBX+24]。。。。 TEST ESI,ESI

如果你修改成MOV ESI,1000  你会发现程序在两秒左右就过期了,呵呵

别问我怎么...[/QUOTE]
大家都需要解决这个问题,楼主不太仗义呀,知道怎么解决也不分享一下。我是新手,弄的我脑瓜子都大了。
2007-6-21 12:50
0
游客
登录 | 注册 方可回帖
返回
//