用SOFTICE破解WINZIP的过程_第1页
用SOFTICE破解WINZIP的过程_第2页
用SOFTICE破解WINZIP的过程_第3页
用SOFTICE破解WINZIP的过程_第4页
用SOFTICE破解WINZIP的过程_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、用SOFTICE破解WINZIP的过程日期:2004年3月10日 作者:清风网络学院 查看:大字体 中字体 小字体同时按下键盘Ctrl+D会有惊喜发生 破解步骤:1. 用softice载入windows(通过CTRL+D来检查softice是否已经准备好,按F5退出softice);2. 运行winzip,选择“help”下的“Enter Registration Code.”;3. 在“Name:”中输入:KraneXH(随意),“Registration #:”中输入:12345678(随意);4. 用CTRL+D呼出s

2、oftice,下万能断点:bpx hmemcpy,按F5返回到winzip;5. 在winzip中选择“OK”,很快程序就被softice拦截下来(因为我们设置了断点bpx hmemcpy,当在winzip中选择“OK”时,winzip会通过hmemcpy这个功能去取我们输入的名字“KraneXH”和注册码“12345678”,softice检测到hmemcpy被调用,于是就中断winzip的运行,停留在winzip中调用hmemcpy的地方);6. 用 bd * 暂停刚才设置的断点 bpx hmemcp

3、y (为什么要暂停断点bpx hmemcpy呢?因为我们的目的是要在winzip取名字和注册码的时候中断它的运行,但是 bpx hmemcpy 这个断点并不是针对winzip才有效的,计算机里运行的程序都可能会随时调用它。由于我们在winzip中刚输入名字和注册码后设置断点 bpx hmemcpy ,此时winzip会马上去取我们输入的名字和注册码,所以我们能确保是中断在winzip程序中,通过 bd * 这个命令暂停断点 bpx hmemcpy ,能够防

4、止解密时被其它不相干的程序中断,影响解密的正常进行);7. 按F12键9次,返回到winzip的领空(因为刚才softice中断在hmemcpy中,这是windows系统区域,不能更改的,winzip仅仅是调用这个功能而已,所以我们必须要返回到winzip程序中才有用),来到下面的地方:.0167:00407F6DCALLUSER32!GetDlgItemTextA0167:00407F73PUSHEDI- 程序停留在这里,EDI指向“KraneXH”0167:00407F74CALL0043F89A0167:00407F79PUSHEDI0167:00407F7ACALL

5、0043F8C30167:00407F7FPOPECX0167:00407F80MOVESI, 0048CDA40167:00407F85POPECX0167:00407F86PUSH0B0167:00407F88PUSHESI0167:00407F89PUSH00000C810167:00407F8EPUSHEBX0167:00407F8FCALLUSER32!GetDlgItemTextA0167:00407F95PUSHESI- ESI指向“12345678”0167:00407F96CALL0043F89A0167:00407F9BPUSHESI0167:00407

6、F9CCALL0043F8C30167:00407FA1CMPBYTE PTR 0048CD78,00- 0048CD78指向“KraneXH”0167:00407FA8POPECX0167:00407FA9POPECX0167:00407FAAJZ004080050167:00407FACCMPBYTE PTR 0048CDA4,00- 0048CDA4指向“12345678”0167:00407FB3JZ004080050167:00407FB5CALL004079050167:00407FBATESTEAX,EAX0167:00

7、407FC3JZ00408005.8. 我们从调用hmemcpy的系统区域中返回到winzip领空时,程序停留在0167:00407F73PUSHEDI上,看看它上面的那条指令0167:00407F6DCALLUSER32!GetDlgItemTextA,这个CALL就是取我们输入数据的程序,也就是这个CALL让我们用 bpx hmemcpy 将winzip拦截了下来。既然winzip用这个CALL去取输入的东西,那么调用之后肯定会返回结果的,让我们来看看:用 D EDI ,观察softice的数据区,你会看到EDI指向的内

8、存区域的内容是我们输入的名字“KraneXH”;9. 从程序中可看出,下面不远的地方还有一个同样的地方调用USER32!GetDlgItemTextA,既0167:00407F8FCALLUSER32!GetDlgItemTextA这一行。按F10键多次,走到这个CALL的下一句停下,既程序停在0167:00407F95PUSHESI这条指令上,用 D ESI ,同样的我们可以看到ESI指向的内存区域的内容是我们输入的注册码“12345678”。现在winzip已经将我们输入的名字和注册码都取到,让我们来看看它下一步要做什么?10. 继续按F1

9、0多次,当程序走到0167:00407FA1CMPBYTE PTR 0048CD78,00时停下来,这条指令将内存0048CD78中的数据和00比较,然后根据比较结果判断程序走向。用 D 0048CD78,观察softice的数据区,我们可以看到0048CD78中的数据是“KraneXH”,现在我们知道这条指令的作用是判断我们输入的名字是否为空,如果没有输入任何东西,程序将会跳到00408005去;同样的,按F10走到0407FACCMPBYTE PTR 0048CDA4,00这行停下,然后用 D 0048CDA4

10、,可以看到0048CDA4中的数据是“12345678”。因为我们输入了名字和注册码,所以程序不会跳到 00408005去,程序检查输入的名字和注册码,如果任何一个没有输入(既其值为00),程序都会跳到00408005去,由此我们应该想到00408005很可能就是显示出错的地方,即当程序走到00408005 的时候,表示输入的名字和注册码是错误的;11. 按F10两次来到下面的那个CALL00407905(因为程序刚才停在0167:00407FACCMPBYTE PTR 0048CDA4,00上):.0167:00407FB5CALL00407

11、905- 程序停留在这里0167:00407FBATESTEAX,EAX0167:00407FC3JZ00408005.程序判断输入的名字和注册码是否为空后调用CALL00407905,这个CALL将结果返回到EAX中,程序根据EAX值判断走向。从程序可以知道,如果EAX的返回值是0,则程序会跳到00408005,就是刚才我们判断是有问题的地方。那么这个CALL倒底藏着什么猫腻呀?现在还不是很清楚,接着按F10两次来到JZ00408005停下。现在看看softice中的零(即Z)标志位,其值是零,所以程序将会跳到00408005去,我们姑且按F10跳到00408005去看个究竟:.0

12、167:00408005CALL004082A6- 程序停留在这里0167:0040800APUSH0000028E0167:0040800FCALL0043F5ED0167:00408014PUSHEAX0167:00408015PUSHEBX0167:00408016PUSH3D0167:00408018CALL00430025- 出现错误框0167:0040801DADDESP,100167:00408020INCDWORD PTR 00487AF80167:00408026CMPDWORD PTR 00487AF8,03

13、60;- 判断错误次数是否到了3次?0167:0040802DJNZ0040812C0167:00408033PUSH000167:00408035PUSHEBX0167:00408036CALLUSER32!EndDialog0167:0040803CJMP0040812C.12. 一直按F10走过0167:00408018CALL00430025,这是程序蹦出一个窗口,警告:Incomplete or incorrect information(不完整或不正确的信息),程序走到这里就已经很明朗了:如果程序在前面的时候跳到00408005来,

14、就表示输入的名字和注册码是错误的,所以刚才的那个0167:00407FB5CALL00407905一定是比较输入的注册码是否正确的地方,也就是里面肯定有将我们输入的注册码和正确的注册码相比较的地方,所以我们要进入CALL00430025里去看看。如果继续往CALL00430025下面的语句看的话,你会看到下面的几句:0167:00408020INCDWORD PTR 00487AF80167:00408026CMPDWORD PTR 00487AF8,030167:0040802DJNZ0040812C程序先将内存00487AF8处的值加1(其初始值为0

15、,可以在这条语句前用 D 00487AF8 查看),然后比较是否是3,如果不是就跳到0040812C,如果是则执行后面的0167:00408036CALLUSER32!EndDialog,其作用就是关闭对话框,也就是我们输入名字和注册码的窗口。由此我们可以看出此处程序的作用是检查错误输入名字、注册码的错误次数是否已经到了3次,如果到了3次,则关闭对话框,不允许再输入;如果少于3次,可有机会再次输入名字和注册码。13. 重复前面的步骤1到11,让程序停在0167:00407FB5CALL00407905上,然后按F8进入这个CALL里面去:.0167:00

16、4079D5PUSHEBP0167:004079D6PUSHEBP,ESP0167:004079D8SUBESP,000002080167:004079DEPUSHEBX0167:004079DFPUSHESI0167:004079E0XORESI,ESI0167:004079E2CMPBYTE PTR 0048CD78,000167:004079E9PUSHEDI0167:004079EAJZ00407A8A.14. 按F10键N次(我也不知道几次,你自己数一数吧_),一直来到下面的地方停下:.0167:00407A91LEAEAX,EBP-0140- 

17、;程序停留在这里0167:00407A97PUSHEAX0167:00407A98PUSHEDI- EDI指向输入的名字“KraneXH”0167:00407A99CALL00407B47 - 计算注册码0167:00407A9EMOVESI,0048CDA40167:00407AA3LEAEAX,EBP-01400167:00407AA9PUSHESI- ESI指向输入的注册码“12345678”0167:00407AAAPUSHEAX- EAX指向正确的注册码“5CFC0875”0167:00407AABCALL004692D00167:0

18、0407AB0ADDESP,100167:00407AB3NEGEAX0167:00407AB5SBBEAX,EAX0167:00407AB7INCEAX0167:00407AB8MOV00489FDC,EAX0167:00407ABDJNZ00407B270167:00407ABFLEAEAX,EBP-01400167:00407AC5PUSHEAX0167:00407AC6PUSHEDI- EDI指向输入的名字“KraneXH”0167:00407AC7CALL00407BE4 - 计算注册码0167:00407ACCLEAEAX,EBP-01400167:0

19、0407AD2PUSHESI- ESI指向输入的注册码“12345678”0167:00407AD3PUSHEAX- EAX指向正确的注册码“23804216”0167:00407AD4CALL004692D00167:00407AD9ADDESP,100167:00407ADCNEGEAX0167:00407ADESBBEAX,EAX0167:00407AE0INCEAX0167:00407AE1MOV00489FDC,EAX0167:00407AE6JNZ00407B27.15. 大家一定会问:为什么会在这里停下,而不是其它地方呢?因为我在前面的程序中已经用 D * 看过了,没有发现什么可疑的呀_!按F10走到0167:00407A99CALL00407B47处,用 D&#

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论