- UID
- 2198
注册时间2005-6-29
阅读权限255
最后登录1970-1-1
副坛主
该用户从未签到
|
软件名称: 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
|