好友
阅读权限40
听众
最后登录1970-1-1
|
ps520
发表于 2010-3-30 10:21
感谢各位的捧场,今天仍然以网际速递为例子,主要是对其试用期算法的逆向分析。
首先,我们需要认识两个部分:
1.PartA
2.PartB
以前的老版本中,只有PartA,这就是过去删除syrq.dll就可以无限试用的秘密。
在2.9及以上(从我开始破解的那个版本吧,我也只知道这些)便引入了PartB,让一群用户摸不着头脑
所以在2.9左右网络很少见破解版,但这时候我插进去了……
3.0~3.4Beta1的补丁基本采用内存Patch跳转的方法,但这个方法并不是个办法,每次更新都要找地址,很头疼。
于是我花了点时间逆向了试用期算法,终于解开了此类软件的试用期之谜。
-----------------------------------------------------------------------------------
老工具,查找按钮事件,在《利用软件自身途径破解网络验证》提供了工具及方法。
以3.4为蓝本。拨号事件0x0040FBF0。
OD加载,Ctrl+G 0x0040FBF0,F2。
这些步骤都很熟悉了对不~
0040FBF0 6A FF push -0x1
0040FBF2 68 4E844D00 push 004D844E
0040FBF7 64:A1 00000000 mov eax, dword ptr fs:[0]
0040FBFD 50 push eax
0040FBFE 64:8925 0000000>mov dword ptr fs:[0], esp
0040FC05 81EC 44010000 sub esp, 0x144
0040FC0B 53 push ebx
0040FC0C 55 push ebp
0040FC0D 56 push esi
0040FC0E 57 push edi
0040FC0F 33FF xor edi, edi
0040FC11 8BE9 mov ebp, ecx
基本没什么看头的入口,好戏在后。
F8一段后,发现亮点:
0040FE6F FF15 F8264E00 call dword ptr [<&MFC71.#784>] ; MFC71.#785
0040FE75 68 A49F4E00 push 004E9FA4 ; \syrq.dll
0040FE7A 8D5424 2C lea edx, dword ptr [esp+0x2C]
0040FE7E 52 push edx
0040FE7F 8D8424 C4000000 lea eax, dword ptr [esp+0xC4]
0040FE86 50 push eax
0040FE87 E8 3414FFFF call 004012C0
0040FE8C 83C4 0C add esp, 0xC
syrq.dll即我所说的Part A
开始定位syrq.并准备读取数据。
发现新亮点:
0040FEB8 C68424 5C010000>mov byte ptr [esp+0x15C], 0x7
0040FEC0 FF15 70254E00 call dword ptr [<&MFC71.#578>] ; MFC71.#578
0040FEC6 68 949F4E00 push 004E9F94 ; \netapis32.dll
下面看看它的位置:
0040FEEC FF15 64254E00 call dword ptr [<&MFC71.#876>] ; MFC71.#3397
0040FEF2 50 push eax
eax=003A6D78, (ASCII "C:\WINDOWS\system32\netapis32.dll")
很好,这个就是我们所说的PartB
那这个算法到底是如何计算的呢?
由于我的电脑不知道为什么无法继续调试,所以我们直接分析数据。
用记事本打开C:\WINDOWS\syrq.dll
格式应该是这样的:
abcdefg
ab代表年份的后两位,比如今年是2010,则为10
cd代表月份,比如现在是3月份,则为03
ef代表日期,比如29
g代表什么呢?呵呵,是试用次数!
这样我们就猜解了部分代码。
“反正我这过期了,把g改0继续试用咯!
啊?怎么还提示过期了?!”
没错。这就是PartB的作用!
用记事本打开C:\WINDOWS\system32\netapis32.dll
里面是一段特定的字符串,没什么意思。
但这个是怎么定义我们使用时间的呢?
让我们来测试下。
将syrq.dll内容修改为:
0801011
保存后打开网际速递,点拨号。提示过期
然后看netapis32.dll的信息,貌似内容没变,右键属性
却发现修改时间之类的变更了!
原来netapis32.dll修改时间等就是比如日期b!
如果该时间与syrq时间不一致则用netapis32.dll的时间。
好,我们来总结如何破解:
1.删除netapis32.dll
2.填充syrq.dll,保证7位数,最后一位小于4
这样我们就解决了永不过期~
通过类比我们也就可以破解其他的软件了。 |
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|