zhangandt
级别: 蓝色
精华:
0
发帖: 6320
威望: 1 点
金钱: 9198 RMB
贡献值: 0 点
在线时间:178(小时)
注册时间:2008-07-23
最后登录:2008-10-15
|
软件破解新手进化篇
1.软件怎么判断我们是否注册了? z
<Nf
m >7 ="8 不要忘了,软件最终是按照人的思维做的,我们回到自身来,“如果是你,你怎么判断别人是否注册了呢”,“我要别人输入用户名和注册码啊”,聪明的想法,很多软件也是这样做的,如豪杰超级解霸。(但是不是所以的软件,方法太多了,友情提示:这个世界没有完全通用的东西,除了你聪明的大脑)
c
Vc- Hl,W=2N 具体一点呢?????????? ?32&]iM
oW 我们把用户名按照某种方法运算得到一个真正的注册码和用户输入的进行比较不就知道了吗?Yeah,也就是 [@
.!~E)P 真正的注册码 = f(用户名) ?{[
v+t# 和Y = f(x) 是一样的 YuO.yh_ 然后就是很经典的比较了,为什么说经典呢? ,5h)x"s 因为大概有60%的软件是这么做的,到底是什么比较呢,看看 XuFYYx~ ^3 {N+$Q' 请注意这里会有错误处理的噢,在这之前呢,就是经典比较啊,如果这里的错误处理提示我们诸如:注册错误之类的东西,我们就很容易定位到经典比较了。 p;>ec:z3M cPlZXf 那么上面的流程在汇编语言里面是怎么实现的呢? 比较有2种方式,直接和间接,直接就是用: ,
K~}\CR cmp x, y MDn
ua je (jne) label ``hf=
`We 这里的x和y只是一个符号,实际上可能是寄存器和存储器 Hquc
o 间接的呢?调用一个子程序比较,如下面的代码 K &N if (strcmp(&x, & y)) //如果strcmp返回值是1 ,s"^kFl printf(“right”); H& | |