风之纹章(Proc)破解实战
Write by wakeme
软件名称:风之纹章(Proc)
版 本:V2.02 Build 275 原文件大小 281K,脱壳后700K左右。
简 介:
一个比较好用的小工具,可以用来杀进程、监控程序、定时备份等,驻留在任务栏上。
作 者:Wakeme
等 级:中级 (自己定的 :))
破解日期:2002年3月11日
破解工具:Trw2000 1.22 WDSM 89。3 冲击波2000 、PEid.
破解目的:学习追注册码
说 明:
本文目的在与学习破解技术,所有内容是在我的软件破解记录上整理出来的,只作技术交流。如若有纰漏,请各位多指教!
1、运行PEid ,将Proc.exe 拖到 PEid界面上 ,显示出 ASPack 2.000 -> Alexey Solodovnikov压缩。
2、启用冲击波,点击Track ,然后运行Proc.exe,显示入口 0048B900 。
3、启动trw 2000 ,通过Browse 找到文件,load !
中断后下命令bpx 48b900
g
会在程序的入口处停下来,然后下命令 pedump c:\crack\procdump.exe
就会生成可执行文件,经测试用makepe 命令也可以,另外用Softice 中的jmp eip ,然后用prodump等工具也可以。Trw2000中生成的可以直接运行,用prodump抓的需要修复PE文件头。
4、执行软件,填入任意注册码,报告“注册失败”,在看论坛精华的时候总发现别人喜欢暴力破解软件,其实在我这段时间的经验中,软件暴力破解的成功率很低,许多软件暴力破解后,功能也不完全,可见软件开发者的加密意识提高了。
5、拷贝备份后,用WDSM进行反汇编,在字符串参考中,找到“注册失败”和“注册成功”的提示。双击“注册成功”和“注册失败”分别到:
:0048AF28 8B45F8
mov eax, dword ptr [ebp-08]
:0048AF2B 8D55FC
lea edx, dword ptr [ebp-04]
:0048AF2E E831D5F7FF call 00408464
:0048AF33 8B45FC
mov eax, dword ptr [ebp-04]
* Possible StringData Ref from Code Obj ->"ph11.126.com"
|
:0048AF36 BA48B04800 mov edx,
0048B048
:0048AF3B E8B88FF7FF call 00403EF8
:0048AF40 7575
jne 0048AFB7 跳到注册失败的窗口 !!!
:0048AF42 8D55F0
lea edx, dword ptr [ebp-10]
:0048AF45 8B83D0040000 mov eax, dword
ptr [ebx+000004D0]
:0048AF4B E8845CFAFF call 00430BD4
:0048AF50 8B45F0
mov eax, dword ptr [ebp-10]
:0048AF53 8D55F4
lea edx, dword ptr [ebp-0C]
:0048AF56 E809D5F7FF call 00408464
:0048AF5B 8B45F4
mov eax, dword ptr [ebp-0C]
* Possible StringData Ref from Code Obj ->"1111-1111-1111-1111"
我最初理解为注册码的格式!
|
:0048AF5E BA60B04800 mov edx,
0048B060
:0048AF63 E8908FF7FF call 00403EF8
:0048AF68 754D
jne 0048AFB7 跳到注册失败的窗口 !!!
* Possible StringData Ref from Code Obj ->"进程管理小工具---ph11.126.com"
|
:0048AF6A BA7CB04800 mov edx,
0048B07C
:0048AF6F 8BC3
mov eax, ebx
:0048AF71 E88E5CFAFF call 00430C04
:0048AF76 33D2
xor edx, edx
:0048AF78 8B83CC040000 mov eax, dword
ptr [ebx+000004CC]
:0048AF7E 8B08
mov ecx, dword ptr [eax]
:0048AF80 FF515C
call [ecx+5C]
:0048AF83 33D2
xor edx, edx
:0048AF85 8B83D0040000 mov eax, dword
ptr [ebx+000004D0]
:0048AF8B 8B08
mov ecx, dword ptr [eax]
:0048AF8D FF515C
call [ecx+5C]
:0048AF90 6A40
push 00000040
* Possible StringData Ref from Code Obj ->"恭喜您"
|
:0048AF92 B99CB04800 mov ecx,
0048B09C
* Possible StringData Ref from Code Obj ->"注册成功!"
注意的地方 !!!
|
:0048AF97 BAA4B04800 mov edx,
0048B0A4
:0048AF9C A14CDA4800 mov eax,
dword ptr [0048DA4C]
:0048AFA1 8B00
mov eax, dword ptr [eax]
:0048AFA3 E8F440FCFF call 0044F09C
:0048AFA8 33D2
xor edx, edx
:0048AFAA 8B83D4040000 mov eax, dword
ptr [ebx+000004D4]
:0048AFB0 8B08
mov ecx, dword ptr [eax]
:0048AFB2 FF515C
call [ecx+5C]
:0048AFB5 EB4C
jmp 0048B003
* 被一个无条件跳转或条件跳转引用, 位置在地址: 注意的地方
!!!
|:0048AF40(C), :0048AF68(C)
这里是哪里 ,有两个地方会跳到这里 !!!
|
* Possible StringData Ref from Code Obj ->"进程管理小工具---未注册"
|
:0048AFB7 BAB8B04800 mov edx,
0048B0B8
:0048AFBC 8BC3
mov eax, ebx
:0048AFBE E8415CFAFF call 00430C04
:0048AFC3 B201
mov dl, 01
:0048AFC5 8B83CC040000 mov eax, dword
ptr [ebx+000004CC]
:0048AFCB 8B08
mov ecx, dword ptr [eax]
:0048AFCD FF515C
call [ecx+5C]
:0048AFD0 B201
mov dl, 01
:0048AFD2 8B83D0040000 mov eax, dword
ptr [ebx+000004D0]
:0048AFD8 8B08
mov ecx, dword ptr [eax]
:0048AFDA FF515C
call [ecx+5C]
:0048AFDD 6A10
push 00000010
* Possible StringData Ref from Code Obj ->"错误"
|
:0048AFDF B9D0B04800 mov ecx,
0048B0D0
* Possible StringData Ref from Code Obj ->"注册失败!" 注意的地方
!!!
|
:0048AFE4 BAD8B04800 mov edx,
0048B0D8
:0048AFE9 A14CDA4800 mov eax,
dword ptr [0048DA4C]
:0048AFEE 8B00
mov eax, dword ptr [eax]
:0048AFF0 E8A740FCFF call 0044F09C
:0048AFF5 8B83CC040000 mov eax, dword
ptr [ebx+000004CC]
:0048AFFB 8B10
mov edx, dword ptr [eax]
:0048AFFD FF92B0000000 call dword ptr
[edx+000000B0]
6、下面我们就用TRW2000来追注册码:
在软件的设置-注册中添入公司名:wakeme 序列号:1234-1234-1234-1234(格式来源与上面代码,其实别的格式、比如12345678也可以)
在TRW2000中下断点bpx 40af36 (第一个要跳到未注册的CALL前面)
软件中点注册、被拦截F10后
D edx 可以看到真正的注册码,我们F8跟进CALL
:00403EF8 53
push ebx
:00403EF9 56
push esi
:00403EFA 57
push edi
:00403EFB 89C6
mov esi, eax
:00403EFD 89D7
mov edi, edx
:00403EFF 39D0
cmp eax, edx 上面将我输入的名字和序列号装入,这里关键比较,用D命令可以看到真正的注册名
:00403F01 0F848F000000 je 00403F96
:00403F07 85F6
test esi, esi
:00403F09 7468
je 00403F73
:00403F0B 85FF
test edi, edi
:00403F0D 746B
je 00403F7A
:00403F0F 8B46FC
mov eax, dword ptr [esi-04]
:00403F12 8B57FC
mov edx, dword ptr [edi-04]
:00403F15 29D0
sub eax, edx
:00403F17 7702
ja 00403F1B
:00403F19 01C2
add edx, eax
CALL 返回后执行到这里:
:0048AF3B E8B88FF7FF call 00403EF8
:0048AF40 7575
jne 0048AFB7 跳到注册失败的窗口 !!!
:0048AF42 8D55F0
lea edx, dword ptr [ebp-10]
:0048AF45 8B83D0040000 mov eax, dword
ptr [ebx+000004D0]
在JNE 0048AFB7,我们下r fl z 让程序继续走到第二个比较的地方
:0048AF5E BA60B04800 mov edx,
0048B060
:0048AF63 E8908FF7FF call 00403EF8
:0048AF68 754D
jne 0048AFB7 跳到注册失败的窗口 !!!
在上面D EDX 可以看到正确注册码,我们F8跟入CALL 看看都有什么
:00403EF8 53
push ebx
:00403EF9 56
push esi
:00403EFA 57
push edi
:00403EFB 89C6
mov esi, eax
:00403EFD 89D7
mov edi, edx
:00403EFF 39D0
cmp eax, edx上面将我输入的名字和序列号装入,这里关键比较,用D命令可以看到真正的注册号码
:00403F01 0F848F000000 je 00403F96
:00403F07 85F6
test esi, esi
:00403F09 7468
je 00403F73
:00403F0B 85FF
test edi, edi
:00403F0D 746B
je 00403F7A
:00403F0F 8B46FC
mov eax, dword ptr [esi-04]
:00403F12 8B57FC
mov edx, dword ptr [edi-04]
:00403F15 29D0
sub eax, edx
:00403F17 7702
ja 00403F1B
:00403F19 01C2
add edx, eax
跟上面的一样,呵呵,原来这个软件的注册名和号码是固定的:
公司名 :ph11.126.com
注册号码:1111-1111-1111-1111
在软件的相同目录下,filemon 监测到 proc.ini 文件,其中有
[Registration]
Company=ph11.126.com
SequenceNum=1111-1111-1111-1111
项目,当该键被删除软件又被回复未注册版,该软件启动检查该项目,而爆破完后写入该项目的注册码不对,重起软件就无效了。
呵呵,作者真会和我们开玩笑 :)
区区一文,实在没什么水平,不过还是要感谢ajj.126.com 的站长,在我初学破解的这半个月中,我的几个问题他都尽力回答,让我很感动。
还有要感谢看雪老师的那本书,虽然5天就看完了,但的确是本好书,有些东西还需要我细心的体会。
这个世界上不存在什么天才,如果你觉得我是,就想想我那5天看书,看汇编的疯狂劲,就不会说天才这两个字字了,到目前位置,我最爱的破解是破那些CRACKME
,很有意思,光盘上的哪些CRACKME,我是这样破解的,先是全部暴力破解,后来又全部追出注册码,现在我已经写出部分的注册机了,还有通过keymake 的另外注册机显示注册码的。
过程就是先用WDSM 破个遍、在用SMARTCHECK来作VB的、用DEDE找DELPHI 的,用OLLDY破任何能跟踪的。。。
最后的感觉就是TR 还不如Softice,我们是在技巧上作文章,人家却主导了方向。
呵呵,希望TR的作者能看到
- 标 题:风之纹章(Proc)破解实战 我的第一篇水文 (9千字)
- 作 者:wakeme
- 时 间:2002-3-12 21:47:16
- 链 接:http://bbs.pediy.com