修改关键CALL,小白也能让软件真实被破解!
今天要分享的主题是修改关键call,在讲之前还是要说一下,这个东西的应用场景。很多软件,我们在爆破了它的关键跳,点击注册以后也显示成功了,但是在使用它某些功能时候,仍然会提示我们,当前使用的是未注册版本,需要我们注册。
这种伪注册,不知道大家有遇到过吗?
为什么修改关键call能实现软件的真实破解注册呢?首先说明一下,call就相当于一个子程序,他们共同组成了一个软件。
就像吾爱破解论坛 下面有很多 版块 每个版块都可以单独发帖,这些版块构成了吾爱破解论坛。
回过来说修改关键call,软件在计算 自己是否已经被注册时候,它调用的是同样的call。
也就是说,即使它有一万个功能,并且这些功能分布在十万个不同的call(子程序)里面,但在它们判断是否注册时候,只会调用同一个call 。
我们把它叫做关键call,所以修改了这个地方,就等于改了全世界!
----------------------------------------
用到的cm,我会放在附件里面,Borland Delphi 无壳。
运行起来。有个NAG 窗口
F12 暂停,alt+F9然后点击NAG窗口的确定按钮 此时就会断下来,向下跟踪,会执行到这里。
接下来去掉就可以了。接下来载入去掉NAG窗口的程序,运行起来。
随便输入注册名和密码,点击确定
没有任何反应!
这个时候可以用OD带的插件,万能断点!
还有另外一种方法,就是Borland Delphi破解专用工具,dededark
我们可以看到,按钮时间的起始位置是00450518,
Ctrl+g 输入00450518到达这个位置,F2 下断点,运行程序,然后重新点击一下确定按钮。
被断下来了,接下来,向下跟踪,寻找关键call ,一般关键call 就在关键跳的上面两行
-------------------------------------
比如:
call 004XXXX //这里就是关键call
cmp xxx,xxx //对比真假
je xxx //关键跳
--------------------------------------
这里就是关键CALL,错误了就跳,正确了就不跳。
注意这个地址00453BD4
这个地址里面存放的数据和0做了比较,如果是0就跳向失败,不是0就注册成功了。
我们F7进入关键call子程序。
比如软件有N个地方都会调用这个call来判断自己是否已经被注册。那怎么才能一劳永逸的修改呢?
只要将 call的返回地址(00453BD4)里面存放的数据,在返回时候 设定成为相同或者不同的数值即可(具体是否相同,要根据不同软件设定)。
这个cm 我们为了实现成功,只要将00453BD4 里面的数据设定成为非零数据即可。
我们可以这么改。
mov byte ptr ds:,0x1将 数值1 存在00453BD4这个地方,然后retn直接返回。
看效果。
wapjltb 发表于 2022-5-28 11:10
请教怎么去掉NAG窗口?
跟踪到nag窗口那个代码段开始的时候 直接retn 或者 直接nop掉nag窗口的CALL 本人擅长Ai、Fw、FI、Br、Ae、Pr、Id、Ps、CDR等软件的安装与卸载, 精通CSS、JavaScript、PHP、ASP、C、C++、C#、Java、VB、Go、Ruby、Perl、Lisp、python、Objective-C、ActionScript、Pascal、spss、sas等单词的拼写, 熟悉Windows、Linux、Mac、Android、IOS、WP8等系统的开关机。
直接改他逻辑是吧 你这算是爆破吧?{:1_904:} 找到关键点就好,没找到,无头苍蝇{:1_909:} 为啥都用这个CM,不止一次看到了 天使3号 发表于 2022-5-25 14:31
直接改他逻辑是吧
才刚刚学,还不太懂 我是来日狗的 发表于 2022-5-25 14:34
你这算是爆破吧?
我一直以为改跳转才算爆破{:1_896:} 谢谢,学习了 学习了,谢谢提供分享。 最难的是如何找到关键call,这个才是问题的关键