【文章标题】: Reaper-crack记录
【文章作者】: 壳狼
【软件名称】: Reaper
【下载地址】: http://bj.onlinedown.net/soft/2670.htm
【加壳方式】: 无
【保护方式】: 无
【编写语言】: Microsoft Visual C++ ver 5.0/6.0
【使用工具】: IDA,OD
【软件介绍】: 音频制作软件
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
本想找个壳练习一下,随便下了个国外的软件。没想到无壳,看看里面做的不错,忍不住练练crack。
准备:
1、PEID查壳,"Microsoft Visual C++ ver 5.0/6.0",算法工具搜索到"SHA".
2、IDA载入,增加crptopp51的sig,使用findcrpt v2插件找到SHA,标识函数后,生成map文件。
开始:
1、OD载入,下bp MessageBoxA断点,填写完注册信息后中断到MessageBoxA中,跟随到调用处如下:
00462106 . 6A 00 push 0
00462108 . 6A 01 push 1
0046210A . 50 push eax
0046210B . 52 push edx
0046210C . E8 6F6A0F00 call <regcheck>
00462111 . 83C4 10 add esp, 10
00462114 . 85C0 test eax, eax
00462116 . 74 37 je short <loc_46214F>
00462118 . 6A 00 push 0 ; /Style = MB_OK|MB_APPLMODAL
0046211A . 68 B8126600 push 006612B8 ; |Title = "Error"
0046211F . 50 push eax ; |Text = "Invalid Registration Key - perhaps it was mistyped?"
00462120 . 8B8424 100400>mov eax, dword ptr [esp+410] ; |
00462127 . 50 push eax ; |hOwner
00462128 . FF15 F4035E00 call dword ptr [<&USER32.MessageBoxA>>; \MessageBoxA
0046212E > > 33C0 xor eax, eax ; Default case of switch 00462063
00462130 . 81C4 00040000 add esp, 400
00462136 . C2 1000 retn 10
2、IDA查看上面的代码
.text:004620C0 lea eax, [esp+400h+idstr]
.text:004620C3 push 200h ; cchMax
.text:004620C8 push eax ; lpString
.text:004620C9 push 3EFh ; nIDDlgItem
.text:004620CE mov edx, [esp+40Ch+hDlg]
.text:004620D5 push edx ; hDlg
.text:004620D6 call ds:GetDlgItemTextA
.text:004620DC lea eax, [esp+400h+passstr]
.text:004620E3 push 200h ; cchMax
.text:004620E8 push eax ; lpString
.text:004620E9 push 3F0h ; nIDDlgItem
.text:004620EE mov edx, [esp+40Ch+hDlg]
.text:004620F5 push edx ; hDlg
.text:004620F6 call ds:GetDlgItemTextA
.text:004620FC lea edx, [esp+400h+idstr]
.text:004620FF lea eax, [esp+400h+passstr]
.text:00462106 push 0 ; char
.text:00462108 push 1 ; flag
.text:0046210A push eax ; PassString
.text:0046210B push edx ; IdString
.text:0046210C call regcheck
.text:00462111 add esp, 10h
.text:00462114 test eax, eax
.text:00462116 jz short loc_46214F
.text:00462118 push 0 ; uType
.text:0046211A push offset aError_0 ; "Error"
.text:0046211F push eax ; lpText
.text:00462120 mov eax, [esp+40Ch+hDlg]
.text:00462127 push eax ; hWnd
.text:00462128 call ds:MessageBoxA
.text:0046212E
.text:0046212E loc_46212E: ; CODE XREF: sub_462038+12j
.text:0046212E ; sub_462038+1Dj ...
.text:0046212E xor eax, eax
.text:00462130 add esp, 400h
.text:00462136 retn 10h
知道
0046210C . E8 6F6A0F00 call <regcheck> ;注册检查
00462116 . 74 37 je short <loc_46214F>;关键跳
3、尝试修改je为jmp,实验后不成功。
4、进入regcheck函数分析,发现里面使用了2个文件".../application/reaper/reaper.ini"和".../application/reaper/reaperinfo.dat"
跟踪后来到
.text:00558CD8 mov al, [esp+40Ch+arg_C] ; 0
.text:00558CDF test al, al
.text:00558CE1 jnz short loc_558D2A
.text:00558CE3 lea edx, [esp+40Ch+var_404]
.text:00558CE7 push edx
.text:00558CE8 push edi ; pass
.text:00558CE9 push esi ; id
.text:00558CEA call regcheck01
.text:00558CEF add esp, 0Ch
.text:00558CF2 test eax, eax
.text:00558CF4 jnz Invaildkey
5、进入regcheck01发现里面调用了sha算法,没跟过不熟悉,太复杂,退出函数。修改下面的跳转
.text:00558CF4 jnz Invaildkey
将jnz改为jz.保存修改。
6、运行后正常。
7、UE查看"reaperinfo.dat"文件,发现里面保存着用户名name和注册码info。分析前面的regcheck
可知,其每次启动均读取注册信息,执行检查,这也就是为什么第3步的跳转修改没有成功的原因。
reaperinfo.dat的name可随意修改。
--------------------------------------------------------------------------------
【经验总结】
第一次crack,好象老外不太注意保护哈。估计搞国外的比搞国内的容易。
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!
2008年02月08日 2:15:45
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)