冥界3大法王 发表于 2014-4-20 20:53

利用有bug的破解补丁+在线申请到的14天试用码实现梦想:

本帖最后由 冥界3大法王 于 2014-4-20 20:55 编辑































利用有bug的破解补丁+在线申请到的14天试用码实现梦想:

要破解的这个程序是一个非常不错的硬盘镜像和取证工具
支持的格式超级强大~~
分析:
1,未注册版,点击第一个按钮出来A
2,标题栏显示未激活版 字样 B
3,关于菜单中是“试用过期字样”C
(如果已激活则是激活字样,当然用OD调试还能发现有未注册字样)

4,我们到官方网站申请一个临时的注册码(前面1说过,不然出A无法试用)
D是我们申请到的14天试用版注册码(到2014年5.1过期)
在线申请临时试用激活成功后的截图E
值得补充交待的是,我们来到软件目录发现:
这里会有两个蛋痛的,超级大的文件,作为业界搞破解的同学们
不用多解释就知道这是干啥的了吧?(当破解成功后可以精简掉的)
通过OD调试和Regshot我们发现注册表中会存在在线申请认证试用版
注册成功的标志的键值。

5之后标题栏变成了F--》 14天试用字样
再次点击第一个按钮 就会出来G
到这里,我们要重点说一说本文的要点啦~~~
在网上你能下载到一个假激活的破解补丁
009667A4/$53            push ebx
009667A5|.8BD8          mov ebx,eax
009667A7|.8BC3          mov eax,ebx
009667A9|.E8 6A000000   call MIPGUI.00966818   A1
009667AE|.84C0          test al,al它修改了这里84-->85
009667B0|.0F94C0      sete al   条件为真,AL为0
009667B3|.5B            pop ebx
009667B4\.C3            retn      返回到 009651D8   |这里的数值多次不一样
这样就虽然标题栏和关于中都显示了激活字样,但是来到图G的地方
你会发现新创建的磁盘加载时就会报错(这里少图一张稍候补充)
我们现在开始初步下以下结论:
1,它破解的地方虽然是全局的,但破坏了某些东西
2,网上申请到的14天试用版走的路线分支和赋值语句是局部的,所以导致标题栏是14天试用字样
当然14天后肯定得过期(有人说是不是可以无线申请?)OD调试时发现14天字样不会变化,但过期的字符还是隐约能看到的
说到这里大家应该明白,我打算做干什么了吧?把两者的结论合二为一,取长补短。
好吧,费话说了一大堆,现在开始OD调试没解决的问题
------------------------------------------------------------------------------
先把断点设在A1,按下F9,三次后,我们能进入主界面中。(以14天试用版来调试)
------------------------------------------------------------------------------
当点击关于或第一个按钮时,同样来到A1处
009667A9|.E8 6A000000   call MIPGUI.00966818   ( A1)
009667AE|.84C0          test al,al
009667B0|.0F94C0      sete al         ;al为0
009667B3|.5B            pop ebx          ;04348120此时寄存器eax=1
009667B4\.C3            retn                ;返回到 00BBF61C
按一下F8我们来到
00BBF61C|.84C0          test al,al
00BBF61E|.75 6B         jnz XMIPGUI.00BBF68B 实现跳到A3    (A2)
00BBF620|.E8 9375DAFF   call MIPGUI.00966BB8
00BBF625|.8B80 10010000 mov eax,dword ptr ds:
00BBF62B|.8B10          mov edx,dword ptr ds:
00BBF62D|.FF52 20       call dword ptr ds:
00BBF630|.85C0          test eax,eax
00BBF632|.7E 45         jle XMIPGUI.00BBF679
00BBF634|.8D45 A0       lea eax,
00BBF637|.50            push eax
00BBF638|.E8 7B75DAFF   call MIPGUI.00966BB8
00BBF63D|.8B80 10010000 mov eax,dword ptr ds:
00BBF643|.8B10          mov edx,dword ptr ds:
00BBF645|.FF52 20       call dword ptr ds:
00BBF648|.8D55 94       lea edx,
00BBF64B|.E8 504E86FF   call MIPGUI.004244A0
00BBF650|.8B45 94       mov eax,
00BBF653|.8945 98       mov ,eax
00BBF656|.C645 9C 11    mov byte ptr ss:,0x11
00BBF65A|.8D55 98       lea edx,
00BBF65D|.33C9          xor ecx,ecx
00BBF65F|.B8 84F7BB00   mov eax,MIPGUI.00BBF784                  ;Trial (%s days left)
00BBF664|.E8 5F6B86FF   call MIPGUI.004261C8
00BBF669|.8B55 A0       mov edx,
00BBF66C|.8B83 CC030000 mov eax,dword ptr ds:
00BBF672|.E8 31308FFF   call MIPGUI.004B26A8
00BBF677|.EB 22         jmp XMIPGUI.00BBF69B
00BBF679|>BA BCF7BB00   mov edx,MIPGUI.00BBF7BC                  ;Trial expired.
00BBF67E|.8B83 CC030000 mov eax,dword ptr ds:
00BBF684|.E8 1F308FFF   call MIPGUI.004B26A8
00BBF689|.EB 10         jmp XMIPGUI.00BBF69B
00BBF68B|>BA E8F7BB00   mov edx,MIPGUI.00BBF7E8               ;Activated.   A3
这里后台窗口虚化中。。。。。
我们把
00BBF61E|.75 6B         jnz XMIPGUI.00BBF68B 这句NOP掉
00BBF61E      90            nop                                    ;Y (申请试用成功的实现了)
00BBF61F      90            nop
00BBF620|.E8 9375DAFF   call MIPGUI.00966BB8
00BBF625|.8B80 10010000 mov eax,dword ptr ds:
00BBF62B|.8B10          mov edx,dword ptr ds:
00BBF62D|.FF52 20       call dword ptr ds:
00BBF630|.85C0          test eax,eax
00BBF632|.7E 45         jle XMIPGUI.00BBF679                     ;很显然这句,过期后实现,肯定我们到时得NOP掉
00BBF634|.8D45 A0       lea eax,
00BBF637|.50            push eax
00BBF638|.E8 7B75DAFF   call MIPGUI.00966BB8      (B1)
00BBF63D|.8B80 10010000 mov eax,dword ptr ds:
00BBF643|.8B10          mov edx,dword ptr ds:
00BBF645|.FF52 20       call dword ptr ds:(B2)
00BBF648|.8D55 94       lea edx,
00BBF64B|.E8 504E86FF   call MIPGUI.004244A0      (B3)
00BBF650|.8B45 94       mov eax,             ;在这里我们看到一个12(算算时间果然是剩12天)
00BBF653|.8945 98       mov ,eax
00BBF656|.C645 9C 11    mov byte ptr ss:,0x11
00BBF65A|.8D55 98       lea edx,
00BBF65D|.33C9          xor ecx,ecx
00BBF65F|.B8 84F7BB00   mov eax,MIPGUI.00BBF784                  ;Trial (%s days left)
字样果然变了
------------------------------------------------------------------------------
再把B1   B2   B3设断点
看一下,为什么是12,12是怎么来的?
先尝试破解思路1,永远是激活的试用版
跟过后发现B1不是
我们要找的是0B字样 12天
B2进入后不久
我,靠,重大发现!
004640EA|.0FB745 10   movzx eax,word ptr ss:
我们尝试在寄存器中修改为FF 255天看!到底下面再F8时,是否会影响到?
当我们再路过
00BBF650|.8B45 94       mov eax, 时看到的不是255,为啥是256?
又时啥时候+1的?
虽然上面显示的是试用字样,不好看,但确证明了我们的猜测
这个程序为了到期后过期真是煞费苦心啊。
当我们第二次再调试时发现上面的搞法不太灵光了
B3处仍然有赋值语句,寄存器中能看到第二次赋值
不但有网络验证还有注册表同样B3里会再一次时间
004640EA|.0FB745 10   movzx eax,word ptr ss:这个地方是公共的交集部分
点击第一个按钮时,也会来到此处传递东西
好吧,我们再次大胆的猜测下,
这里的时间显示问题:标题栏上显示的是假14天,而关于中是我们修改过的天数
而那个授权管理器中显示的也是12天,也就间接证明了,时间天数至少还会有一个地方初始化14天
很有可能是注册表中假申请试用码的那个有关~~~
依然第二次时,来到后修改
堆栈 ss:=4002
eax=0000000B
寄存器
EBX的值 修改255

我也就是说明,我们得改EBX
再F8跟下来可看到上图显示的试用字样天数256
接下来,我们尝试找到那个地址初始化的地方
让它每次都是255天(256)

当我们使用的是未申请激活码版时,这里改了后,只能让
局部显示显示注册成功字样,也就说明修改的地方只是一部分
所以:
009667A9|.E8 6A000000   call MIPGUI.00966818   A1这里必须得跟入
009667AE|.84C0          test al,al
009667B0|.0F94C0      sete al
009667B3|.5B            pop ebx
009667B4\.C3            retn这里的返回值前边也说过得3次F9
当我们用一次注册表比较后,
新添加值 (20) 快照 B

"ProgVersionId"=hex:11,dd,82,bd,7c,bc,c0,77,d0,f8,30,df,dd,b4,04,12,f0,7d,ef,\
2c,3c,e3,ac,ca,82,41,9a,0f,a6,82,a2,06
"Binary"=hex:98,a9,bd,fd,35,23,5a,44,9f,37,61,b2,0c,86,a8,36,16,25,fe,27,a2,35,\
55,21,4e,43,33,05,5f,6a,ca,6e

"ProgVersionId"=hex:2e,06,84,07,10,6a,45,a3,80,b7,db,e4,de,af,31,a7,98,94,cf,\
ba,3c,71,f4,51,08,72,c8,1f,b2,7b,8d,cf
"Binary"=hex:03,ce,68,23,83,5d,63,58,6f,c2,b9,a6,6b,1f,35,d7,c6,9e,fb,a8,ed,1d,\
d5,8c,fd,07,08,26,5d,9e,a5,ed

"ProgVersionId"=hex:71,95,fd,ce,93,43,38,65,62,0a,59,a8,1f,3e,30,4f,11,4e,b5,\
e3,d7,d3,b6,99,42,03,1f,da,22,c1,78,f7
"Binary"=hex:7d,79,ea,8b,3a,68,48,61,5b,ee,cc,e3,76,05,36,f6,1c

"ProgVersionId"=hex:b5,18,10,5d,9c,d2,4a,e2,1b,7c,fc,b7,57,d5,9e,ed,70,51,5e,\
cb,f2,d2,c5,40,ff,12,b6,a4,5b,8d,72,fe
"Binary"=hex:1a,e5,0a,8e,d6,93,a4,e6,27,5f,10,79,0b,fe,83,15,60

"ProgVersionId"=hex:11,dd,82,bd,7c,bc,c0,77,d0,f8,30,df,dd,b4,04,12,f0,7d,ef,\
2c,3c,e3,ac,ca,82,41,9a,0f,a6,82,a2,06
"Binary"=hex:98,a9,bd,fd,35,23,5a,44,9f,37,61,b2,0c,86,a8,36,16,25,fe,27,a2,35,\
55,21,4e,43,33,05,5f,6a,ca,6e

"ProgVersionId"=hex:2e,06,84,07,10,6a,45,a3,80,b7,db,e4,de,af,31,a7,98,94,cf,\
ba,3c,71,f4,51,08,72,c8,1f,b2,7b,8d,cf
"Binary"=hex:03,ce,68,23,83,5d,63,58,6f,c2,b9,a6,6b,1f,35,d7,c6,9e,fb,a8,ed,1d,\
d5,8c,fd,07,08,26,5d,9e,a5,ed

"ProgVersionId"=hex:71,95,fd,ce,93,43,38,65,62,0a,59,a8,1f,3e,30,4f,11,4e,b5,\
e3,d7,d3,b6,99,42,03,1f,da,22,c1,78,f7
"Binary"=hex:7d,79,ea,8b,3a,68,48,61,5b,ee,cc,e3,76,05,36,f6,1c

"ProgVersionId"=hex:b5,18,10,5d,9c,d2,4a,e2,1b,7c,fc,b7,57,d5,9e,ed,70,51,5e,\
cb,f2,d2,c5,40,ff,12,b6,a4,5b,8d,72,fe
"Binary"=hex:1a,e5,0a,8e,d6,93,a4,e6,27,5f,10,79,0b,fe,83,15,60

已改变值 (7) 快照 A

"ffffffffffffffffffffffffffffff01"=hex:00,00,00,00,03,01,00,00,02,00,00,00,ff,\
ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff
"ffffffffffffffffffffffffffffff01"=hex:00,00,00,00,03,01,00,00,07,00,00,00,ff,\
ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff

"ffffffffffffffffffffffffffffff01"=hex:00,00,00,00,03,01,00,00,02,00,00,00,ff,\
ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff
"ffffffffffffffffffffffffffffff01"=hex:00,00,00,00,03,01,00,00,07,00,00,00,ff,\
ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff



上面的部分,跟不去了,不知思路了
------------------------------------------------------------------------------
------------------------------------------------------------------------------
我们换个思路,开始找AL=0的地方
00F9C1E0 >/$B8 FF000000   mov eax,0xFF                           ;打开OD后停在这里,一路F8
00F9C1E5|.8B1D 28820501 mov ebx,dword ptr ds:
00F9C1EB|.F7C3 00010000 test ebx,0x100
00F9C1F1|.74 0C         je XMIPGUI.00F9C1FF                      ;Y
00F9C1F3|.8BFC          mov edi,esp
00F9C1F5|.8B47 0C       mov eax,dword ptr ds:
00F9C1F8|.50            push eax
00F9C1F9|.8B47 08       mov eax,dword ptr ds:
00F9C1FC|.50            push eax
00F9C1FD|.EB 02         jmp XMIPGUI.00F9C201
00F9C1FF|>50            push eax
00F9C200|.50            push eax
00F9C201|>E8 5AFFFFFF   call MIPGUI.00F9C160                     ;这里按F8时,就会等待一下来到009667A9
接着一路F8
我们要密切关注:
movzx eax,word ptr ss:的地方和 0B
我们尝试把00934425      8B55 FC       mov edx,dword ptr ss:
改成00934425      8B55 10       mov edx,dword ptr ss:
发现程序标题栏变成了 未激活版本,等点击第一个按钮时,又变成了14天字样

我们把进程中的这东西杀掉~~
C:\Program Files (x86)\CodeMeter\Runtime\bin\CodeMeter.exe
我们用Process Monitor看看还有啥发现?
用regworkshop来到
HKEY_LOCAL_MACHINE\SOFTWARE\WIBU-SYSTEMS\CodeMeter\Server\CurrentVersion
发现一个叫ApiCommunicationMode的键值 正好是14,我们改成其他的试试发现不管用,重启软件后,会再变回来,我们这次把网络关上
HKEY_LOCAL_MACHINE\SOFTWARE\WIBU-SYSTEMS\CodeMeter\Server\CurrentVersion\CmAct\ActivatedLicenses
HKEY_LOCAL_MACHINE\SOFTWARE\WIBU-SYSTEMS\CodeMeter\Server\CurrentVersion\CmAct\SerialNumberMapper
我们发现依然还是激活的试用14字样
我们再把文件夹也移到回收站
哈哈,这次我们发现程序终于变回原始样子了。
此时,就算你导入刚才的注册表部分 是无效果的。
------------------------------------------------------------------------------
但是!一旦你把注册表 和 上面 粗红斜 字体显示的地方归还回去(文件和注册表),
你会发现这个程序
又欢快的跑起来,不然运行速度就打折了。
可见这个作者脑子动的够绝的~~
到处配合的环环相扣~~滴水不露~~
------------------------------------------------------------------------------
我们再去看一下
这个程序的主要参数和用途可知
连日志文件也是多个都够服务器有关
难怪用抓包工具只能看到端口号 和 一堆乱码,连网址都没有看到
发现一个重要网址还是在OD中多次蒙到的
难怪我们在WinHex内存中看到的激活字样有4个
可见似乎我们修改时间限制的那条路不好走~~~
我们先尝试把上面的信息备份出来一份,看重安之后能否再用(试用期内,不连网)
我们现在是在deepfreeze环境下搞的~~
重启后发现,还是不行。
------------------------------------------------------------------------------
00BD265C   /75 2E         jnz XMIPGUI.00BD268C                     ;这里强改能跳过,但程序因此无法装载
00BD265E|. |8D55 FC       lea edx,
00BD2661|. |B8 14E6BC00   mov eax,MIPGUI.00BCE614
00BD2666|. |E8 75A483FF   call MIPGUI.0040CAE0
00BD266B|. |B0 02         mov al,0x2
00BD266D|. |0FB715 4427BD>movzx edx,word ptr ds:
00BD2674|. |33C9          xor ecx,ecx
00BD2676|. |51            push ecx
00BD2677|. |6A FF         push -0x1
00BD2679|. |6A FF         push -0x1
00BD267B|. |6A 00         push 0x0
00BD267D|. |8B4D FC       mov ecx,
00BD2680|. |92            xchg eax,edx
00BD2681|. |91            xchg eax,ecx
00BD2682|. |E8 612495FF   call MIPGUI.00524AE8                     ;这里弹出请激活对话框
00BD2687|. |E9 8F000000   jmp MIPGUI.00BD271B
00BD268C|> \E8 2745D9FF   call MIPGUI.00966BB8

------------------------------------------------------------------------------
进级操作第2部分(设法强制修改程序,让它认为自己是试用激活版的)

------------------------------------------------------------------------------
进级操作第3部分(终级激活)







一路F8
00BBF632|. /7E 45         jle XMIPGUI.00BBF679
00BBF634|. |8D45 A0       lea eax,
00BBF637|. |50            push eax
00BBF638|. |E8 7B75DAFF   call MIPGUI.00966BB8
00BBF63D|. |8B80 10010000 mov eax,dword ptr ds:
00BBF643|. |8B10          mov edx,dword ptr ds:
00BBF645|. |FF52 20       call dword ptr ds:
00BBF648|. |8D55 94       lea edx,
00BBF64B|. |E8 504E86FF   call MIPGUI.004244A0
00BBF650|. |8B45 94       mov eax,
00BBF653|. |8945 98       mov ,eax
00BBF656|. |C645 9C 11    mov byte ptr ss:,0x11
00BBF65A|. |8D55 98       lea edx,
00BBF65D|. |33C9          xor ecx,ecx
00BBF65F|. |B8 84F7BB00   mov eax,MIPGUI.00BBF784                  ;Trial (%s days left)
00BBF664|. |E8 5F6B86FF   call MIPGUI.004261C8
00BBF669|. |8B55 A0       mov edx,
00BBF66C|. |8B83 CC030000 mov eax,dword ptr ds:
00BBF672|. |E8 31308FFF   call MIPGUI.004B26A8
00BBF677|. |EB 22         jmp XMIPGUI.00BBF69B
00BBF679|> \BA BCF7BB00   mov edx,MIPGUI.00BBF7BC                  ;Trial expired.
00BBF67E|.8B83 CC030000 mov eax,dword ptr ds:
00BBF684|.E8 1F308FFF   call MIPGUI.004B26A8
00BBF689|.EB 10         jmp XMIPGUI.00BBF69B
00BBF68B|>BA E8F7BB00   mov edx,MIPGUI.00BBF7E8                  ;Activated.







冥界3大法王 发表于 2014-4-20 20:54

占楼,未完待续。。。

冥界3大法王 发表于 2014-4-20 20:56

3楼将来 也得用,对不起,收了!

扯淡、、 发表于 2014-4-20 20:59

啊哈。先抢了在说{:301_1000:}

YsGer 发表于 2014-4-20 21:05

大神 出品 肯定是精品

seazer 发表于 2014-4-20 21:05

不明其说。。。。

seazer 发表于 2014-4-20 21:06

高深莫测。。。。

esotao 发表于 2014-4-20 21:14

英语完全看不懂

无名L 发表于 2014-4-20 21:20

这个软件,好像不知道是干什么的

无邪 发表于 2014-4-20 21:22

同楼上..不明白这软件的功能啊..
页: [1] 2
查看完整版本: 利用有bug的破解补丁+在线申请到的14天试用码实现梦想: