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

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

04102603    83F8 01           cmp eax,1
04102606    0F85 D5000000     jnz Urlegal.041026E1
0410260C    E8 7FEEFFFF       call Urlegal.04101490
04102611    8945 84           mov dword ptr ss:[ebp-7C],eax
04102614    51                push ecx
04102615    8BCC              mov ecx,esp
04102617    8965 80           mov dword ptr ss:[ebp-80],esp
0410261A    8D45 F0           lea eax,dword ptr ss:[ebp-10]
0410261D    50                push eax
0410261E    E8 71450100       call <jmp.&MFC42.#CString::CString_535>
04102623    8985 78FFFFFF     mov dword ptr ss:[ebp-88],eax
04102629    8D4D 88           lea ecx,dword ptr ss:[ebp-78]
0410262C    51                push ecx
0410262D    8B4D 84           mov ecx,dword ptr ss:[ebp-7C]
04102630    81C1 D0000000     add ecx,0D0
04102636    E8 AE310000       call Urlegal.041057E9
0410263B    8985 74FFFFFF     mov dword ptr ss:[ebp-8C],eax
04102641    C645 FC 01        mov byte ptr ss:[ebp-4],1
04102645    8D4D 88           lea ecx,dword ptr ss:[ebp-78]
04102648    E8 C3050000       call Urlegal.04102C10
0410264D    85C0              test eax,eax
0410264F    75 76             jnz short Urlegal.041026C7      //此处跳到注册失败
04102651    8D55 EC           lea edx,dword ptr ss:[ebp-14]
04102654    52                push edx
04102655    8D45 88           lea eax,dword ptr ss:[ebp-78]
04102658    50                push eax
04102659    E8 02060000       call Urlegal.04102C60
0410265E    25 FF000000       and eax,0FF
04102663    85C0              test eax,eax
04102665    74 60             je short Urlegal.041026C7     //此处跳到注册失败
04102667    8D4D F0           lea ecx,dword ptr ss:[ebp-10]
0410266A    E8 E1050000       call Urlegal.04102C50
0410266F    50                push eax
04102670    68 04E24100       push Urlegal.0041E204                    ; name
04102675    68 0CE24100       push Urlegal.0041E20C                    ; user
0410267A    8B4D 84           mov ecx,dword ptr ss:[ebp-7C]
0410267D    81C1 C4000000     add ecx,0C4
04102683    E8 AD450000       call Urlegal.04106C35
04102688    8D4D EC           lea ecx,dword ptr ss:[ebp-14]
0410268B    E8 C0050000       call Urlegal.04102C50
04102690    50                push eax
04102691    68 14E24100       push Urlegal.0041E214                    ; code
04102696    68 1CE24100       push Urlegal.0041E21C                    ; user
0410269B    8B4D 84           mov ecx,dword ptr ss:[ebp-7C]
0410269E    81C1 C4000000     add ecx,0C4
041026A4    E8 8C450000       call Urlegal.04106C35
041026A9    8B4D 84           mov ecx,dword ptr ss:[ebp-7C]
041026AC    81C1 D0000000     add ecx,0D0
041026B2    E8 72170000       call Urlegal.04103E29
041026B7    6A 00             push 0
041026B9    6A 00             push 0     //注册成功
041026BB    68 24E24100       push Urlegal.0041E224                    ; thank you for registering!
041026C0    E8 B1440100       call <jmp.&MFC42.#AfxMessageBox_1200>
041026C5    EB 0E             jmp short Urlegal.041026D5
041026C7    6A 00             push 0
041026C9    6A 00             push 0
041026CB    68 40E24100       push Urlegal.0041E240                    ; name / code mis-match. try again.
041026D0    E8 A1440100       call <jmp.&MFC42.#AfxMessageBox_1200>
041026D5    C645 FC 00        mov byte ptr ss:[ebp-4],0
041026D9    8D4D 88           lea ecx,dword ptr ss:[ebp-78]

往上查找关键跳转,发现有两处04102665 和0410264F,于是在这两处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

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

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

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