某软件的暴破思路(一种常用的修改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 相信大家都明白我的意思了~~ 谢谢,又学了标志位破解。 不错,不错。 经典的方法,谢谢 又学了一招 0053BAD3 807E 70 00 cmp byte ptr , 0 这里变1
或者 0053BAF0 .0F94C0 sete al变 setne al
可能这样改也可以,没有原程序所以不保证可以
如果每次都是 在开头 MOV EAX,1 或者 xor eax,eaxinc eax 好象没有什么意思,并不是每个程序都需要返回1 如果讲错,请回帖讨论... 密界高人,佩服。 不错的想法,谢谢。 又学习了个新方法,哈哈,有点坏坏的感觉~! 又学习了个新方法,哈哈,