首页
社区
课程
招聘
[旧帖] Mail服务器爆破过程[原创] 0.00雪花
发表于: 2007-1-30 10:41 5411

[旧帖] Mail服务器爆破过程[原创] 0.00雪花

2007-1-30 10:41
5411
【文章标题】: Mail服务器爆破过程
【文章作者】: atomy
【作者主页】: http://2lin.net
【软件名称】: CMailServer5.4.3
【下载地址】: 自己搜索下载
【使用工具】: ollyice,W32dsm,peid
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  软件爆破比较轻松,几乎没有什么技巧。这里只说一下观点。
  破解的方法几乎和原来的CCproxy差不多, 先使用W32dsm找到注册成功和注册失败的资源地址
  然后在ollyice里下断。 不同的是。这个软件在程序里加了debug工具的判断。使用hideod和hidecaption插件就可以搞定了
  好下面说下破解过程:
  
  使用工具查到两处地址
  
  0045124E  |.  68 44800000               push    8044                             ;注册成功的地方
  
  0045130D  |.  68 43800000               push    8043                             ;注册失败的地方
  
  根据经验 在注册失败和注册成功的地方 应该有判断是否注册成功的标志
  于是找到注册成功地址上面的对比
  
  0045123D      833D 9C065300 00          cmp     dword ptr [53069C], 0            ;  是否注册
  00451244      0F84 BF000000             je      00451309                         ;  未注册跳转
  0045124A  |.  8D55 F0                   lea     edx, dword ptr [ebp-10]
  0045124D  |.  52                        push    edx                              ; /Arg2
  0045124E  |.  68 44800000               push    8044                             ; 注册成功的地方
  00451253  |.  E8 10B50100               call    0046C768                         ; \CMailSer.0046C768
  
  于是在 ds:[0053069C] 处下了一个硬件断点 目的是想查看软件有多少个地方对这个内存进行操作了。
  经调试 软件在多处对这个地址进行了判断 包括未注册用户只能开五个用户的限制,也是判断这个地址
  说明作者是根据这个地址来判断是否注册的。
  
  于是用16进制编辑器打开软件 查找 833D9C06530000 修改成 833D9C06530001  
  也就是把对比的标志改成 1 好了。
  
  另外还有几个地方 需要修改
  那个地方刚好相反

  上面改的好像是 if 没注册 then
  这里改的是  if 注册 then

  查找 833D9C06530001 修改成 833D9C06530000  

  为了不修改到以前改的那几个 先后顺序
  可以先把833D9C06530001 改成 833D9C06530002  然后 再修改 833D9C06530000 为 833D9C06530001
  最后修改 833D9C06530002 为 833D9C06530000
  
  另存为>运行>显示已注册!
  
  
  
  
--------------------------------------------------------------------------------
【经验总结】
  没有仔细的分析 不知道是否还有暗桩之类的代码。
  不过对于作者使用同一种方法作为效验还是有点欠妥。
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2007年01月30日 10:40:03

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
学习了,爆破真是有趣!!
2007-1-30 14:13
0
雪    币: 226
活跃值: (30)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
3
在ds:[0053069C]内存处下硬件写断点
结果断在这里

0040D5DB   .  8D95 E8EBFFFF lea     edx, dword ptr [ebp-1418]
0040D5E1   .  52            push    edx                              ; /序列号
0040D5E2   .  8D85 E4E7FFFF lea     eax, dword ptr [ebp-181C]        ; |
0040D5E8   .  50            push    eax                              ; |注册码
0040D5E9   .  E8 6D350400   call    00450B5B                         ; \核心算法
0040D5EE   .  83C4 08       add     esp, 8
0040D5F1   .  8985 A0DEFFFF mov     dword ptr [ebp-2160], eax        ;  eax = 注册标志
0040D5F7   .  8B8D A0DEFFFF mov     ecx, dword ptr [ebp-2160]
0040D5FD   .  890D 9C065300 mov     dword ptr [53069C], ecx          ;  注册标志移入内存 //因为有写内存所以断在这里
0040D603   .  833D 9C065300>cmp     dword ptr [53069C], 0
0040D60A   .  0F84 F4010000 je      0040D804

跟踪0040D5E9 处 首先会根据你的电脑生成一个特征码

00450C32  |.  8B8D F4FBFFFF |mov     ecx, dword ptr [ebp-40C]
00450C38  |.  C1E1 04       |shl     ecx, 4
00450C3B  |.  33D2          |xor     edx, edx
00450C3D  |.  8A940D 75F7FF>|mov     dl, byte ptr [ebp+ecx-88B]
00450C44  |.  83C2 08       |add     edx, 8
00450C47  |.  81E2 FF000000 |and     edx, 0FF
00450C4D  |.  52            |push    edx                             ; /<%02x>
00450C4E  |.  8B85 F4FBFFFF |mov     eax, dword ptr [ebp-40C]        ; |
00450C54  |.  C1E0 04       |shl     eax, 4                          ; |
00450C57  |.  33C9          |xor     ecx, ecx                        ; |
00450C59  |.  8A8C05 74F7FF>|mov     cl, byte ptr [ebp+eax-88C]      ; |
00450C60  |.  83C1 08       |add     ecx, 8                          ; |
00450C63  |.  81E1 FF000000 |and     ecx, 0FF                        ; |
00450C69  |.  51            |push    ecx                             ; |<%02x>
00450C6A  |.  8B95 F4FBFFFF |mov     edx, dword ptr [ebp-40C]        ; |
00450C70  |.  C1E2 04       |shl     edx, 4                          ; |
00450C73  |.  33C0          |xor     eax, eax                        ; |
00450C75  |.  8A8415 73F7FF>|mov     al, byte ptr [ebp+edx-88D]      ; |
00450C7C  |.  83C0 08       |add     eax, 8                          ; |
00450C7F  |.  25 FF000000   |and     eax, 0FF                        ; |
00450C84  |.  50            |push    eax                             ; |<%02x>
00450C85  |.  8B8D F4FBFFFF |mov     ecx, dword ptr [ebp-40C]        ; |
00450C8B  |.  C1E1 04       |shl     ecx, 4                          ; |
00450C8E  |.  33D2          |xor     edx, edx                        ; |
00450C90  |.  8A940D 72F7FF>|mov     dl, byte ptr [ebp+ecx-88E]      ; |
00450C97  |.  83C2 08       |add     edx, 8                          ; |
00450C9A  |.  81E2 FF000000 |and     edx, 0FF                        ; |
00450CA0  |.  52            |push    edx                             ; |<%02x>
00450CA1  |.  8B85 F4FBFFFF |mov     eax, dword ptr [ebp-40C]        ; |
00450CA7  |.  C1E0 04       |shl     eax, 4                          ; |
00450CAA  |.  33C9          |xor     ecx, ecx                        ; |
00450CAC  |.  8A8C05 71F7FF>|mov     cl, byte ptr [ebp+eax-88F]      ; |
00450CB3  |.  83C1 08       |add     ecx, 8                          ; |
00450CB6  |.  81E1 FF000000 |and     ecx, 0FF                        ; |
00450CBC  |.  51            |push    ecx                             ; |<%02x>
00450CBD  |.  8B95 F4FBFFFF |mov     edx, dword ptr [ebp-40C]        ; |
00450CC3  |.  C1E2 04       |shl     edx, 4                          ; |
00450CC6  |.  33C0          |xor     eax, eax                        ; |
00450CC8  |.  8A8415 70F7FF>|mov     al, byte ptr [ebp+edx-890]      ; |
00450CCF  |.  83C0 08       |add     eax, 8                          ; |
00450CD2  |.  25 FF000000   |and     eax, 0FF                        ; |
00450CD7  |.  50            |push    eax                             ; |<%02x>
00450CD8  |.  68 D4454E00   |push    004E45D4                        ; |Format = "%02x%02x%02x%02x%02x%02x"
00450CDD  |.  8D8D 00FCFFFF |lea     ecx, dword ptr [ebp-400]        ; |
00450CE3  |.  51            |push    ecx                             ; |s
00450CE4  |.  FF15 A8F74A00 |call    dword ptr [<&USER32.wsprintfA>] ; \wsprintfA

接下来进行加密得到真正的序列号

00450DC8  |> \8D95 00FCFFFF |lea     edx, dword ptr [ebp-400]
00450DCE  |.  52            |push    edx                             ; /特征码
00450DCF  |.  8B45 0C       |mov     eax, dword ptr [ebp+C]          ; |
00450DD2  |.  50            |push    eax                             ; |序列号
00450DD3  |.  8B4D 08       |mov     ecx, dword ptr [ebp+8]          ; |
00450DD6  |.  51            |push    ecx                             ; |注册码
00450DD7  |.  E8 8FF7FFFF   |call    0045056B                        ; \CMailSer.0045056B

再进行网上验证

00450E27  |.  8D8D 00FCFFFF |lea     ecx, dword ptr [ebp-400]
00450E2D  |.  51            |push    ecx                             ; /Arg4
00450E2E  |.  8B55 0C       |mov     edx, dword ptr [ebp+C]          ; |
00450E31  |.  52            |push    edx                             ; |Arg3
00450E32  |.  68 00040000   |push    400                             ; |Arg2 = 00000400
00450E37  |.  8D85 6CEFFFFF |lea     eax, dword ptr [ebp-1094]       ; |
00450E3D  |.  50            |push    eax                             ; |Arg1
00450E3E  |.  E8 B0FAFFFF   |call    004508F3                        ; 网上验证函数

由于是网上验证的。所以只有爆破了.. 呵呵
2007-1-30 15:53
0
游客
登录 | 注册 方可回帖
返回
//