-
-
[原创]DiLA 0.5的破解
-
发表于:
2006-8-6 21:21
5271
-
【文章标题】: DiLA 0.5的破解
【文章作者】: jdxyw
【软件名称】: DiLA 0.5
【下载地址】: http://bbs.pediy.com/showthread.php?s=&threadid=29055
【加壳方式】: 无
【编写语言】: MASM
【使用工具】: OD peid
【操作平台】: WIN XP
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
首先是查壳,这个crack无壳
点击运行,出现一个对话框,由此,我们可以从对话框,或者是字符串下手都可以
运行OD,将DiLA 0.5载入,运行,随便输入一个序列号
下断点到此处
00401046 |. E8 8D000000 CALL JMP.&user32.GetDlgItemInt ; 这个是获取序列号,由函数名可知,序列号应该为数字
0040104B |. 50 PUSH EAX ;
0040104C |. 68 BF104000 PUSH v5.004010BF
00401051 |. E8 48000000 CALL v5.0040109E ; 这个是个关键处,要跟入
00401056 |. 83F8 01 CMP EAX,1 ;
00401059 |. 74 16 JE SHORT v5.00401071
0040105B |. 6A 10 PUSH 10 ; /Style = MB_OK|MB_ICONHAND|MB_APPLMODAL
0040105D |. 68 00304000 PUSH v5.00403000 ; |Title = "Fishing with DiLA v0.5"
00401062 |. 68 17304000 PUSH v5.00403017 ; |Text = "Sorry, wrong code!"
00401067 |. FF75 08 PUSH [ARG.1] ; |hOwner = 00401000
0040106A |. E8 6F000000 CALL JMP.&user32.MessageBoxA ; \MessageBoxA
0040106F |. EB 14 JMP SHORT v5.00401085
00401071 |> 6A 40 PUSH 40 ; /Style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL
00401073 |. 68 00304000 PUSH v5.00403000 ; |Title = "Fishing with DiLA v0.5"
00401078 |. 68 2A304000 PUSH v5.0040302A ; |Text = "Success! Thank you for playing ;)"
0040107D |. FF75 08 PUSH [ARG.1] ; |hOwner = 00401000
00401080 |. E8 59000000 CALL JMP.&user32.MessageBoxA ; \MessageBoxA
按F7进入下列代码
0040109E /$ 83C4 10 ADD ESP,10
004010A1 |. 83EC 0C SUB ESP,0C
004010A4 |. 66:35 AFDE XOR AX,0DEAF
004010A8 |. C1C0 10 ROL EAX,10
004010AB |. BB CFFFDA3A MOV EBX,3ADAFFCF
004010B0 |. 3BC3 CMP EAX,EBX
004010B2 |. 75 08 JNZ SHORT v5.004010BC
004010B4 |. B8 01000000 MOV EAX,1 在上面代码的选择,是以EAX是否为一来判断序列号的正确
因此,可以得出,EBX=3ADAFFCF就是序列号经过一番运算之后
用来验证的。而EAX就是要经过一系列的运算来等于EBX。从而实现
序列号的验证
004010B9 |. 33DB XOR EBX,EBX
004010BB |. C3 RETN
004010BC |> 33DB XOR EBX,EBX
004010BE \. C3 RETN
004010BF . 58 POP EAX ; v5.00401056
004010C0 . 80C4 20 ADD AH,20
004010C3 . F7D8 NEG EAX
004010C5 . 68 A1104000 PUSH v5.004010A1
004010CA . C3 RETN
根据EAX的运算顺序,我们可以从已知的EBX的值,逆向推出EAX的原始值
MOV EBX,3ADAFFCF
ROR EBX,10
XOR BX,0DEAF
NEG EBX
SUB BH,20
经过以上的运算,EBX=0030FB8BH=3210123d 所以序列号为321012
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!
2006年08月06日 21:17:24
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!