Nisy 发表于 2007-2-24 21:40:22

某软件的暴破思路(一种常用的修改AL返回值方法)

刚才转载了一个另类暴破,思路挺不错的,这补充一个修改代码以达到修改算法CALL返回值的目的。
软件不写了 只简单写一下过程。
暴破 常用的一种方法就是修改返回值达到破解目的
因为 我们如果只是修改跳向注册成功的跳转 而 忽视算法部分的返回值 可能软件的破解就不完美
因为 软件在验证软件是否注册
大多都是直接调用的算法CALL来分析 这时 算法CALL的返回值就成为软件是否注册的标志
这里就举一个简单的方法 是AL返回值为1(暴破的话 一般都是修改为1)


修改关键CALL返回值:

原代码:
0053BAD0      56            push    esi
0053BAD1      8BF1            mov   esi, ecx
0053BAD3      807E 70 00      cmp   byte ptr , 0
0053BAD7   .75 12         jnz   short 0053BAEB
0053BAD9   .6A 00         push    0
0053BADB   .90            nop
0053BADC   .E8 518F6300   call    00B74A32
0053BAE1   .24 01         and   al, 1
0053BAE3   .83C4 04         add   esp, 4
0053BAE6   .04 01         add   al, 1
0053BAE8   .8846 70         mov   byte ptr , al
0053BAEB   >807E 70 02      cmp   byte ptr , 2
0053BAEF   .5E            pop   esi
0053BAF0   .0F94C0          sete    al
0053BAF3   .C3            retn
--------------------------------------------------------------------------------
在0053BAF3处返回时,al为0。

暴力修改成这样:
修改后代码:

0053BAD0      33C0            xor   eax, eax;EAX清零
0053BAD2      40            inc   eax       ;EAX加1
0053BAD3      C3            retn            ;返回时 AL值为1
--------------------------------------------------------------------------------

返回值为1.

OK 相信大家都明白我的意思了~~

zhangtaixi 发表于 2007-2-24 22:01:03

谢谢,又学了标志位破解。

月之精灵 发表于 2007-2-25 13:21:58

不错,不错。

windtrace 发表于 2007-3-1 09:51:05

经典的方法,谢谢

凡人1234 发表于 2007-3-16 15:36:31

又学了一招

rayicy 发表于 2007-3-16 16:36:08

0053BAD3      807E 70 00      cmp   byte ptr , 0 这里变1
或者 0053BAF0   .0F94C0          sete    al变 setne    al

可能这样改也可以,没有原程序所以不保证可以

如果每次都是 在开头 MOV EAX,1 或者 xor eax,eaxinc eax 好象没有什么意思,并不是每个程序都需要返回1 如果讲错,请回帖讨论...

blzs 发表于 2007-3-19 17:38:52

密界高人,佩服。

qiuyuchan 发表于 2007-4-29 08:12:07

不错的想法,谢谢。

小子贼野 发表于 2007-5-3 15:46:36

又学习了个新方法,哈哈,有点坏坏的感觉~!

仁鹰 发表于 2007-5-10 12:53:36

又学习了个新方法,哈哈,
页: [1] 2 3 4 5 6 7
查看完整版本: 某软件的暴破思路(一种常用的修改AL返回值方法)