这软件有三十天试用期,过了试用期就得用作者购买,而且在试用时关闭软件都会弹出一个对话框,非常不爽,于是破之。 用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) |