-
-
QuickSplit 1.0.321算法分析(适合算法入门)
-
发表于:
2005-3-4 22:04
6892
-
QuickSplit 1.0.321算法分析(适合算法入门)
【破解作者】 zmw1224[CZG][DFCG]
【作者邮箱】 zmw1224@yahoo.com.cn
【使用工具】 OD,C32Asm
【破解平台】 Win9x/NT/2000/XP
【软件名称】 QuickSplit 1.0.321
【下载地址】 http://www.morequick.com/QuickSplitGB.zip
【软件简介】 QuickSplit可以帮助你快捷的切割大文件,和组合切割好的文件.
你可以选择切割文件的大小和切割路径! 当你想组合切割出的文件时,你只要运行Quicksplit创建出的BAT文件就可以了.
【软件大小】 220 KB
【加壳方式】 无
【破解声明】 本笔记只用于学习交流, 初学Crack,只是感兴趣技术,没有其他目的, 如有不妥之处, 希望作者谅解.
--------------------------------------------------------------------------------
【破解内容】
先查壳无,用OD查不到可用字符串,C32Asm找到可用字符串“感谢你的注册……”双击打到相应地址->401FCB,用OD载入
找到401FCB处,向上看,找到程序入口处401ED0,在这下断,运行程序,输入相关信息:
用户名:zmw1224
注册码:12345678
确定后马上被断在下面:
00401ED0 . 6A FF push -1 断在这。
00401ED2 . 68 A8554200 push QuickSpl.004255A8 ; SE handler installation
00401ED7 . 64:A1 00000000 mov eax,dword ptr fs:[0]
00401EDD . 50 push eax
00401EDE . 64:8925 00000000 mov dword ptr fs:[0],esp
00401EE5 . 83EC 0C sub esp,0C
00401EE8 . A1 48124300 mov eax,dword ptr ds:[431248]
00401EED . 55 push ebp
00401EEE . 56 push esi
00401EEF . 57 push edi
00401EF0 . 8BF1 mov esi,ecx
00401EF2 . 894424 14 mov dword ptr ss:[esp+14],eax
00401EF6 . C74424 20 0000000>mov dword ptr ss:[esp+20],0
00401EFE . 894424 0C mov dword ptr ss:[esp+C],eax
00401F02 . 8D4424 14 lea eax,dword ptr ss:[esp+14]
00401F06 . 8D8E 98000000 lea ecx,dword ptr ds:[esi+98]
00401F0C . 50 push eax
00401F0D . C64424 24 01 mov byte ptr ss:[esp+24],1
00401F12 . E8 93A50100 call QuickSpl.0041C4AA ; 获取机器码
00401F17 . 8D4C24 0C lea ecx,dword ptr ss:[esp+C]
00401F1B . 51 push ecx
00401F1C . 8D4E 5C lea ecx,dword ptr ds:[esi+5C]
00401F1F . E8 86A50100 call QuickSpl.0041C4AA
00401F24 . 8B5424 0C mov edx,dword ptr ss:[esp+C] ; 获取假注册码。
00401F28 . 837A F8 01 cmp dword ptr ds:[edx-8],1 ; 假注册码是否小于等于1
00401F2C . 0F8E B0000000 jle QuickSpl.00401FE2
00401F32 . 8B4424 14 mov eax,dword ptr ss:[esp+14] ; 机器码送到EAX里,EAX=44106898
00401F36 . 50 push eax ; EAX入栈
00401F37 . E8 CB980000 call QuickSpl.0040B807 ; 这个CALL把机器码十进制数转化为十六进制数。44106898->2A10492
00401F3C . 8B4C24 10 mov ecx,dword ptr ss:[esp+10]
00401F40 . 8BF8 mov edi,eax
00401F42 . 51 push ecx
00401F43 . E8 BF980000 call QuickSpl.0040B807 ; 这个CALL把假注册码十进制数转化为十六进制数。12345678->BC614E
00401F48 . 57 push edi ; 有兴趣学习朋友可进上面两个CALL看看,我就不多说废话了。
00401F49 . 8BE8 mov ebp,eax
00401F4B . E8 60FFFFFF call QuickSpl.00401EB0 ; 关键算法进。
00401F50 . 83C4 0C add esp,0C
00401F53 . 3BC5 cmp eax,ebp ; 比较正假码,不对就OVER了。
00401F55 . 0F85 87000000 jnz QuickSpl.00401FE2 ; 正确的话,写入文件里。
00401F5B . 68 03040000 push 403
00401F60 . 8BCE mov ecx,esi
00401F62 . E8 91C10100 call QuickSpl.0041E0F8
00401F67 . 8BF8 mov edi,eax
00401F69 . 6A 00 push 0
00401F6B . 8BCF mov ecx,edi
00401F6D . E8 88C30100 call QuickSpl.0041E2FA
关键算法处:
00401EB0 /$ 8B4424 04 mov eax,dword ptr ss:[esp+4] ; 把转化后的机器码送到EAX里。
00401EB4 |. 35 E548B401 xor eax,1B448E5 ; EAX=EAX xor 1B448E5
00401EB9 |. 05 00342D02 add eax,22D3400 ; EAX=EAX+22D3400
00401EBE |. 79 05 jns short QuickSpl.00401EC5 ; SF=0,转至标号处执行
00401EC0 |. 99 cdq
00401EC1 |. 33C2 xor eax,edx
00401EC3 |. 2BC2 sub eax,edx
00401EC5 \> C3 retn
--------------------------------------------------------------------------------
【破解总结】
算法比较简单,用户名和注册码无关,把机器码转化成十六进制数得A,A=A xor 0x1B448E5 ,B=A+0x22D3400
再把B转化回十进制数就是正确的注册码了。
--------------------------------------------------------------------------------
【算法注册机】
#include <stdio.h>
main()
{
int c;
printf("Crack by zmw1224[CZG][DFCG]\n");
printf("___________________________\n");
printf("Please input your CODE:");
scanf("%d",&c);
c^=0x1B448E5;
c+=0x22D3400;
printf("\nYour Key is:%d\n",c);
}
--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课