- UID
- 248
注册时间2005-3-6
阅读权限10
最后登录1970-1-1
周游历练

TA的每日心情 | 开心 2018-6-4 20:46 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
【破文标题】快刀斩乱麻 V2.1的破解(我菜,现在只会暴力破解)
【破解工具】OD,W32Dasm,UE
【保护方式】注册名+序号
【破文作者】crazysky
【组 织】PYG学员
【破解声明】我的破解很菜,不要笑我~~~!
【电 邮】[email protected]
【破解过程】
刚开始时,用OD加载它,Ctrl+N查找当前模块中的名称,但找了很久也没找对中断点!没办法,用W32DASM反汇编它看看有没有新的发现!用W32DASM反汇编它后,在参考->串式数据参考中发现了"注册码不正确"这一内容,双击它,来到它对应的代码区,我想这里应该就是提示注册不成功的函数开始处!
代码如下:
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401503(C)
|
:004014D7 8A0429 mov al, byte ptr [ecx+ebp]
:004014DA 83E07F and eax, 0000007F
:004014DD 69C03B2E0800 imul eax, 00082E3B
:004014E3 8BF0 mov esi, eax
:004014E5 B8E10217B8 mov eax, B81702E1
:004014EA F7EE imul esi
:004014EC 03D6 add edx, esi
:004014EE C1FA06 sar edx, 06
:004014F1 8BC2 mov eax, edx
:004014F3 C1E81F shr eax, 1F
:004014F6 03D0 add edx, eax
:004014F8 41 inc ecx
:004014F9 83F91E cmp ecx, 0000001E
:004014FC 8DBC177A078500 lea edi, dword ptr [edi+edx+0085077A]
:00401503 7CD2 jl 004014D7
:00401505 A1545C4100 mov eax, dword ptr [00415C54]
:0040150A 5D pop ebp
:0040150B 3BC7 cmp eax, edi
:0040150D EB14 jmp 00401523
:0040150F 53 push ebx
:00401510 53 push ebx
* Possible StringData Ref from Data Obj ->"注册码不正确!"
|
:00401511 6858504100 push 00415058
* Reference To: MFC42.Ordinal:04B0, Ord:04B0h
|
:00401516 E8AFBF0000 Call 0040D4CA ;提示注册不正确函数
:0040151B 393D545C4100 cmp dword ptr [00415C54], edi
:00401521 755C jne 0040157F
我想上面的就是注册检证过程!
所以我再用OD加载它,在
:004014D7 8A0429 mov al, byte ptr [ecx+ebp]
和:00401516 E8AFBF0000 Call 0040D4CA
下设下断点!
F9运行程序,输入用户名:crazysky 注册码:987654321
断在4014D7处,发现如下代码好像是注册算法过程:
:004014D7 8A0429 mov al, byte ptr [ecx+ebp] ;取用户名字符 ,一次取一个字母
:004014DA 83E07F and eax, 0000007F
:004014DD 69C03B2E0800 imul eax, 00082E3B
:004014E3 8BF0 mov esi, eax
:004014E5 B8E10217B8 mov eax, B81702E1
:004014EA F7EE imul esi
:004014EC 03D6 add edx, esi
:004014EE C1FA06 sar edx, 06
:004014F1 8BC2 mov eax, edx
:004014F3 C1E81F shr eax, 1F
:004014F6 03D0 add edx, eax
:004014F8 41 inc ecx
:004014F9 83F91E cmp ecx, 0000001E
:004014FC 8DBC177A078500 lea edi, dword ptr [edi+edx+0085077A] ;用户名经过1E次循环计算后得到的数据吧!(不知道对不对)
:00401503 7CD2 jl 004014D7 ;回到取用户名字符处,即是回到004014D7处.
:00401505 A1 545C4100 mov eax,dword ptr ds:[415C54] ;这里我猜应该是注册码运算后的检证码(是注册码算法运算后的数据吧?)
:0040150A 5D pop ebp
:0040150B 3BC7 cmp eax,edi ;用户名和注册码运算后得到的数据比较
:0040150D 74 14 je short x-cut.00401523 ;相等,则跳到401523处(注册成功处)
:0040150F 53 push ebx
:00401510 53 push ebx
:00401511 68 58504100 push x-cut.00415058
:00401516 E8 AFBF0000 call <jmp.&MFC42.#1200> ;提示注册不正确函数
:0040151B 393D 545C4100 cmp dword ptr ds:[415C54],edi
:00401521 75 5C jnz short x-cut.0040157F
:00401523 8D4C24 18 lea ecx,dword ptr ss:[esp+18]
:00401527 8D5424 0C lea edx,dword ptr ss:[esp+C]
以上分析不知道对不对?高手不要笑我哦~!
但是我找不到注册码算法的代码处,所以不知道它是怎样运算注册码的!
没办法,只好将用户名和注册码验证处暴力改成验证成功(即不论注册码对不对,都跳到注册成功处)
改成如下:
:0040150D 74 14 je short x-cut.00401523
:0040150D EB 14 jmp short x-cut.00401523
这样就不论注册码对不对都直接跳过!
所以,我用UE打开X-CUT.EXE
搜索代码5D3BC774145353685804100
将它改为5D3BC7EB145353685804100
保存,运行X-CUT.EXE随便输入用户名和注册码,注册->成功!
这是我第一次破解应用软件,有什么不对的请学长们多多指教~~~!!~~!~!
(PS:要请学长们帮我批改这次作业,3Q~~!)
[ Last edited by crazysky on 2005-3-15 at 04:55 PM ] |
|