飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3869|回复: 3

[07版] 标志位暴破文二

[复制链接]

该用户从未签到

发表于 2007-4-14 16:00:49 | 显示全部楼层 |阅读模式
CD to MP3 Ripper 5.20
软件大小:8847KB
软件类别:国外软件/音频工具  
下载次数:5877
软件授权:共享版
软件语言:英文
运行环境:Win9x/Me/NT/2000/XP/2003
更新时间:2006-12-10 11:20:29

软件详细信息
  CD to MP3 Ripper能够从音频CD中抓取音轨,并将它们保存成MP3、WAV、WMA、VQF以及OGG的音频格式。它快速、易用,而且功能强大。该软件具有丰富的选项,以便能够满足你特殊的要求。MP3解码器支持CBR(固定比特率)和VBR(变量比特率),同时还具有4种模式,分别是立体声、联合立体声、单声道和双声道。

官方站点:http://www.mp3-ripper.net/
官方下载1:http://www.goodeasy.net/download/mp3ripper.exe
官方下载2:http://www.software-download.us/mp3ripper.exe
官方下载3:http://www.mp3-ripper.net/mp3ripper.exe

华军下载:http://www.newhua.com/soft/6128.htm

我们OD载入,从程序入口点看到“call    <jmp.&MSVBVM60.#100>”,我们基本上就可以断定该程序为VB所写。
00403004 > $  68 C4804000   push    004080C4                         ;  (initial cpu selection)
00403009   .  E8 EEFFFFFF   call    <jmp.&MSVBVM60.#100>

运行软件,出现注册对话框,我们随意输入信息,看一下软件给我们的提示。


我们右键:FIND UNICODE,找到关键字符串。



0045D4FF   > \8B35 58124000 mov     esi, dword ptr [<&MSVBVM60.__vba>;  这里我们可以看到“注册失败的提示框”来自上方的跳转
0045D505   .  BB 08000000   mov     ebx, 8
0045D50A   .  8D95 74FFFFFF lea     edx, dword ptr [ebp-8C]
0045D510   .  8D4D B4       lea     ecx, dword ptr [ebp-4C]
0045D513   .  899D 74FFFFFF mov     dword ptr [ebp-8C], ebx
0045D519   .  FFD6          call    esi                              ;  <&MSVBVM60.__vbaVarDup>
0045D51B   .  8D55 84       lea     edx, dword ptr [ebp-7C]
0045D51E   .  8D4D C4       lea     ecx, dword ptr [ebp-3C]
0045D521   .  C745 8C 60AB4>mov     dword ptr [ebp-74], 0041AB60     ;  registration failed!

我们沿着跳转的路径向上找,来到这里:

0045D424   .  E8 37290000   call    0045FD60                         ;  在此下断,我们跟近算法CALL
0045D429   .  66:85C0       test    ax, ax                           ;  又是标志位比较
0045D42C   .  B9 04000280   mov     ecx, 80020004
0045D431   .  B8 0A000000   mov     eax, 0A
0045D436   .  894D 9C       mov     dword ptr [ebp-64], ecx
0045D439   .  8945 94       mov     dword ptr [ebp-6C], eax
0045D43C   .  894D AC       mov     dword ptr [ebp-54], ecx
0045D43F   .  8945 A4       mov     dword ptr [ebp-5C], eax
0045D442   .  89B5 7CFFFFFF mov     dword ptr [ebp-84], esi
0045D448   .  0F84 B1000000 je      0045D4FF                         ;  若上方算法CALL返回的ax数值为0,则这里跳向注册失败处
0045D44E   .  8B35 58124000 mov     esi, dword ptr [<&MSVBVM60.__vba>;  MSVBVM60.__vbaVarDup
0045D454   .  8D95 74FFFFFF lea     edx, dword ptr [ebp-8C]
0045D45A   .  8D4D B4       lea     ecx, dword ptr [ebp-4C]
0045D45D   .  C785 74FFFFFF>mov     dword ptr [ebp-8C], 8
0045D467   .  FFD6          call    esi                              ;  <&MSVBVM60.__vbaVarDup>
0045D469   .  8D55 84       lea     edx, dword ptr [ebp-7C]
0045D46C   .  8D4D C4       lea     ecx, dword ptr [ebp-3C]
0045D46F   .  C745 8C 2CAB4>mov     dword ptr [ebp-74], 0041AB2C     ;  registration succeeded!


我们F7跟进算法CALL后来到这里:

0045FD60      55            push    ebp
0045FD61      8BEC          mov     ebp, esp
0045FD63      83EC 14       sub     esp, 14
0045FD66   .  68 A62B4000   push    <jmp.&MSVBVM60.__vbaExceptHandle>;  SE 处理程序安装
0045FD6B   .  64:A1 0000000>mov     eax, dword ptr fs:[0]

暴破方案1:

0045FD60      33C0          xor     eax, eax
0045FD62      40            inc     eax
0045FD63      C3            retn



暴破方案2:

0045FD60      66:B8 0100    mov     ax, 1         //直接对AX赋值为1
0045FD64      C3            retn

暴破方法3和4:

既然这里是判断AX的标志位比较,那我们到算法CALL中来找寻一下,是哪句指令给AX赋值。
我们在算法CALL中向下找,OK,我们在算法CALL结束处看到这句赋值指令:
004600B6   .  66:8B45 D8    mov     ax, word ptr [ebp-28]
将word ptr [ebp-28]赋值给AX,我们看下信息窗口,发现此时word ptr [ebp-28]数值为0,而AX数值不为0,则可NOP掉该行,或是修改为:mov  ax, 1




004600B6   .  66:8B45 D8    mov     ax, word ptr [ebp-28]            ;暴破关键点:可NOP掉该行,或是修改为:mov  ax, 1
004600BA   .  8B4D E4       mov     ecx, dword ptr [ebp-1C]
004600BD   .  64:890D 00000>mov     dword ptr fs:[0], ecx
004600C4   .  5F            pop     edi
004600C5   .  5E            pop     esi
004600C6   .  5B            pop     ebx
004600C7   .  8BE5          mov     esp, ebp
004600C9   .  5D            pop     ebp
004600CA   .  C3            retn
004600CB   >  FF15 F8114000 call    dword ptr [<&MSVBVM60.__vbaError>;  MSVBVM60.__vbaErrorOverflow

      OK,综上几种方案均可暴破.如果软件使用标志位来作为是否注册成功的依据,我们最简便的方法就是找到向标志位赋值处,修改数值.

本帖子中包含更多资源

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

x
PYG19周年生日快乐!

该用户从未签到

发表于 2007-4-14 16:58:05 | 显示全部楼层
强,VB都可以这样:)

问下这样的图文并茂的文章是怎么制作的啊 :)

既然这里是判断AX的标志位比较,那我们到算法CALL中来找寻一下,是哪句指令给AX赋值。
我们在算法CALL中向下找,OK,我们在算法CALL结束处看到这句赋值指令:
004600B6   .  66:8B45 D8    mov     ax, word ptr [ebp-28]
将word ptr [ebp-28]赋值给AX,我们看下信息窗口,发现此时word ptr [ebp-28]数值为0,而AX数值不为0,则可NOP掉该行,或是修改为:mov  ax, 1

快速寻找这句的方法,就是进CALL后 CTRL+F9 :)

下bp __vbaNew2,断下后反汇编中跟随,就可以定位到这断代码,关键CALL和LZ用字符定位是一样的:)
00442588   .  E8 D3D70100   call    0045FD60  嘿嘿:)
0044258D   .  0FBFC8        movsx   ecx, ax
00442590   .  85C9          test    ecx, ecx
00442592      0F85 20010000 jnz     004426B8
00442598   .  C745 FC 1E000>mov     dword ptr [ebp-4], 1E
0044259F   .  833D 00314800>cmp     dword ptr [483100], 0
004425A6   .  75 1C         jnz     short 004425C4
004425A8   .  68 00314800   push    00483100
004425AD   .  68 F4874000   push    004087F4
004425B2   .  FF15 00124000 call    dword ptr [<&MSVBVM60.__vbaNew2>>;  MSVBVM60.__vbaNew2
004425B8   .  C785 08FFFFFF>mov     dword ptr [ebp-F8], 00483100

[ 本帖最后由 rayicy 于 2007-4-14 17:17 编辑 ]
PYG19周年生日快乐!

该用户从未签到

 楼主| 发表于 2007-4-14 17:19:04 | 显示全部楼层
CTRL+F9  ??
应该是CTRL+S吧  但是搜索的语句 可我们无法知道 该赋值语句究竟是什么 ~~

或许还是 mov al,bl 这个时候我们就应该去分析何时做了BL标志位的修改~

文稿的制作 下一篇 我们就给出截图工具  如果把附件的图片 贴到帖子中
我们上传附件后 看附件那的提示 ~~
PYG19周年生日快乐!

该用户从未签到

发表于 2007-4-14 17:20:46 | 显示全部楼层
原帖由 Nisy 于 2007-4-14 17:19 发表
CTRL+F9  ??
应该是CTRL+S吧  但是搜索的语句 可我们无法知道 该赋值语句究竟是什么 ~~

或许还是 mov al,bl 这个时候我们就应该去分析何时做了BL标志位的修改~

文稿的制作 下一篇 我们就给出截图工具   ...


NO,就是CTRL+F9

LZ可以测试,进关键CALL后,CTRL+F9一下就可以定位LZ要修改标志位的地方:)

理由是:软件到最后会给标志位0,所以CTRL+F9一下后就可以很快定位了,也可以OD下来看,或者F8单步跟:)

[ 本帖最后由 rayicy 于 2007-4-14 17:22 编辑 ]
PYG19周年生日快乐!
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

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