某QQ群发大师2010版爆破分析

1,老版本软件无壳,可直接上手

     新版本加了PE壳,采用ESP定律F9四次即可到达OEP,无难度,不详述

 

2,观测软件:

   1)底部label显示“未注册版本,机器码XXXX”的提示
   2)存在注册按钮,重启验证
   3)发送时验证是否注册,未注册弹框提示

 

3,思路:
   1)字符串

   2)dede按钮事件
   2)API下断

 

4,爆破过程

 

   1)OD载入,搜索字符串,发现“已注册版本”字样,双击跟随到汇编代码:

004CF493  |.  803D A02B4E00>cmp     byte ptr [4E2BA0], 0             ;  比较全局变量的值
004CF49A  |.  74 10         je      short 004CF4AC                   ;  为0则跳走
004CF49C  |.  BA 14F54C00   mov     edx, 004CF514                    ;  已注册版本

根据先易后难的原则,初步猜测byte ptr [4E2BA0]为我们的突破口,在数据窗口中跟随到 4E2BA0 ,对该Byte下硬件访问断点以便调试,内存断点的话第二次就没了,不如硬件断点方便

 

   2)F9运行,会断在访问 [4E2BA0] 代码的下一行,对其进行分析可知 :

004CF222  |.  83F8 18       cmp     eax, 18                          ;  注册码必须为24位
004CF225      0F9405 A02B4E>sete    byte ptr [4E2BA0]                ;  不是24位则失败,置全局变量为0
 
   3)继续F9:

004CF243  |.  E8 6058F3FF   call    00404AA8                         ;  检查序列号是否是否为本机序列号
004CF248  |.  0F95C0        setne   al
004CF24B  |.  2205 A02B4E00 and     al, byte ptr [4E2BA0]            ;  序列号不一致则弹出提示框
004CF251      E9 B2000000   jmp     004CF308                         ;  爆破,修改为jmp强制跳转


   4)继续F9:

004D3532  |.  8A12          mov     dl, byte ptr [edx]
004D3534  |.  80F2 01       xor     dl, 1                            ;  停在此处
004D3537  |.  8B83 48040000 mov     eax, dword ptr [ebx+448]
004D353D  |.  E8 7A5BF9FF   call    004690BC
004D3542  |.  A1 BCED4D00   mov     eax, dword ptr [4DEDBC]
004D3547  |.  8038 00       cmp     byte ptr [eax], 0                ;  全局变量比较
004D354A  |.  74 0C         je      short 004D3558                   ;  关键跳2
004D354C  |.  B8 D4364D00   mov     eax, 004D36D4                    ;  ASCII "正在检查新版本..."


   5)继续F9
 
004CE899      807D EF 00    cmp     byte ptr [ebp-11], 0             ;  二次检测的标志位,不能为0
004CE89D      75 4D         jnz     short 004CE8EC
004CE89F  |.  A1 BCED4D00   mov     eax, dword ptr [4DEDBC]
004CE8A4  |.  C600 00       mov     byte ptr [eax], 0
004CE8A7  |.  803D 842B4E00>cmp     byte ptr [4E2B84], 0
004CE8AE  |.  74 19         je      short 004CE8C9                   ;  跳过注册码错误
........
004CE8EC  |> /A1 BCED4D00   mov     eax, dword ptr [4DEDBC]          ;  来自4ce89e
004CE8F1  |.  8038 00       cmp     byte ptr [eax], 0                ;  比较全局变量


     若需深入,004CE899为二次检测标志,可考虑对其下硬件访问断点,检测其变化过程。

 

    6)继续F9,在更改二次检测标志后,底部label显示“已注册!”字样,开始测试功能:

    点击发送,弹出注册码错误的提示框,来到004D6982  |.  83F8 18  cmp     eax, 18 ;  进行二次检测
    之后会检测发送内容是否为空,再检测QQ是否存在,有几个qq,如果不是一个qq的话,会弹出选择框。


    7)待续。

 

 


  

 

 

你可能感兴趣的:(c,汇编,api,qq,byte,2010)