飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3352|回复: 1

[07版] 第三章:明码与暴破-标志位暴破-文一

[复制链接]

该用户从未签到

发表于 2007-4-11 21:42:35 | 显示全部楼层 |阅读模式
软件名称: Ace MP3 Ripper V1.5.0
软件大小: 2336 KB
软件语言: 英文
软件类别: 国外软件 / 共享版 / 音频转换
应用平台: Win9x/NT/2000/XP/2003
天空下载: http://www.skycn.com/soft/15430.html


这里先简单的补充一下寄存器和标志位的概念。

我们在寄存器窗口第一行看到的就是EAX寄存器
EAX一共是4*8=32位,分为前16位和16位。
EAX寄存器中00000000 ,后四位16进制字符(后16位2进制)就是AX,前两个16进制是AH,后两个16进制是AL(AX前8位是AH 后8位是AL)。


我们通过关键字符串:thank you for registering our software!


找到软件注册部分后,先不忙中下断。我们来看一下这个跳转:
0043EE13   .  0F84 CB000000 je      0043EEE4
我们观察这个跳转,显然这里跳走后软件就提示注册失败。而上方的test ax,ax来决定这个关键跳是否实现。test语句上方的CALL中带来的返回值就是注册比较后的得到的关键数据AX的数值。
我们在0043EDF5   .  E8 B6790000   call    004467B0 这里下断,来修改他送回的AX的返回数值。

0043EDF5   .  E8 B6790000   call    004467B0                         ;  我们在此下断,F7跟进。(该CALL将返回一个AX标志位的关键数值)
0043EDFA   .  66:85C0       test    ax, ax                           ;  这里的汇编语句:test ax,ax 来决定下方的关键跳是否实现跳转
0043EDFD   .  B9 04000280   mov     ecx, 80020004
0043EE02   .  B8 0A000000   mov     eax, 0A
0043EE07   .  894D A8       mov     dword ptr [ebp-58], ecx
0043EE0A   .  8945 A0       mov     dword ptr [ebp-60], eax
0043EE0D   .  894D B8       mov     dword ptr [ebp-48], ecx
0043EE10   .  8945 B0       mov     dword ptr [ebp-50], eax
0043EE13   .  0F84 CB000000 je      0043EEE4                         ;  我们观察这个跳转,显然这里跳走后软件就提示注册失败。
0043EE19   .  8D55 90       lea     edx, dword ptr [ebp-70]
0043EE1C   .  8D4D C0       lea     ecx, dword ptr [ebp-40]
0043EE1F   .  C745 98 10B74>mov     dword ptr [ebp-68], 0041B710     ;  successful
0043EE26   .  895D 90       mov     dword ptr [ebp-70], ebx
0043EE29   .  FF15 08124000 call    dword ptr [<&MSVBVM60.__vbaVarDu>;  MSVBVM60.__vbaVarDup
0043EE2F   .  68 5CB64100   push    0041B65C                         ;  the registration name and code are accepted,
0043EE34   .  68 50734100   push    00417350                         ;  \n\n
0043EE39   .  FF15 54104000 call    dword ptr [<&MSVBVM60.__vbaStrCa>;  MSVBVM60.__vbaStrCat
0043EE3F   .  8BD0          mov     edx, eax
0043EE41   .  8D4D E8       lea     ecx, dword ptr [ebp-18]
0043EE44   .  FF15 40124000 call    dword ptr [<&MSVBVM60.__vbaStrMo>;  MSVBVM60.__vbaStrMove
0043EE4A   .  50            push    eax
0043EE4B   .  68 BCB64100   push    0041B6BC                         ;  thank you for registering our software!


F7跟近后来到这里:

004467B0   $  55            push    ebp                              ;  F7跟进关键CALL后来到这里 我们在该行点空格直接修改汇编语言
004467B1   .  8BEC          mov     ebp, esp
004467B3   .  83EC 14       sub     esp, 14
004467B6   .  68 361E4000   push    <jmp.&MSVBVM60.__vbaExceptHandle>;  SE 处理程序安装
004467BB   .  64:A1 0000000>mov     eax, dword ptr fs:[0]
004467C1   .  50            push    eax
004467C2   .  64:8925 00000>mov     dword ptr fs:[0], esp
004467C9   .  81EC 8C000000 sub     esp, 8C

修改方案1:

004467B0      B0 01         mov     al, 1                            ;  直接向AL赋值为1
004467B2      C3            retn                                        ;  返回时 AL值为1

修改方案2:

004467B0      33C0          xor     eax, eax                         ;  EAX清零
004467B2      40            inc     eax                                  :  EAX加1
004467B3      C3            retn                                          :  返回时 EAX值为1

我们保存一下我们修改后的程序.




这里仅是做一个标志位暴破方法的讲解,至于软件是否存在暗桩不在本文涉及范围.标志位爆破方法是我们常用到的一种方法.在暴破中我们要善于观察是哪里返回了标志位的数值而使关键跳转实现,我们就从哪里入手,找到解决问题的方案.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入我们

x
PYG19周年生日快乐!

该用户从未签到

发表于 2007-4-12 18:22:06 | 显示全部楼层
精彩!
PYG19周年生日快乐!
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表