将其安装,在它的安装目录发现程序的主运行文件ztz-ie.exe,这就是我们需要破解的目标对象
1.看软件的说明书
2.运行此软件,试着输入你的姓名和任意注册码去注册,出现错误
提示信息"密码不正确!",将错误提示信息记下来
3.用language或fi侦测ztz-ie.exe,发现没有加壳
4.w32dasm黄金中文版(pw32dasmgold)反汇编
5.串式参考中找到错误提示信息或可能是注册正确的提示信息
"密码正确,注册成功!"怀疑可能是正确的提示信息
在该处双击鼠标左键,反复双击,发现只有一处调用,在pw32dasmgold主窗口发现下面的(######所标的地方)
6.分析
:0046C215 8B55F4 mov edx, dword ptr [ebp-0C]
:0046C218 58 pop eax
:0046C219 E87E7CF9FF call 00403E9C (关键call)
:0046C21E 7533 jne 0046C253 ******跳向错误处^^^^^^^^^(关键跳转)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
:0046C220 BA0B000000 mov edx, 0000000B
* Possible StringData Ref from Code Obj ->"Yire"
|
:0046C225 B8F8C24600 mov eax, 0046C2F8
:0046C22A E821270000 call 0046E950
:0046C22F 6A40 push 00000040
* Possible StringData Ref from Code Obj ->"祝贺你" ******注册成功的提示
|
:0046C231 B900C34600 mov ecx, 0046C300
* Possible StringData Ref from Code Obj ->"密码正确,注册成功!" ########
|
:0046C236 BA08C34600 mov edx, 0046C308
:0046C23B A1A0714700 mov eax, dword ptr [004771A0]
:0046C240 8B00 mov eax, dword ptr [eax]
:0046C242 E88D00FEFF call 0044C2D4
:0046C247 A148894700 mov eax, dword ptr [00478948]
:0046C24C E89FCCFDFF call 00448EF0
:0046C251 EB3B jmp 0046C28E
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0046C21E(C)
|^^^^^^^^^^^
:0046C253 A1C8724700 mov eax, dword ptr [004772C8]
:0046C258 83381E cmp dword ptr [eax], 0000001E
:0046C25B 7C0F jl 0046C26C
:0046C25D BA01000000 mov edx, 00000001
* Possible StringData Ref from Code Obj ->"Yire"
|
:0046C262 B8F8C24600 mov eax, 0046C2F8
:0046C267 E8E4260000 call 0046E950
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0046C25B(C)
|
:0046C26C 6A40 push 00000040
* Possible StringData Ref from Code Obj ->"警告" ******注册失败的提示
|
:0046C26E B920C34600 mov ecx, 0046C320
* Possible StringData Ref from Code Obj ->"密码不正确!"
|
:0046C273 BA28C34600 mov edx, 0046C328
:0046C278 A1A0714700 mov eax, dword ptr [004771A0]
:0046C27D 8B00 mov eax, dword ptr [eax]
:0046C27F E85000FEFF call 0044C2D4
:0046C284 A148894700 mov eax, dword ptr [00478948]
:0046C289 E862CCFDFF call 00448EF0
######所标的地方向上找第一个跳转,找到
:0046C21E 7533 jne 0046C253
程序之所以没有来到注册成功的地方主要就是因为这个跳转,
跳到了错误的地方(^^^^^^所标的地方)
46C21E处的跳转称为关键跳转,它上面的call为关键call
7.绿色光条停在关键跳转,即
:0046C21E 7533 jne 0046C253
在pw32dasmgold主窗口底部找到关键跳转的偏移地址(实际修改地址)
@:0046C21E@:Offset 006B61Eh h表示十六进制
实际修改地址是6B61E
8.用ultraedit打开ztz-ie.exe,ctrl-G,键入0x6b61e 0x表示十六进制
有两种改法
第一种 7533改为7433
或第二种 7533改为9090
为了担心改的不对,需保留原来的文件,故另存为ztz-ie1.exe
[修改原理]
第一种 输入的注册码不对时跳到出错的地方,正确时来到对的地方
修改后 输入的注册码不对时来到对的地方,正确时跳到出错的地方
第二种 干掉跳转的那一行指令,程序从上到下一路走来,只能来到对的地方,不可能跳到出错的地方
9.运行ztz-ie1.exe,任意输入姓名和注册码注册均能成功,破解完成
祝贺你,你第一次成功地破解了一个国产新软!记住这款软件的名称吧,ZTZ-IE网络浏览器.
迈向成功的第一步总是最难的.
作业
1.熟悉w32dasm破解的步骤
2.下载ZTZ-IE网络浏览器最新版(到 http://www.esoftware.com.cn 站点搜),跟着我一步一步破掉它