声明:
linf自己转贴自己帖子,原因:
2005-4-6 09:00左右,我通过朋友家的宽带,想在看雪论坛上发表此文章,但是当时论坛正在维护,于是发表在dfcg上。并没有再贴回来的意思。今日,查看我所提出的问题时,没有人回答,所以转贴在这里请教高手给予回答。如果30天内没有人能回答,自己将删除此文!!!
原址:
http://www.chinadfcg.com/viewthread.php?tid=143290&highlight=%2Blinf
10分钟就破解密码保护的软件
【破解者】 linf
【破解说明】新买了<<电脑迷>>(2005.04.)在光盘中拣几个软件学习破解.发现有两个软件,破解起来有特点,当然也很简单.这两个软件启动后,都需要输入密码才能运行.
首先介绍第一个软件:不准玩游戏.
我说的没有错,这个软件就叫"不准玩游戏",文件名为"nogame.exe
【软件说明】:(引用)
作为一名家长,你也许对家里的电脑又爱又恨--恨的是它往往成为使孩子沉迷于电脑游戏的罪魁祸首。其实,只要给你的电脑装上一款好的管理软件,就可以让孩子在合适的时间到电脑上做合适的事情,使电脑真正成为孩子的良师益友。
软件授权:试用软件
使用限制:7天
文件大小:672 KB
使用平台:Windows 9x/Me/NT/2000/XP
开 发 者:ExeSoft
下面是程序的帮助内容:
《不准玩游戏 2005》使用说明
本软件适用于家庭、办公室、网吧等场所。 安全性极高,较难被破解, 可放心地用于安全性要求较高的场所。(linf注:看了这篇文章你就知道了)
1、首次安装完成后需要做什么?
①运行此软件 ②点击“启动服务”按钮 ③设置密码 ④需要限制的游戏前打勾 ⑤需要限制的时间段前打勾
2、如何设置游戏限制?
在主页面中启动服务,然后关闭主页面。 您的电脑就进入监视游戏状态。不论重启或注销都保持监视游戏状态。
3、如何成为正版用户?
在“常规”页,点击“如何购买”查看相关事宜。
4、软件被卸载怎么办?系统时间被修改怎么办?
未停止服务不能卸载软件或重新安装。
限制服务启动的时候,无法修改时间。
【破解目的】:
这次破解的目的不是破解注册码,而是破解他的密码.在程序设置好后,再次启动程序,需要输入密码才能运行,如果密码错误,就不能进入程序界面,也就不能解除各种限制.因此试着破解他的密码.真没有想到,只用了不到10分钟就OK了.而且作出了内存补丁!!
【破解过程】保证不超10分钟)
1.用TRW2000载入程序,也不用看壳,爽!
2.按F5,返回程序界面,填入假密码,不点击确定,
3.Ctrl+N进入TRW2000界面,下断点---"hmemcpy"
4.按F5,返回程序界面,点击确定,被中断.
5.在TRW2000界面下,先"bc"---清除断点,按F12,数着,按到15次,出错了.
6.再次重复上述步骤,这次按14次F12,再按1次F10,就来到这里:
0177:004AC2F4 8B45FC MOV EAX,[EBP-04] <-- 假密码
0177:004AC2F7 8B93FC020000 MOV EDX,[EBX+02FC] <-- 真密码
0177:004AC2FD E84A85F5FF CALL 0040484C <-- 比较过程
0177:004AC302 7519 JNZ 004AC31D <-- 跳就完蛋了
0177:004AC304 8D83FC020000 LEA EAX,[EBX+02FC]
0177:004AC30A BA58C34A00 MOV EDX,004AC358
0177:004AC30F E89081F5FF CALL 004044A4
0177:004AC314 8BC3 MOV EAX,EBX
0177:004AC316 E87542FBFF CALL 00460590
0177:004AC31B EB11 JMP SHORT 004AC32E
0177:004AC31D B86CC34A00 MOV EAX,004AC36C
0177:004AC322 E86DFCF8FF CALL 0043BF94 <--出现密码错误对话框.
0177:004AC327 8BC3 MOV EAX,EBX
... ...
看看比较过程call by 004AC2FD:
0177:0040484C 53 PUSH EBX
0177:0040484D 56 PUSH ESI
0177:0040484E 57 PUSH EDI
0177:0040484F 89C6 MOV ESI,EAX
0177:00404851 89D7 MOV EDI,EDX
0177:00404853 39D0 CMP EAX,EDX 作比较,
0177:00404855 0F848F000000 JZ NEAR 004048EA 不相等就省事了,
0177:0040485B 85F6 TEST ESI,ESI 即使相等,也要进行测试.?--
0177:0040485D 7468 JZ 004048C7 --不明白?
0177:0040485F 85FF TEST EDI,EDI
0177:00404861 746B JZ 004048CE
0177:00404863 8B46FC MOV EAX,[ESI-04]
0177:00404866 8B57FC MOV EDX,[EDI-04]
0177:00404869 29D0 SUB EAX,EDX
0177:0040486B 7702 JA 0040486F
0177:0040486D 01C2 ADD EDX,EAX
0177:0040486F 52 PUSH EDX
0177:00404870 C1EA02 SHR EDX,02
0177:00404873 7426 JZ 0040489B
0177:00404875 8B0E MOV ECX,[ESI]
0177:00404877 8B1F MOV EBX,[EDI]
0177:00404879 39D9 CMP ECX,EBX
0177:0040487B 7558 JNZ 004048D5
0177:0040487D 4A DEC EDX
0177:0040487E 7415 JZ 00404895
0177:00404880 8B4E04 MOV ECX,[ESI+04]
0177:00404883 8B5F04 MOV EBX,[EDI+04]
0177:00404886 39D9 CMP ECX,EBX
0177:00404888 754B JNZ 004048D5
0177:0040488A 83C608 ADD ESI,BYTE +08
0177:0040488D 83C708 ADD EDI,BYTE +08
0177:00404890 4A DEC EDX
0177:00404891 75E2 JNZ 00404875
0177:00404893 EB06 JMP SHORT 0040489B
0177:00404895 83C604 ADD ESI,BYTE +04
0177:00404898 83C704 ADD EDI,BYTE +04
0177:0040489B 5A POP EDX
0177:0040489C 83E203 AND EDX,BYTE +03
0177:0040489F 7422 JZ 004048C3
0177:004048A1 8B0E MOV ECX,[ESI]
0177:004048A3 8B1F MOV EBX,[EDI]
0177:004048A5 38D9 CMP CL,BL
0177:004048A7 7541 JNZ 004048EA
0177:004048A9 4A DEC EDX
0177:004048AA 7417 JZ 004048C3
0177:004048AC 38FD CMP CH,BH
0177:004048AE 753A JNZ 004048EA
0177:004048B0 4A DEC EDX
0177:004048B1 7410 JZ 004048C3
0177:004048B3 81E30000FF00 AND EBX,00FF0000
0177:004048B9 81E10000FF00 AND ECX,00FF0000
0177:004048BF 39D9 CMP ECX,EBX
0177:004048C1 7527 JNZ 004048EA
0177:004048C3 01C0 ADD EAX,EAX
0177:004048C5 EB23 JMP SHORT 004048EA
0177:004048C7 8B57FC MOV EDX,[EDI-04]
0177:004048CA 29D0 SUB EAX,EDX
0177:004048CC EB1C JMP SHORT 004048EA
0177:004048CE 8B46FC MOV EAX,[ESI-04]
0177:004048D1 29D0 SUB EAX,EDX
0177:004048D3 EB15 JMP SHORT 004048EA
0177:004048D5 5A POP EDX
0177:004048D6 38D9 CMP CL,BL
0177:004048D8 7510 JNZ 004048EA
0177:004048DA 38FD CMP CH,BH
0177:004048DC 750C JNZ 004048EA
0177:004048DE C1E910 SHR ECX,10
0177:004048E1 C1EB10 SHR EBX,10
0177:004048E4 38D9 CMP CL,BL
0177:004048E6 7502 JNZ 004048EA
0177:004048E8 38FD CMP CH,BH
0177:004048EA 5F POP EDI
0177:004048EB 5E POP ESI
0177:004048EC 5B POP EBX
0177:004048ED C3 RET
下面做内存补丁,就用keymaker了:
修改地址:004AC302
修改长度:2
原始指令:7519
修改指令:7419,或9090,或7500都可以,我更喜欢7500.
做成内存注册机更好,可以看见密码!
怎么样,没有超过10分钟吧!
*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*
好了接下来介绍第二个软件:应用程序保护者―Program Protector v2.01
【软件说明】:名称:protect.exe
再看对他的介绍原文不动)
严重声明:该软件的使用者,请记录并保管好自己设定的密码,以免发生遗憾……(linf注:看了这篇文章你就知道了)
通过特殊算法加密、保护 windows应用程序,简单易用,对用户计算机知识无特别要求。功能:密码保护 windows 应用程序;维护加密程序列表;拖放程序文件和快捷方式添加到保护列;一体化帮助系统和提示功能;自我密码保护;自定义密码提示;完全兼容winXP;支持对被保护程序活动记录。
软件授权:免费软件
使用限制:无限制
文件大小:629 KB
使用平台:Windows 9x/Me/NT/2000/XP
开 发 者:Karlis Blumentals
这个软件启动时,也要输入密码.破解的方法和上面的那个软件一模一样,连按几下都一样.按14次F12,再按1次F10,就来到这里:
0177:004B0F3C 8B15DC394B00 MOV EDX,[004B39DC] <-- 还用说吗?
0177:004B0F42 8B12 MOV EDX,[EDX] <-- 不用说了
0177:004B0F44 E8433EF5FF CALL 00404D8C
0177:004B0F49 7504 JNZ 004B0F4F
0177:004B0F4B B301 MOV BL,01
0177:004B0F4D EB46 JMP SHORT 004B0F95 通向正确的大路
0177:004B0F4F 6A10 PUSH BYTE +10
0177:004B0F51 8D55E4 LEA EDX,[EBP-1C]
0177:004B0F54 A1243E4B00 MOV EAX,[004B3E24]
0177:004B0F59 E8DE58F5FF CALL 0040683C
0177:004B0F5E 8B45E4 MOV EAX,[EBP-1C]
0177:004B0F61 E8DA3EF5FF CALL 00404E40
0177:004B0F66 50 PUSH EAX
0177:004B0F67 A1FC4F4B00 MOV EAX,[004B4FFC]
0177:004B0F6C E8CF3EF5FF CALL 00404E40
0177:004B0F71 8BC8 MOV ECX,EAX
0177:004B0F73 A1303C4B00 MOV EAX,[004B3C30]
0177:004B0F78 8B00 MOV EAX,[EAX]
0177:004B0F7A 5A POP EDX
0177:004B0F7B E8B031FCFF CALL 00474130 错误了
为了研究一下进入比较的call看看:
0177:00404D8C 53 PUSH EBX
0177:00404D8D 56 PUSH ESI
0177:00404D8E 57 PUSH EDI
0177:00404D8F 89C6 MOV ESI,EAX
0177:00404D91 89D7 MOV EDI,EDX
0177:00404D93 39D0 CMP EAX,EDX
0177:00404D95 0F848F000000 JZ NEAR 00404E2A
0177:00404D9B 85F6 TEST ESI,ESI
0177:00404D9D 7468 JZ 00404E07
0177:00404D9F 85FF TEST EDI,EDI
0177:00404DA1 746B JZ 00404E0E
0177:00404DA3 8B46FC MOV EAX,[ESI-04]
0177:00404DA6 8B57FC MOV EDX,[EDI-04]
0177:00404DA9 29D0 SUB EAX,EDX
0177:00404DAB 7702 JA 00404DAF
0177:00404DAD 01C2 ADD EDX,EAX
0177:00404DAF 52 PUSH EDX
0177:00404DB0 C1EA02 SHR EDX,02
0177:00404DB3 7426 JZ 00404DDB
0177:00404DB5 8B0E MOV ECX,[ESI]
0177:00404DB7 8B1F MOV EBX,[EDI]
0177:00404DB9 39D9 CMP ECX,EBX
0177:00404DBB 7558 JNZ 00404E15
0177:00404DBD 4A DEC EDX
0177:00404DBE 7415 JZ 00404DD5
0177:00404DC0 8B4E04 MOV ECX,[ESI+04]
0177:00404DC3 8B5F04 MOV EBX,[EDI+04]
0177:00404DC6 39D9 CMP ECX,EBX
0177:00404DC8 754B JNZ 00404E15
0177:00404DCA 83C608 ADD ESI,BYTE +08
0177:00404DCD 83C708 ADD EDI,BYTE +08
0177:00404DD0 4A DEC EDX
0177:00404DD1 75E2 JNZ 00404DB5
0177:00404DD3 EB06 JMP SHORT 00404DDB
0177:00404DD5 83C604 ADD ESI,BYTE +04
0177:00404DD8 83C704 ADD EDI,BYTE +04
0177:00404DDB 5A POP EDX
0177:00404DDC 83E203 AND EDX,BYTE +03
0177:00404DDF 7422 JZ 00404E03
0177:00404DE1 8B0E MOV ECX,[ESI]
0177:00404DE3 8B1F MOV EBX,[EDI]
0177:00404DE5 38D9 CMP CL,BL
0177:00404DE7 7541 JNZ 00404E2A
0177:00404DE9 4A DEC EDX
0177:00404DEA 7417 JZ 00404E03
0177:00404DEC 38FD CMP CH,BH
0177:00404DEE 753A JNZ 00404E2A
0177:00404DF0 4A DEC EDX
0177:00404DF1 7410 JZ 00404E03
0177:00404DF3 81E30000FF00 AND EBX,00FF0000
0177:00404DF9 81E10000FF00 AND ECX,00FF0000
0177:00404DFF 39D9 CMP ECX,EBX
0177:00404E01 7527 JNZ 00404E2A
0177:00404E03 01C0 ADD EAX,EAX
0177:00404E05 EB23 JMP SHORT 00404E2A
0177:00404E07 8B57FC MOV EDX,[EDI-04]
0177:00404E0A 29D0 SUB EAX,EDX
0177:00404E0C EB1C JMP SHORT 00404E2A
0177:00404E0E 8B46FC MOV EAX,[ESI-04]
0177:00404E11 29D0 SUB EAX,EDX
0177:00404E13 EB15 JMP SHORT 00404E2A
0177:00404E15 5A POP EDX
0177:00404E16 38D9 CMP CL,BL
0177:00404E18 7510 JNZ 00404E2A
0177:00404E1A 38FD CMP CH,BH
0177:00404E1C 750C JNZ 00404E2A
0177:00404E1E C1E910 SHR ECX,10
0177:00404E21 C1EB10 SHR EBX,10
0177:00404E24 38D9 CMP CL,BL
0177:00404E26 7502 JNZ 00404E2A
0177:00404E28 38FD CMP CH,BH
0177:00404E2A 5F POP EDI
0177:00404E2B 5E POP ESI
0177:00404E2C 5B POP EBX
0177:00404E2D C3 RET
查看比较过程的机器码后发现,和前一个程序的比较过程的机器码竟是完全一样的!
会不会有一种关系?是不是一种通用的加密形式?请高手看一下,能把结果贴过来,不胜感激!
另外本人对protect.exe保护过的程序,也用上面的方法几分钟就可以搞定,比较的过程也一模一样.分析来看有一下特点:
1.加密后的程序比源程序大了约4k字节;
2.被加密的程序代码并没有被压缩,还可以用资源工具查看,但是使用PEID查看是这样:
Program Protector XP 1.0 -> BluMental;
3.放在别的系统也起作用.
有明白保护原理的高手请指教一下,也让菜鸟飞得远些.
贴出被protect.exe保护过的程序的比较过程部分代码:
这个程序从00Axxxxx开始,和以往的004xxxxx不同,怪怪的?
0167:00A94928 53 PUSH EBX
0167:00A94929 56 PUSH ESI
0167:00A9492A 57 PUSH EDI
0167:00A9492B 89C6 MOV ESI,EAX 假的密码
0167:00A9492D 89D7 MOV EDI,EDX 被加密的程序的真密码
0167:00A9492F 39D0 CMP EAX,EDX
0167:00A94931 0F848F000000 JZ NEAR 00A949C6
0167:00A94937 85F6 TEST ESI,ESI
0167:00A94939 7468 JZ 00A949A3
0167:00A9493B 85FF TEST EDI,EDI
0167:00A9493D 746B JZ 00A949AA
0167:00A9493F 8B46FC MOV EAX,[ESI-04]
完。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)