转。如果破解winiso5.3

qduwg
2005-12-23, 13:45:56
题 目: WinISO V5.3 另类破解的成败得失 (电脑报合订本2003光盘)
工 具: Softice4.05, Fi, UltarEdit, W32Dasm,Prodump.
软件公司: http://www.winiso.com
软件授权:共享,根据附带文件称注册费US$30.
软件大小:1.268MB
软件介绍:
WinISO是一个CD-ROM映像文件格式转换工具,并且可以直接编辑光盘映像文件!它可以处理几乎所有CD-ROM映像文件,包括ISO和BIN。通过WinISO,你可以在映像文件内部添加、删除、重命名、提取文件。
破解目的:
去掉压缩和解压缩文件大小的限制和2个NAG窗口. 当压缩超过100MB的文件时提示出错,解压文件大于3MB时出现错误. 分别出现一个错误提示框. 据说注册码计算比较复杂,我就只好采取“下策”了。通过跟踪可以锻炼你的观察能力,为破解复杂算法的注册码打下基础。我希望以后能够在功力大长后找出注册码来,甚至注册机,那是最高境界!
适合读者: 菜鸟
难 度: 中偏下
爆 破 手: QduWg [俺也想早日加入[FCG]或者[CCG]组织,怎么加入?:)]


首先本文受到了Zest的WinISO V4.0破解短文启发,感谢他的文章。但他的文章没有讲到如何去掉NAG窗口,可能软件版本不同的缘故吧。我结合自己的实践,写了这个破解教程,希望能够对菜鸟有些启发. 错误之处在所难免(菜鸟水平,你还能够期望多高??*_^). 全当抛“砖”了!你最好砸些"玉"什么的过来!! 转入正题!

我手头收藏了不少电脑报合订本的光盘,里面的共享软件巨多, 只是让你尝个鲜,想用正版??对不起,请交费注册. 今天刚好看了一篇类似的教程,立即想实验一把,我没有WINISO V4.0,就只好拿WINISO V5.3开刀.

先用FI透视一下,原来用UPX v1.2加壳了,故"兵来将挡,水来土掩", 拿出Prodump去壳之,我比较幸运,一下子就去掉了壳。 方法很简单啦: 启动Prodump后,单击Unpack 按钮, 选择目标软件, 一会儿提示你重新保存,随便给个名字即可.这样你就得到了去壳的WinISO了. 如果不去壳,你用W32dasm打开,就发现程序地址跟你在SOFTICE内看到的完全不同啦. 下面是第二环节了:

用W32dasm打开去壳后的软件, 这个时候就是软件的真实面貌了。运行软件,首先你可以压缩一个大于100MB的文档,比如VCD文件. 然后保存,WinISO给你一个错误提示对话框,此时,你Ctrl+D打开Softice, 用hwnd命令查看该对话框句柄(下面我用xxxx表示,你替换成你找到的句柄即可), 注意查看时一定注意有Dialog字样的才是. 然后用如下命令下断点: bmsg xxxx wm_destroy, F5退出SoftICE, 点击对话框的"确定"按钮. 立即被断下, 按12下F12来到WinISO领空, 然后往上翻页,你会发现如下代码:
* Referenced by a CALL at Addresses:
|:004019F7 , :00404D5E , :00408939
|
:00411658 55 push ebp
:00411659 8BEC mov ebp, esp
:0041165B 83C48C add esp, FFFFFF8C
:0041165E B824C94C00 mov eax, 004CC924
:00411663 53 push ebx
:00411664 56 push esi
:00411665 57 push edi
.
.略去部分代码,F10跟踪略去的代码
.
:00411687 7573 jne 004116FC
:00411689 8B0D88134E00 mov ecx, dword ptr [004E1388]
:0041168F 8B01 mov eax, dword ptr [ecx]
:00411691 81B82406000000004006 cmp dword ptr [eax+00000624], 06400000 //此处进行文件大小比较,大于100MB玩完.
:0041169B 765F jbe 004116FC //此处改成jmp则活
:0041169D 6A10 push 00000010
:0041169F 8B1588134E00 mov edx, dword ptr [004E1388]
.
.略去部分代码,F10跟踪略去的代码
.
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004116CD(C)
|
:004116D3 B846BE4C00 mov eax, 004CBE46

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004116D1(U)
|
:004116D8 50 push eax
:004116D9 8B1588134E00 mov edx, dword ptr [004E1388]
:004116DF 8B02 mov eax, dword ptr [edx]
:004116E1 E8F27F0600 call 004796D8
:004116E6 50 push eax
:004116E7 E826310B00 call 004C4812 //此处出现错误提示对话框
:004116EC 33C0 xor eax, eax
:004116EE 8B16 mov edx, dword ptr [esi]
:004116F0 64891500000000 mov dword ptr fs:[00000000], edx
:004116F7 E929030000 jmp 00411A25
--------------------------------------------------------------------------
如此照搬, 把一个大于30MB的ISO文件解压缩, 出现错误提示对话框, 然后打开SoftICE, 查看对话框句柄, 下断点 bmsg xxxx wm_destroy, F5退出SoftICE, 点击对话框的"确定"按钮. 立即被断下, 按12下F12来到WinISO领空, 然后往上翻页,你会发现如下代码:
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00410332(C)
|
:00410348 B8EC1C4E00 mov eax, 004E1CEC
:0041034D 80782700 cmp byte ptr [eax+27], 00
:00410351 0F95C2 setne dl
:00410354 83E201 and edx, 00000001
:00410357 84D2 test dl, dl
:00410359 7568 jne 004103C3
:0041035B 81FF00003000 cmp edi, 00300000 //此处进行文件大小比较,大于3MB玩完.
:00410361 7660 jbe 004103C3 //改成jmp则活
:00410363 6A10 push 00000010
:00410365 8B0D88134E00 mov ecx, dword ptr [004E1388]
:0041036B 8B31 mov esi, dword ptr [ecx]
.
.略去部分代码,F10跟踪略去的代码
.
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00410393(C)
|
:00410399 B8C8BD4C00 mov eax, 004CBDC8

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00410397(U)
|
:0041039E 50 push eax
:0041039F 8B1588134E00 mov edx, dword ptr [004E1388]
:004103A5 8B02 mov eax, dword ptr [edx]
:004103A7 E82C930600 call 004796D8
:004103AC 50 push eax
:004103AD E860440B00 call 004C4812 //此处出现错误提示对话框
:004103B2 33C0 xor eax, eax
:004103B4 8B55D4 mov edx, dword ptr [ebp-2C]
:004103B7 64891500000000 mov dword ptr fs:[00000000], edx
:004103BE E95D010000 jmp 00410520
-----------------------------------------------------------------------------
小结:
:0041169B 765F 改为: eb 5f
:00410361 7660 改为: eb 60
现在胜利就属于你啦!!

不过这个软件运行的时候,还出现2个NAG窗口,比较烦人, 下面把他们干掉. 还是用上述方法进行设断. 按12次F12来到下面代码处:

:004012C0 55 push ebp
:004012C1 8BEC mov ebp, esp
:004012C3 83C4D4 add esp, FFFFFFD4
:004012C6 B8C4554C00 mov eax, 004C55C4
:004012CB 53 push ebx
:004012CC 56 push esi
:004012CD 57 push edi
:004012CE E891460B00 call 004B5964
:004012D3 E8022E0C00 call 004C40DA
:004012D8 3DA8030000 cmp eax, 000003A8
:004012DD 7513 jne 004012F2 //把jne 改为je ,就是75->74即可跳过下面的那个CALL。
:004012DF 6A40 push 00000040

* Possible StringData Ref from Data Obj ->"WinISO"
|
:004012E1 6885554C00 push 004C5585

* Possible StringData Ref from Data Obj ->"WinISO"
|
:004012E6 68DC544C00 push 004C54DC
:004012EB 6A00 push 00000000
:004012ED E820350C00 call 004C4812 //出现第一个NAG窗口
------------------------------------------------------------------------------------
还有第二个NAG窗口需要拿掉。通过前面的跟踪发现,第二个NAG在如下代码处出现。

* Possible StringData Ref from Data Obj ->"WinISO"
|
:00401325 BA8C554C00 mov edx, 004C558C
:0040132A 8D45F8 lea eax, dword ptr [ebp-08]
:0040132D E8CA220C00 call 004C35FC
:00401332 FF45F0 inc [ebp-10]
:00401335 8B10 mov edx, dword ptr [eax]
:00401337 8B0DB0134E00 mov ecx, dword ptr [004E13B0]
:0040133D 8B01 mov eax, dword ptr [ecx]
:0040133F E8D4740600 call 00468818
:00401344 FF4DF0 dec [ebp-10]
:00401347 8D45F8 lea eax, dword ptr [ebp-08]
:0040134A BA02000000 mov edx, 00000002
:0040134F E84C240C00 call 004C37A0
:00401354 8B0DB0134E00 mov ecx, dword ptr [004E13B0]
:0040135A 8B01 mov eax, dword ptr [ecx]
:0040135C 8B0D88134E00 mov ecx, dword ptr [004E1388]
:00401362 8B15F4964C00 mov edx, dword ptr [004C96F4]
:00401368 E8BF780600 call 00468C2C ---------------------//出现第二个NAG窗口,需要按F8跟入哦,我开始却忽略了这个地方,结果跑了许多冤枉路,我以为里面没有道道呢。结果呢???猎物就藏在这里的。该CALL下面调用了多次
:0040136D A1B0134E00 mov eax, dword ptr [004E13B0]
:00401372 8B00 mov eax, dword ptr [eax]
:00401374 8B0D8C134E00 mov ecx, dword ptr [004E138C]
:0040137A 8B15E4B44C00 mov edx, dword ptr [004CB4E4]
:00401380 E8A7780600 call 00468C2C
:00401385 A1B0134E00 mov eax, dword ptr [004E13B0]
:0040138A 8B00 mov eax, dword ptr [eax]
:0040138C 8B0D9C134E00 mov ecx, dword ptr [004E139C]
:00401392 8B151CE14C00 mov edx, dword ptr [004CE11C]
:00401398 E88F780600 call 00468C2C

首先尝试把:00401368 处的CALL 改为90 90 90 90 90(好多软件按照这个办法改也是出现错误), 结果出现地址引用异常,所以此路不通啊! 想想其他办法.我突然灵机一动,因为启动程序的时候第一个NAG已经不出现了,直接出现第二个NAG, 这样就可以通过下断点bpx showwindow, 这可是我尝试了好多函数才找到的. 按F12多次直到来到主程序处,然后F10跟踪即可了。

:00465DAD 33C0 xor eax, eax
:00465DAF E8E0A0FFFF call 0045FE94
:00465DB4 8945F4 mov dword ptr [ebp-0C], eax
:00465DB7 33D2 xor edx, edx
:00465DB9 55 push ebp
:00465DBA 68285F4600 push 00465F28
:00465DBF 64FF32 push dword ptr fs:[edx]
:00465DC2 648922 mov dword ptr fs:[edx], esp
:00465DC5 8B45FC mov eax, dword ptr [ebp-04]
:00465DC8 E83BFEFFFF call 00465C08 ---------------------//此处出现NAG窗口的框架,没有内容
:00465DCD 33D2 xor edx, edx
:00465DCF 55 push ebp
:00465DD0 68875E4600 push 00465E87
.
.略去部分代码,F10跟踪略去的代码
.
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00465E3D(C)
|
:00465DFD 8B03 mov eax, dword ptr [ebx]
:00465DFF E8142D0000 call 00468B18
:00465E04 8B03 mov eax, dword ptr [ebx]
:00465E06 80B88C00000000 cmp byte ptr [eax+0000008C], 00
:00465E0D 740F je 00465E1E
:00465E0F 8B45FC mov eax, dword ptr [ebp-04]
:00465E12 C7803402000002000000 mov dword ptr [ebx+00000234], 00000002
:00465E1C EB14 jmp 00465E32

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00465E0D(C)
|
:00465E1E 8B45FC mov eax, dword ptr [ebp-04]
:00465E21 83B83402000000 cmp dword ptr [eax+00000234], 00000000
:00465E28 7408 je 00465E32
:00465E2A 8B45FC mov eax, dword ptr [ebp-04]
:00465E2D E826FDFFFF call 00465B58

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00465E1C(U), :00465E28(C)
|
:00465E32 8B45FC mov eax, dword ptr [ebp-04]
:00465E35 8B8034020000 mov eax, dword ptr [eax+00000234]
:00465E3B 85C0 test eax, eax
:00465E3D 74BE je 00465DFD ---------------与上面的:00465DFD构成循环,向前面的那个空NAG窗口内填充内容的。所以,你可以想到,把je 改成jne, 即74->75.

可是重新启动程序发现解压缩时的对话框也是一闪而过,失去焦点.看来这里不能够轻易改动的!!!需要想其他办法. :革命尚未成功,同志仍需努力啊,继续战斗。。。。

--------------------------------------
既然从前面得知在401368处的CALL出现错误提示,通过设置bpx xxxx wm_destroy断点,F8跟入第一个468c2c调用。你可以看到一大长串代码比较有规律,最后一个地方是关键地方,请看如下代码:

从地址468c5d call 4015a8 处跟入:

:004015A8 55 push ebp
:004015A9 8BEC mov ebp, esp
:004015AB 83C4B0 add esp, FFFFFFB0

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401598(C)
|
:004015AE 84D2 test dl, dl
:004015B0 53 push ebx
:004015B1 56 push esi
:004015B2 8855F8 mov byte ptr [ebp-08], dl
:004015B5 7E05 jle 004015BC
:004015B7 E890290C00 call 004C3F4C

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004015B5(C)
|
:004015BC 894DD0 mov dword ptr [ebp-30], ecx
:004015BF 8855D7 mov byte ptr [ebp-29], dl
:004015C2 8945FC mov dword ptr [ebp-04], eax
:004015C5 8D5DFC lea ebx, dword ptr [ebp-04]
:004015C8 8D75D8 lea esi, dword ptr [ebp-28]
:004015CB B8A0724C00 mov eax, 004C72A0
:004015D0 E88F430B00 call 004B5964
:004015D5 66C746100800 mov [esi+10], 0008
:004015DB 8B4DD0 mov ecx, dword ptr [ebp-30]

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401577(C)
|
:004015DE 33D2 xor edx, edx
.
.略去部分代码,F10跟踪略去的代码
.
:0040184F C6805406000001 mov byte ptr [eax+00000654], 01
:00401856 8B16 mov edx, dword ptr [esi]
:00401858 64891500000000 mov dword ptr fs:[00000000], edx
:0040185F 8B03 mov eax, dword ptr [ebx]
:00401861 807DD700 cmp byte ptr [ebp-29], 00
:00401865 7405 je 0040186C -----------//此处就是关键,必须跳走,否则碰壁,74->75即可
:00401867 E8ED260C00 call 004C3F59 --------- //此行就是出现第二个NAG的地方,它竟然隐藏在这里,让我找 的好辛苦。终究逃不出我们的法眼!!

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401865(C)
|
:0040186C 5E pop esi
:0040186D 5B pop ebx
:0040186E 8BE5 mov esp, ebp
:00401870 5D pop ebp
:00401871 C3 ret

----------------------------------------------------------------------------------------
总结:用W32DASM打开去壳后的软件,对照里面给出的文件VA,用UltraEdit修改对应位置的相应字节即可。

后记:
现在终于可以喘口气了,用了4个小时边写边破解,终于有了此文。关键问题是我在文章里面对成功和失败的地方进行了对比,可以给菜鸟一点启发。发现走不下去的时候,需要转换脑筋思路哦!我就是碰了好几次壁才折回来的。希望大家不要走弯路。当然适当走点还是有好处的啊!
这样修改完毕,重新启动程序,哇塞!第一个NAG窗口不出现,第二个NAG窗口也没有了声息,所以不必象以前那样按"确定"按钮了.哈哈!可以收工啦!
我到现在为止才学习破解正好2个月,在这段时间,学习有苦也有乐,我在电脑前一坐,基本不挪窝,当写出点还算有点参考价值的东西的时候,感到无比快乐。我自己感到也离破解殿堂越来越近了。希望早日步入高手行列!那是我们菜鸟们的期盼!!:)
写教程的确比较辛苦,但是看到我写的东西能够引起许多大侠的共鸣,能够对菜鸟的进步起那么一点点作用,我心里就生出无限动力,驱使我写完一篇还想下写一篇。

现在是晚上11点30,我该睡觉了。明天还有更有趣的破解任务等着我呢!!:)


---------------
自由撰稿:QduWg
完成日期:2005年12月23日
qduwg@163.com 欢迎您提出宝贵指导!
阅读更多
上一篇ip统计
下一篇设置2台计算机通信
想对作者说点什么? 我来说一句

winiso5.3 PL版本

2013年05月15日 1.1MB 下载

WinISO5.3 破解

2009年12月09日 728KB 下载

WinISO5.3绿色版本

2011年05月02日 1.16MB 下载

winiso5.3 注册机

2009年03月03日 6KB 下载

WINISO5.3汉化中文版(含注册码)

2010年09月08日 729KB 下载

winiso5.3 注册序列号

2009年10月28日 5KB 下载

winiso5.3含注册码

2010年05月04日 1.16MB 下载

WinIso5.3破解

2010年06月17日 144B 下载

没有更多推荐了,返回首页

关闭
关闭