首页
社区
课程
招聘
QuickSplit 1.0.321算法分析(适合算法入门)
发表于: 2005-3-4 22:04 6892

QuickSplit 1.0.321算法分析(适合算法入门)

2005-3-4 22:04
6892

【破解作者】 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直播授课

收藏
免费 7
支持
分享
最新回复 (2)
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
感谢你的文章, 谢谢!
2005-3-5 01:06
0
雪    币: 260
活跃值: (81)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
还有如此简单的算法?
2005-3-5 04:17
0
游客
登录 | 注册 方可回帖
返回
//