首页
论坛
课程
招聘
第一篇破文
2004-5-28 19:37 3475

第一篇破文

2004-5-28 19:37
3475
【软件名称】 超级通讯王
【下载地址】 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

最后感谢您看望本文,谢谢!
--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

【公告】看雪团队招聘安全工程师,将兴趣和工作融合在一起!看雪20年安全圈的口碑,助你快速成长!

收藏
点赞0
打赏
分享
最新回复 (1)
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
iceplus 活跃值 2004-5-28 19:37
2
0
好,破解界又多了一位兄弟
游客
登录 | 注册 方可回帖
返回