OD之URLegal破解

来源:互联网 发布:js鼠标移动线条汇聚 编辑:程序博客网 时间:2024/04/27 17:43

前几天研究OD破解软件,发现一篇不错的新手教程。记下以供慢慢参考

原帖地址:http://www.crackjmg.com/a/jishujiaoliu/2010/0422/54.html

================================================================

##########################################################

 

时间:2010-04-22 13:17来源:未知 作者:admin 点击:100次
这软件有三十天试用期,过了试用期就得用作者购买,而且在试用时关闭软件都会弹出一个对话框,非常不爽,于是破之。 用PEID查壳为Microsoft Visual C++ 6.0,扫描算法为TWOFISH。程序无壳。 试注册程序,输入crackjmg,注册码:1122334455,弹出错误对话框提示

这软件有三十天试用期,过了试用期就得用作者购买,而且在试用时关闭软件都会弹出一个对话框,非常不爽,于是破之。
    用PEID查壳为Microsoft Visual C++ 6.0,扫描算法为TWOFISH。程序无壳。
    试注册程序,输入crackjmg,注册码:1122334455,弹出错误对话框提示:"Name / Code mis-match. Try again."

 

注册失败对话框
注册失败对话框
 

    用OD加载,运行程序,搜索上面的字符串,并双击来到代码处:

00402603    83F8 01           cmp eax,1
00402606    0F85 D5000000     jnz Urlegal.004026E1
0040260C    E8 7FEEFFFF       call Urlegal.00401490
00402611    8945 84           mov dword ptr ss:[ebp-7C],eax
00402614    51                push ecx
00402615    8BCC              mov ecx,esp
00402617    8965 80           mov dword ptr ss:[ebp-80],esp
0040261A    8D45 F0           lea eax,dword ptr ss:[ebp-10]
0040261D    50                push eax
0040261E    E8 71450100       call <jmp.&MFC42.#CString::CString_535>
00402623    8985 78FFFFFF     mov dword ptr ss:[ebp-88],eax
00402629    8D4D 88           lea ecx,dword ptr ss:[ebp-78]
0040262C    51                push ecx
0040262D    8B4D 84           mov ecx,dword ptr ss:[ebp-7C]
00402630    81C1 D0000000     add ecx,0D0
00402636    E8 AE310000       call Urlegal.004057E9
0040263B    8985 74FFFFFF     mov dword ptr ss:[ebp-8C],eax
00402641    C645 FC 01        mov byte ptr ss:[ebp-4],1
00402645    8D4D 88           lea ecx,dword ptr ss:[ebp-78]
00402648    E8 C3050000       call Urlegal.00402C10
0040264D    85C0              test eax,eax
0040264F    75 76             jnz short Urlegal.004026C7      //此处跳到注册失败
00402651    8D55 EC           lea edx,dword ptr ss:[ebp-14]
00402654    52                push edx
00402655    8D45 88           lea eax,dword ptr ss:[ebp-78]
00402658    50                push eax
00402659    E8 02060000       call Urlegal.00402C60
0040265E    25 FF000000       and eax,0FF
00402663    85C0              test eax,eax
00402665    74 60             je short Urlegal.004026C7     //此处跳到注册失败
00402667    8D4D F0           lea ecx,dword ptr ss:[ebp-10]
0040266A    E8 E1050000       call Urlegal.00402C50
0040266F    50                push eax
00402670    68 04E24100       push Urlegal.0041E204                    ; name
00402675    68 0CE24100       push Urlegal.0041E20C                    ; user
0040267A    8B4D 84           mov ecx,dword ptr ss:[ebp-7C]
0040267D    81C1 C4000000     add ecx,0C4
00402683    E8 AD450000       call Urlegal.00406C35
00402688    8D4D EC           lea ecx,dword ptr ss:[ebp-14]
0040268B    E8 C0050000       call Urlegal.00402C50
00402690    50                push eax
00402691    68 14E24100       push Urlegal.0041E214                    ; code
00402696    68 1CE24100       push Urlegal.0041E21C                    ; user
0040269B    8B4D 84           mov ecx,dword ptr ss:[ebp-7C]
0040269E    81C1 C4000000     add ecx,0C4
004026A4    E8 8C450000       call Urlegal.00406C35
004026A9    8B4D 84           mov ecx,dword ptr ss:[ebp-7C]
004026AC    81C1 D0000000     add ecx,0D0
004026B2    E8 72170000       call Urlegal.00403E29
004026B7    6A 00             push 0
004026B9    6A 00             push 0     //注册成功
004026BB    68 24E24100       push Urlegal.0041E224                    ; thank you for registering!
004026C0    E8 B1440100       call <jmp.&MFC42.#AfxMessageBox_1200>
004026C5    EB 0E             jmp short Urlegal.004026D5
004026C7    6A 00             push 0
004026C9    6A 00             push 0
004026CB    68 40E24100       push Urlegal.0041E240                    ; name / code mis-match. try again.
004026D0    E8 A1440100       call <jmp.&MFC42.#AfxMessageBox_1200>
004026D5    C645 FC 00        mov byte ptr ss:[ebp-4],0
004026D9    8D4D 88           lea ecx,dword ptr ss:[ebp-78]

往上查找关键跳转,发现有两处00402665 和0040264F,于是在这两处F2下断,点击注册按钮,再次输入上面的注册信息。F9运行程

序,中断在第一处,发现第一处没有跳转没有实现,于是单步到第二处,此时跳转已实现,NOP该行的代码。运行程序,弹出对话框

提示:thank you for registering!(注册成功)。

注册成功
注册成功
 


关闭程序,再次运行,发现程序还是未注册,看样子爆破不能解决问题,得分析算法了。
    继续用OD加载,运行程序,再次注册,在刚刚的第二个跳转上面的CALL下断,输入同样的注册信息,中断下来,此时,在堆栈

中发现一ASCII值,极度怀疑此程序是明码比较,于是拷贝此段代码出来,如果真是明码比较,那就不需要分析算法了。
堆栈提示:
0012FB1C   0012FB38  |Arg1 = 0012FB38
0012FB20   0012FB9C  /Arg2 = 0012FB9C
0012FB24   0012FB38
0012FB28   0012FB20
0012FB2C   0039BC38
0012FB30   0012FB20
0012FB34   00422358  Urlegal.00422358
0012FB38   0039E620  ASCII "DEDEB4FC213B264A0728F4D65B16C731"
0012FB3C   0041A4E0  Urlegal.0041A4E0

再次运行程序,点注册按钮:
输入用户名:crackjmg
注册码:DEDEB4FC213B264A0728F4D65B16C731

注册成功,再次检查,注册按钮变灰了,注册成功。

总结:
此程序直接修改跳转也就是爆破解不能解决问题,不过程序的注册码是明码比较,所以也是非常简单的。

(责任编辑:admin)

原创粉丝点击