-
-
第一篇破文
-
发表于: 2004-5-28 19:37 4664
-
【软件名称】 超级通讯王
【下载地址】 google搜索吧
【软件简介】 超级通讯王是为中国人精心设计的个人信息管理(PIM)软件。包括通讯录、网上即时聊天、手机短信、信息速查等功能。您可以用它来管理通讯录、网上点对点聊天、发送手机短信(正在制作)、以及自定义丰富的日常信息库。支持任意多文件同时管理,自由分组,全方位支持鼠标拖放。拥有超级通讯王,会极大加强您与他人的沟通能力。
【软件大小】 3.03Mb
【保护方式】 序列号保护,30次试用
【破解声明】 纯属技术交流,别无他意!
--------------------------------------------------------------------------------
【破解内容】
ollydbg载入主程序SuperPIM.exe
00452044 S> $ 6A 60 push 60 ;停在这里,F9运行
00452046 . 68 D83D4B00 push SuperPIM.004B3DD8
0045204B . E8 04160000 call SuperPIM.00453654
00452050 . BF 94000000 mov edi, 94
00452055 . 8BC7 mov eax, edi
00452057 . E8 14FAFFFF call SuperPIM.00451A70
0045205C . 8965 E8 mov dword ptr ss:[ebp-18], esp
出现一些错误提示,确定之,直到程序运行起来,如果没过期会提示你还可以使用几次,如果过期会直接要求你注册,确定之。选择帮助-注册会出现注册对话框程序会在安装时自动生成一个序列号,我机子上的序列号为‘V1L2T26FBL01VNJ’,我们输入试练码‘987654321’,注册。会提示你注册码错误,不要关闭该对话框。在ollydbg中按ALT+M,搜索‘987654321',有两处,第二处下内存访问断点,然后关闭对话框,再次确定之,拦下。
77DF70A9 8027 00 and byte ptr ds:[edi], 0 ; 中断在此
77DF70AC 8B4D 08 mov ecx, dword ptr ss:[ebp+8]
77DF70AF E8 1CBFFFFF call USER32.77DF2FD0
77DF70B4 8BF0 mov esi, eax
77DF70B6 8975 E4 mov dword ptr ss:[ebp-1C], esi
77DF70B9 85F6 test esi, esi
77DF70BB 0F84 84AA0200 je USER32.77E21B45
77DF70C1 56 push esi
77DF70C2 E8 B5D1FFFF call USER32.77DF427C
77DF70C7 85C0 test eax, eax
一路按F8
0040FB08 . 50 push eax
0040FB09 . E8 483B0200 call SuperPIM.00433656 ; 经过这里,看堆栈中出现 一大串字符(本文后面有简要说明),一定有问题,从新运行F7跟进
0040FB0E . 59 pop ecx
0040FB0F . 8D77 74 lea esi, dword ptr ds:[edi+74]
0040FB12 . 8B06 mov eax, dword ptr ds:[esi]
0040FB14 . 33DB xor ebx, ebx
0040FB16 . 3958 F4 cmp dword ptr ds:[eax-C], ebx
0040FB19 . 895D FC mov dword ptr ss:[ebp-4], ebx
0040FB1C . 74 6D je short SuperPIM.0040FB8B
进入后来到这里
00433669 |. 50 push eax
0043366A |. E8 FEFEFFFF call SuperPIM.0043356D ;获取序列号
0043366F |. 8365 FC 00 and dword ptr ss:[ebp-4], 0
00433673 |. 6A 14 push 14
00433675 |. 8D45 EC lea eax, dword ptr ss:[ebp-14] ;eax指向序列号
00433678 |. 50 push eax
00433679 |. 8D45 F0 lea eax, dword ptr ss:[ebp-10]
0043367C |. 50 push eax
0043367D |. E8 0791FFFF call SuperPIM.0042C789 ;F7跟进
00433682 |. 6A 28 push 28
00433684 |. 8D45 F0 lea eax, dword ptr ss:[ebp-10]
00433687 |. 50 push eax
00433688 |. FF75 08 push dword ptr ss:[ebp+8]
0043368B |. C645 FC 01 mov byte ptr ss:[ebp-4], 1
0043368F |. E8 F590FFFF call SuperPIM.0042C789
00433694 |. 8B4D F0 mov ecx, dword ptr ss:[ebp-10] ; ecx指向
00433697 |. 83C4 1C add esp, 1C
0043369A |. 83C1 F0 add ecx, -10
0043369D |. E8 56E5FCFF call SuperPIM.00401BF8
004336A2 |. 8B4D EC mov ecx, dword ptr ss:[ebp-14]
004336A5 |. 83C1 F0 add ecx, -10
004336A8 |. E8 4BE5FCFF call SuperPIM.00401BF8
004336AD |. 8B4D F4 mov ecx, dword ptr ss:[ebp-C]
004336B0 |. 8B45 08 mov eax, dword ptr ss:[ebp+8]
004336B3 |. 64:890D 00000000 mov dword ptr fs:[0], ecx
004336BA |. C9 leave
004336BB \. C3 retn
004336BC . B8 25764900 mov eax, SuperPIM.00497625
来到这里
0042C789 /$ B8 A16C4900 mov eax, SuperPIM.00496CA1
0042C78E |. E8 55330200 call SuperPIM.0044FAE8
0042C793 |. 83EC 14 sub esp, 14
0042C796 |. 53 push ebx
0042C797 |. 56 push esi
0042C798 |. 33DB xor ebx, ebx ;ebx=0
0042C79A |. 57 push edi
0042C79B |. 895D E0 mov dword ptr ss:[ebp-20], ebx
0042C79E |. E8 02640300 call SuperPIM.00462BA5
0042C7A3 |. 8B10 mov edx, dword ptr ds:[eax]
0042C7A5 |. 8BC8 mov ecx, eax
0042C7A7 |. FF52 0C call dword ptr ds:[edx+C]
0042C7AA |. 8D78 10 lea edi, dword ptr ds:[eax+10]
0042C7AD |. 897D F0 mov dword ptr ss:[ebp-10], edi
0042C7B0 |. 8B45 0C mov eax, dword ptr ss:[ebp+C]
0042C7B3 |. 8B00 mov eax, dword ptr ds:[eax] ;eax指向序列号
0042C7B5 |. 8B70 F4 mov esi, dword ptr ds:[eax-C] ;esi为序列号位数0xF
0042C7B8 |. 3BF3 cmp esi, ebx
0042C7BA |. 895D FC mov dword ptr ss:[ebp-4], ebx
0042C7BD |. 8975 E0 mov dword ptr ss:[ebp-20], esi
0042C7C0 |. 0F84 AD000000 je SuperPIM.0042C873
0042C7C6 |. 8B45 10 mov eax, dword ptr ss:[ebp+10]
0042C7C9 |. 3BC6 cmp eax, esi
0042C7CB |. 8945 E8 mov dword ptr ss:[ebp-18], eax
0042C7CE |. 7F 03 jg short SuperPIM.0042C7D3
0042C7D0 |. 8975 E8 mov dword ptr ss:[ebp-18], esi
0042C7D3 |> 395D E8 cmp dword ptr ss:[ebp-18], ebx
0042C7D6 |. 0F8E 97000000 jle SuperPIM.0042C873
0042C7DC |> 8BC3 /mov eax, ebx ;eax=0
0042C7DE |. 99 |cdq
0042C7DF |. F7FE |idiv esi
0042C7E1 |. 8B45 0C |mov eax, dword ptr ss:[ebp+C]
0042C7E4 |. 8B00 |mov eax, dword ptr ds:[eax]
0042C7E6 |. 53 |push ebx
0042C7E7 |. 8A0402 |mov al, byte ptr ds:[edx+eax] ;获取注册码最后3位
0042C7EA |. 8845 E4 |mov byte ptr ss:[ebp-1C], al
0042C7ED |. FF75 E4 |push dword ptr ss:[ebp-1C]
0042C7F0 |. E8 5AFEFFFF |call SuperPIM.0042C64F ;F7跟进
0042C7F5 |. 59 |pop ecx
0042C7F6 |. 59 |pop ecx
0042C7F7 |. 6A 2B |push 2B
0042C7F9 |. 33D2 |xor edx, edx
0042C7FB |. 59 |pop ecx
0042C7FC |. F7F1 |div ecx
0042C7FE |. 8BCA |mov ecx, edx ;ecx=edx
0042C800 |. 80C1 30 |add cl, 30 ;ecx=ecx+30
0042C803 |. 80F9 39 |cmp cl, 39 ecx>39 吗
0042C806 |. 884D EC |mov byte ptr ss:[ebp-14], cl
0042C809 |. 7E 0B |jle short SuperPIM.0042C816 ;小于则跳转
0042C80B |. 80F9 41 |cmp cl, 41 ;ecx<41吗
0042C80E |. 7D 06 |jge short SuperPIM.0042C816 ;大于则跳转
0042C810 |. 80C1 F6 |add cl, 0F6 ;ecx=ecx+0xF6
0042C813 |. 884D EC |mov byte ptr ss:[ebp-14], cl
0042C816 |> 3B5D 10 |cmp ebx, dword ptr ss:[ebp+10]
0042C819 |. 7D 0D |jge short SuperPIM.0042C828
0042C81B |. FF75 EC |push dword ptr ss:[ebp-14]
0042C81E |. 8D4D F0 |lea ecx, dword ptr ss:[ebp-10] ;ecx指向上面计算出来的16进制数
0042C821 |. E8 CCB1FEFF |call SuperPIM.004179F2 ; 这个call是将计算后的ecx的16进制数转换为字符形式,然后累送到eax中返回
0042C826 |. EB 3E |jmp short SuperPIM.0042C866
0042C828 |> 8BC3 |mov eax, ebx
0042C82A |. 99 |cdq
0042C82B |. F77D 10 |idiv dword ptr ss:[ebp+10]
0042C82E |. 0FBEC9 |movsx ecx, cl
0042C831 |. 6A 2B |push 2B
0042C833 |. 8BF2 |mov esi, edx
0042C835 |. 0FBE043E |movsx eax, byte ptr ds:[esi+edi]
0042C839 |. 8D4408 A0 |lea eax, dword ptr ds:[eax+ecx-60]
0042C83D |. 99 |cdq
0042C83E |. 59 |pop ecx
0042C83F |. F7F9 |idiv ecx
0042C841 |. 80C2 30 |add dl, 30
0042C844 |. 80FA 39 |cmp dl, 39
0042C847 |. 8855 EC |mov byte ptr ss:[ebp-14], dl
0042C84A |. 7E 0B |jle short SuperPIM.0042C857
0042C84C |. 80FA 41 |cmp dl, 41
0042C84F |. 7D 06 |jge short SuperPIM.0042C857
0042C851 |. 80C2 F6 |add dl, 0F6
0042C854 |. 8855 EC |mov byte ptr ss:[ebp-14], dl
0042C857 |> FF75 EC |push dword ptr ss:[ebp-14]
0042C85A |. 8D4D F0 |lea ecx, dword ptr ss:[ebp-10]
0042C85D |. 56 |push esi
0042C85E |. E8 A9FEFFFF |call SuperPIM.0042C70C
0042C863 |. 8B75 E0 |mov esi, dword ptr ss:[ebp-20]
0042C866 |> 8B7D F0 |mov edi, dword ptr ss:[ebp-10]
0042C869 |. 43 |inc ebx ;ebx为计数器
0042C86A |. 3B5D E8 |cmp ebx, dword ptr ss:[ebp-18] ;序列号处理完了吗
0042C86D |.^ 0F8C 69FFFFFF \jl SuperPIM.0042C7DC ;没有,继续处理
0042C873 |> 8B4D 08 mov ecx, dword ptr ss:[ebp+8] ;这里设断
0042C876 |. 8D45 F0 lea eax, dword ptr ss:[ebp-10]
0042C879 |. 50 push eax
0042C87A |. E8 5C57FDFF call SuperPIM.00401FDB
0042C87F |. 8D4F F0 lea ecx, dword ptr ds:[edi-10]
0042C882 |. E8 7153FDFF call SuperPIM.00401BF8
0042C887 |. 8B4D F4 mov ecx, dword ptr ss:[ebp-C]
0042C88A |. 8B45 08 mov eax, dword ptr ss:[ebp+8]
0042C88D |. 5F pop edi
0042C88E |. 5E pop esi
0042C88F |. 5B pop ebx
0042C890 |. 64:890D 00000000 mov dword ptr fs:[0], ecx
0042C897 |. C9 leave
0042C898 \. C3 retn
来到这里
0042C64F /$ 55 push ebp
0042C650 |. 8BEC mov ebp, esp
0042C652 |. 51 push ecx
0042C653 |. 0FB645 08 movzx eax, byte ptr ss:[ebp+8] 获取序列号的一个字符
0042C657 |. 8B4D 0C mov ecx, dword ptr ss:[ebp+C]
0042C65A |. 8945 FC mov dword ptr ss:[ebp-4], eax
0042C65D |. 8BC1 mov eax, ecx ;eax=ecx
0042C65F |. 0FAFC1 imul eax, ecx ;eax=eax*ecx
0042C662 |. 8D4440 07 lea eax, dword ptr ds:[eax+eax*2+7] ; eax=eax+eax*2+7
0042C666 |. 0FAFC1 imul eax, ecx ;eax=eax*ecx
0042C669 |. 83C0 0D add eax, 0D ;eax=eax+0xD
0042C66C |. 0FAFC1 imul eax, ecx ;eax=eax*ecx
0042C66F |. 56 push esi
0042C670 |. 8D71 05 lea esi, dword ptr ds:[ecx+5]
0042C673 |. 56 push esi
0042C674 |. 8945 08 mov dword ptr ss:[ebp+8], eax
0042C677 |. 8D45 08 lea eax, dword ptr ss:[ebp+8]
0042C67A |. 6A 04 push 4
0042C67C |. 50 push eax
0042C67D |. E8 6DFFFFFF call SuperPIM.0042C5EF
0042C682 |. 56 push esi
0042C683 |. 8D45 FC lea eax, dword ptr ss:[ebp-4]
0042C686 |. 6A 04 push 4
0042C688 |. 50 push eax
0042C689 |. E8 91FFFFFF call SuperPIM.0042C61F
0042C68E |. 8B45 08 mov eax, dword ptr ss:[ebp+8]
0042C691 |. 83C4 18 add esp, 18
0042C694 |. 3345 FC xor eax, dword ptr ss:[ebp-4]
0042C697 |. 5E pop esi
0042C698 |. C9 leave
0042C699 \. C3 retn
由于本人水平有限,不能将算法完全分析出来(对于我来说这个算法是在太长了),还请各位大虾指教,在0042c873处设断,F9运行,右上角看到一串字符就是注册码
如果继续跟踪你会发现,作者将计算出来的注册码又经过一定的运算,得到一大串字符,同时还将我们输入的试练码也进行了运算,得到一大串字符,然后用这两个字符串进行运算,判断注册码是否正确
0040FB37 . 83C4 14 add esp, 14
0040FB3A . 83C1 F0 add ecx, -10
0040FB3D . 8845 F3 mov byte ptr ss:[ebp-D], al
0040FB40 . E8 B320FFFF call SuperPIM.00401BF8 这里你会在内存中看到那两个字符串,这个call里进行了一些运算
0040FB45 . 385D F3 cmp byte ptr ss:[ebp-D], bl
0040FB48 . 74 41 je short SuperPIM.0040FB8B ; 不能跳,条就OVER了,如果你不想要注册码,爆破就行,那就在这里打个补丁吧,但软件每次启动会检查注册码,所以如果你这样作,每次必须重新输入假注册码,不完美,建议不要这样
0040FB4A . 53 push ebx
0040FB4B . 53 push ebx
最后感谢您看望本文,谢谢!
--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
【下载地址】 google搜索吧
【软件简介】 超级通讯王是为中国人精心设计的个人信息管理(PIM)软件。包括通讯录、网上即时聊天、手机短信、信息速查等功能。您可以用它来管理通讯录、网上点对点聊天、发送手机短信(正在制作)、以及自定义丰富的日常信息库。支持任意多文件同时管理,自由分组,全方位支持鼠标拖放。拥有超级通讯王,会极大加强您与他人的沟通能力。
【软件大小】 3.03Mb
【保护方式】 序列号保护,30次试用
【破解声明】 纯属技术交流,别无他意!
--------------------------------------------------------------------------------
【破解内容】
ollydbg载入主程序SuperPIM.exe
00452044 S> $ 6A 60 push 60 ;停在这里,F9运行
00452046 . 68 D83D4B00 push SuperPIM.004B3DD8
0045204B . E8 04160000 call SuperPIM.00453654
00452050 . BF 94000000 mov edi, 94
00452055 . 8BC7 mov eax, edi
00452057 . E8 14FAFFFF call SuperPIM.00451A70
0045205C . 8965 E8 mov dword ptr ss:[ebp-18], esp
出现一些错误提示,确定之,直到程序运行起来,如果没过期会提示你还可以使用几次,如果过期会直接要求你注册,确定之。选择帮助-注册会出现注册对话框程序会在安装时自动生成一个序列号,我机子上的序列号为‘V1L2T26FBL01VNJ’,我们输入试练码‘987654321’,注册。会提示你注册码错误,不要关闭该对话框。在ollydbg中按ALT+M,搜索‘987654321',有两处,第二处下内存访问断点,然后关闭对话框,再次确定之,拦下。
77DF70A9 8027 00 and byte ptr ds:[edi], 0 ; 中断在此
77DF70AC 8B4D 08 mov ecx, dword ptr ss:[ebp+8]
77DF70AF E8 1CBFFFFF call USER32.77DF2FD0
77DF70B4 8BF0 mov esi, eax
77DF70B6 8975 E4 mov dword ptr ss:[ebp-1C], esi
77DF70B9 85F6 test esi, esi
77DF70BB 0F84 84AA0200 je USER32.77E21B45
77DF70C1 56 push esi
77DF70C2 E8 B5D1FFFF call USER32.77DF427C
77DF70C7 85C0 test eax, eax
一路按F8
0040FB08 . 50 push eax
0040FB09 . E8 483B0200 call SuperPIM.00433656 ; 经过这里,看堆栈中出现 一大串字符(本文后面有简要说明),一定有问题,从新运行F7跟进
0040FB0E . 59 pop ecx
0040FB0F . 8D77 74 lea esi, dword ptr ds:[edi+74]
0040FB12 . 8B06 mov eax, dword ptr ds:[esi]
0040FB14 . 33DB xor ebx, ebx
0040FB16 . 3958 F4 cmp dword ptr ds:[eax-C], ebx
0040FB19 . 895D FC mov dword ptr ss:[ebp-4], ebx
0040FB1C . 74 6D je short SuperPIM.0040FB8B
进入后来到这里
00433669 |. 50 push eax
0043366A |. E8 FEFEFFFF call SuperPIM.0043356D ;获取序列号
0043366F |. 8365 FC 00 and dword ptr ss:[ebp-4], 0
00433673 |. 6A 14 push 14
00433675 |. 8D45 EC lea eax, dword ptr ss:[ebp-14] ;eax指向序列号
00433678 |. 50 push eax
00433679 |. 8D45 F0 lea eax, dword ptr ss:[ebp-10]
0043367C |. 50 push eax
0043367D |. E8 0791FFFF call SuperPIM.0042C789 ;F7跟进
00433682 |. 6A 28 push 28
00433684 |. 8D45 F0 lea eax, dword ptr ss:[ebp-10]
00433687 |. 50 push eax
00433688 |. FF75 08 push dword ptr ss:[ebp+8]
0043368B |. C645 FC 01 mov byte ptr ss:[ebp-4], 1
0043368F |. E8 F590FFFF call SuperPIM.0042C789
00433694 |. 8B4D F0 mov ecx, dword ptr ss:[ebp-10] ; ecx指向
00433697 |. 83C4 1C add esp, 1C
0043369A |. 83C1 F0 add ecx, -10
0043369D |. E8 56E5FCFF call SuperPIM.00401BF8
004336A2 |. 8B4D EC mov ecx, dword ptr ss:[ebp-14]
004336A5 |. 83C1 F0 add ecx, -10
004336A8 |. E8 4BE5FCFF call SuperPIM.00401BF8
004336AD |. 8B4D F4 mov ecx, dword ptr ss:[ebp-C]
004336B0 |. 8B45 08 mov eax, dword ptr ss:[ebp+8]
004336B3 |. 64:890D 00000000 mov dword ptr fs:[0], ecx
004336BA |. C9 leave
004336BB \. C3 retn
004336BC . B8 25764900 mov eax, SuperPIM.00497625
来到这里
0042C789 /$ B8 A16C4900 mov eax, SuperPIM.00496CA1
0042C78E |. E8 55330200 call SuperPIM.0044FAE8
0042C793 |. 83EC 14 sub esp, 14
0042C796 |. 53 push ebx
0042C797 |. 56 push esi
0042C798 |. 33DB xor ebx, ebx ;ebx=0
0042C79A |. 57 push edi
0042C79B |. 895D E0 mov dword ptr ss:[ebp-20], ebx
0042C79E |. E8 02640300 call SuperPIM.00462BA5
0042C7A3 |. 8B10 mov edx, dword ptr ds:[eax]
0042C7A5 |. 8BC8 mov ecx, eax
0042C7A7 |. FF52 0C call dword ptr ds:[edx+C]
0042C7AA |. 8D78 10 lea edi, dword ptr ds:[eax+10]
0042C7AD |. 897D F0 mov dword ptr ss:[ebp-10], edi
0042C7B0 |. 8B45 0C mov eax, dword ptr ss:[ebp+C]
0042C7B3 |. 8B00 mov eax, dword ptr ds:[eax] ;eax指向序列号
0042C7B5 |. 8B70 F4 mov esi, dword ptr ds:[eax-C] ;esi为序列号位数0xF
0042C7B8 |. 3BF3 cmp esi, ebx
0042C7BA |. 895D FC mov dword ptr ss:[ebp-4], ebx
0042C7BD |. 8975 E0 mov dword ptr ss:[ebp-20], esi
0042C7C0 |. 0F84 AD000000 je SuperPIM.0042C873
0042C7C6 |. 8B45 10 mov eax, dword ptr ss:[ebp+10]
0042C7C9 |. 3BC6 cmp eax, esi
0042C7CB |. 8945 E8 mov dword ptr ss:[ebp-18], eax
0042C7CE |. 7F 03 jg short SuperPIM.0042C7D3
0042C7D0 |. 8975 E8 mov dword ptr ss:[ebp-18], esi
0042C7D3 |> 395D E8 cmp dword ptr ss:[ebp-18], ebx
0042C7D6 |. 0F8E 97000000 jle SuperPIM.0042C873
0042C7DC |> 8BC3 /mov eax, ebx ;eax=0
0042C7DE |. 99 |cdq
0042C7DF |. F7FE |idiv esi
0042C7E1 |. 8B45 0C |mov eax, dword ptr ss:[ebp+C]
0042C7E4 |. 8B00 |mov eax, dword ptr ds:[eax]
0042C7E6 |. 53 |push ebx
0042C7E7 |. 8A0402 |mov al, byte ptr ds:[edx+eax] ;获取注册码最后3位
0042C7EA |. 8845 E4 |mov byte ptr ss:[ebp-1C], al
0042C7ED |. FF75 E4 |push dword ptr ss:[ebp-1C]
0042C7F0 |. E8 5AFEFFFF |call SuperPIM.0042C64F ;F7跟进
0042C7F5 |. 59 |pop ecx
0042C7F6 |. 59 |pop ecx
0042C7F7 |. 6A 2B |push 2B
0042C7F9 |. 33D2 |xor edx, edx
0042C7FB |. 59 |pop ecx
0042C7FC |. F7F1 |div ecx
0042C7FE |. 8BCA |mov ecx, edx ;ecx=edx
0042C800 |. 80C1 30 |add cl, 30 ;ecx=ecx+30
0042C803 |. 80F9 39 |cmp cl, 39 ecx>39 吗
0042C806 |. 884D EC |mov byte ptr ss:[ebp-14], cl
0042C809 |. 7E 0B |jle short SuperPIM.0042C816 ;小于则跳转
0042C80B |. 80F9 41 |cmp cl, 41 ;ecx<41吗
0042C80E |. 7D 06 |jge short SuperPIM.0042C816 ;大于则跳转
0042C810 |. 80C1 F6 |add cl, 0F6 ;ecx=ecx+0xF6
0042C813 |. 884D EC |mov byte ptr ss:[ebp-14], cl
0042C816 |> 3B5D 10 |cmp ebx, dword ptr ss:[ebp+10]
0042C819 |. 7D 0D |jge short SuperPIM.0042C828
0042C81B |. FF75 EC |push dword ptr ss:[ebp-14]
0042C81E |. 8D4D F0 |lea ecx, dword ptr ss:[ebp-10] ;ecx指向上面计算出来的16进制数
0042C821 |. E8 CCB1FEFF |call SuperPIM.004179F2 ; 这个call是将计算后的ecx的16进制数转换为字符形式,然后累送到eax中返回
0042C826 |. EB 3E |jmp short SuperPIM.0042C866
0042C828 |> 8BC3 |mov eax, ebx
0042C82A |. 99 |cdq
0042C82B |. F77D 10 |idiv dword ptr ss:[ebp+10]
0042C82E |. 0FBEC9 |movsx ecx, cl
0042C831 |. 6A 2B |push 2B
0042C833 |. 8BF2 |mov esi, edx
0042C835 |. 0FBE043E |movsx eax, byte ptr ds:[esi+edi]
0042C839 |. 8D4408 A0 |lea eax, dword ptr ds:[eax+ecx-60]
0042C83D |. 99 |cdq
0042C83E |. 59 |pop ecx
0042C83F |. F7F9 |idiv ecx
0042C841 |. 80C2 30 |add dl, 30
0042C844 |. 80FA 39 |cmp dl, 39
0042C847 |. 8855 EC |mov byte ptr ss:[ebp-14], dl
0042C84A |. 7E 0B |jle short SuperPIM.0042C857
0042C84C |. 80FA 41 |cmp dl, 41
0042C84F |. 7D 06 |jge short SuperPIM.0042C857
0042C851 |. 80C2 F6 |add dl, 0F6
0042C854 |. 8855 EC |mov byte ptr ss:[ebp-14], dl
0042C857 |> FF75 EC |push dword ptr ss:[ebp-14]
0042C85A |. 8D4D F0 |lea ecx, dword ptr ss:[ebp-10]
0042C85D |. 56 |push esi
0042C85E |. E8 A9FEFFFF |call SuperPIM.0042C70C
0042C863 |. 8B75 E0 |mov esi, dword ptr ss:[ebp-20]
0042C866 |> 8B7D F0 |mov edi, dword ptr ss:[ebp-10]
0042C869 |. 43 |inc ebx ;ebx为计数器
0042C86A |. 3B5D E8 |cmp ebx, dword ptr ss:[ebp-18] ;序列号处理完了吗
0042C86D |.^ 0F8C 69FFFFFF \jl SuperPIM.0042C7DC ;没有,继续处理
0042C873 |> 8B4D 08 mov ecx, dword ptr ss:[ebp+8] ;这里设断
0042C876 |. 8D45 F0 lea eax, dword ptr ss:[ebp-10]
0042C879 |. 50 push eax
0042C87A |. E8 5C57FDFF call SuperPIM.00401FDB
0042C87F |. 8D4F F0 lea ecx, dword ptr ds:[edi-10]
0042C882 |. E8 7153FDFF call SuperPIM.00401BF8
0042C887 |. 8B4D F4 mov ecx, dword ptr ss:[ebp-C]
0042C88A |. 8B45 08 mov eax, dword ptr ss:[ebp+8]
0042C88D |. 5F pop edi
0042C88E |. 5E pop esi
0042C88F |. 5B pop ebx
0042C890 |. 64:890D 00000000 mov dword ptr fs:[0], ecx
0042C897 |. C9 leave
0042C898 \. C3 retn
来到这里
0042C64F /$ 55 push ebp
0042C650 |. 8BEC mov ebp, esp
0042C652 |. 51 push ecx
0042C653 |. 0FB645 08 movzx eax, byte ptr ss:[ebp+8] 获取序列号的一个字符
0042C657 |. 8B4D 0C mov ecx, dword ptr ss:[ebp+C]
0042C65A |. 8945 FC mov dword ptr ss:[ebp-4], eax
0042C65D |. 8BC1 mov eax, ecx ;eax=ecx
0042C65F |. 0FAFC1 imul eax, ecx ;eax=eax*ecx
0042C662 |. 8D4440 07 lea eax, dword ptr ds:[eax+eax*2+7] ; eax=eax+eax*2+7
0042C666 |. 0FAFC1 imul eax, ecx ;eax=eax*ecx
0042C669 |. 83C0 0D add eax, 0D ;eax=eax+0xD
0042C66C |. 0FAFC1 imul eax, ecx ;eax=eax*ecx
0042C66F |. 56 push esi
0042C670 |. 8D71 05 lea esi, dword ptr ds:[ecx+5]
0042C673 |. 56 push esi
0042C674 |. 8945 08 mov dword ptr ss:[ebp+8], eax
0042C677 |. 8D45 08 lea eax, dword ptr ss:[ebp+8]
0042C67A |. 6A 04 push 4
0042C67C |. 50 push eax
0042C67D |. E8 6DFFFFFF call SuperPIM.0042C5EF
0042C682 |. 56 push esi
0042C683 |. 8D45 FC lea eax, dword ptr ss:[ebp-4]
0042C686 |. 6A 04 push 4
0042C688 |. 50 push eax
0042C689 |. E8 91FFFFFF call SuperPIM.0042C61F
0042C68E |. 8B45 08 mov eax, dword ptr ss:[ebp+8]
0042C691 |. 83C4 18 add esp, 18
0042C694 |. 3345 FC xor eax, dword ptr ss:[ebp-4]
0042C697 |. 5E pop esi
0042C698 |. C9 leave
0042C699 \. C3 retn
由于本人水平有限,不能将算法完全分析出来(对于我来说这个算法是在太长了),还请各位大虾指教,在0042c873处设断,F9运行,右上角看到一串字符就是注册码
如果继续跟踪你会发现,作者将计算出来的注册码又经过一定的运算,得到一大串字符,同时还将我们输入的试练码也进行了运算,得到一大串字符,然后用这两个字符串进行运算,判断注册码是否正确
0040FB37 . 83C4 14 add esp, 14
0040FB3A . 83C1 F0 add ecx, -10
0040FB3D . 8845 F3 mov byte ptr ss:[ebp-D], al
0040FB40 . E8 B320FFFF call SuperPIM.00401BF8 这里你会在内存中看到那两个字符串,这个call里进行了一些运算
0040FB45 . 385D F3 cmp byte ptr ss:[ebp-D], bl
0040FB48 . 74 41 je short SuperPIM.0040FB8B ; 不能跳,条就OVER了,如果你不想要注册码,爆破就行,那就在这里打个补丁吧,但软件每次启动会检查注册码,所以如果你这样作,每次必须重新输入假注册码,不完美,建议不要这样
0040FB4A . 53 push ebx
0040FB4B . 53 push ebx
最后感谢您看望本文,谢谢!
--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
赞赏记录
参与人
雪币
留言
时间
一路南寻
为你点赞~
2024-4-3 01:33
東陽不列山
为你点赞~
2024-4-2 00:15
嫉妒的死远点
为你点赞~
2024-2-24 00:37
一笑人间万事
为你点赞~
2024-2-16 00:19
shinratensei
为你点赞~
2023-3-22 05:07
QinBeast
为你点赞~
2023-3-22 05:06
赞赏
他的文章
看原图
赞赏
雪币:
留言: