好友
阅读权限30
听众
最后登录1970-1-1
|
cxj98
发表于 2013-5-23 13:54
本帖最后由 cxj98 于 2013-5-23 13:57 编辑
我当时初学破解也是什么都不懂,也是没有人教。
就是看一些国外的暴破教程,还是无语音的。
看到有些他们改的汇编指令,为什么老将 cmp [xxxx], 0 改为 1,一直搞不明白,后来自己OD实战了才明白,原来那个 [xxxx] 是变量,跟0做比较,默认的值正好是0,所以软件显示未注册版本,于是抱着试试的态度将其改为 1后,居然显示注册成功,当时那个高兴呀。
后来终于明白了这个道理,这个原理。
那些 OD 代码,你第一次看不懂,可以多看几次,F8多跑几遍,一次,二次,你自不然而然也就能懂了。
破解,无非就是一个注册与未注册的过程。
jnz 改 jz,74 改 75 这么一个过程。
那当然,初级的程序都这么容易被破解掉。
如果验证多了,这些简单修改肯定过不了,那就是往后更深一步的学习了。
当你破解过的软件多了,经验也能逐渐丰富起来。
往后就可以往中级方向发展。比如:算法分析。
就算我现在,打算学习算法,但苦于无从下手。
主要是汇编代码还看不懂。
一个值为什么会被清零,定位到关键 call 后,就要 F7 跟进这个 call 看看。
如下:
Call xxxxxxx // 关键 call, F7 进入
Test al, al // 比较 al 的值,注意:这个 al 值为 0,破解就是要让它的值为 1
jnz xxxxx
进 关键 call 后,发现不远处有这么一句:
Push EBP
xxxxxxx
xxxxxx
xor al, al
xxxxx
retn
其中 xor 是清零指令,也就是 将 al 的值清空,我们破解的目的就是要将 al 的值为 1,而不是让它清空,所以要改成 mov al, 1 保存生成 exe 后,再次运行,软件就显示己注册版本。 |
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|