教你花样破解一个crackme并去除暗桩,并附带详细原理讲解
社区服务
火星文
银行
结婚
道具中心
勋章中心
管理操作原因
基本信息
管理团队
管理操作
在线会员
会员排行
版块排行
帖子排行
手机版
小说论坛
用户中心
搜索
银行
猴岛论坛
帖子
用户
版块
帖子
高级搜索
综合游戏交流
跑跑卡丁车
社区服务
签到统计
原神
关闭
选中
1
篇
全选
猴岛论坛
电脑百科
教你花样破解一个crackme并去除暗桩,并附带详细原理讲解
发帖
回复
倒序阅读
最近浏览的帖子
最近浏览的版块
« 返回列表
新帖
悬赏
任务
交易贴
自动发卡
拍卖
红包
际遇红包
3
个回复
[资源分享]
教你花样破解一个crackme并去除暗桩,并附带详细原理讲解
楼层直达
阿里云服务器
ZxID:12008696
关注Ta
注册时间
2010-05-09
最后登录
2017-06-30
发帖
20688
在线
4023小时
精华
1
DB
5183
威望
96
保证金
0
桃子
8
鲜花
0
鸡蛋
0
访问TA的空间
加好友
用道具
发消息
加好友
他的帖子
对该用户使用道具
等级:
禁止发言
举报
只看楼主
使用道具
楼主
发表于: 2015-08-04
0
教你花样破解一个crackme并去除暗桩,并附带详细原理讲解
破解步骤01:查壳与
为什么要查壳?因为有些程序为了减少体积,或者是为了防止破解,会给自己的程序加壳。这种情况下直接来破解程序是非常麻烦的。
这就好比一个现实生活中的例子,比如说
我的电脑坏了,我需要维修我的电脑,那么我必须把机箱外壳拆开才能对里面的电路板进行操作。
这个例子就是一个现实生活中的“脱壳”例子。同理,我们的软件有时候也有壳,如果有壳我们必须把壳搞掉,要不然非常难操作的。
当然带壳操作也不是不可以,至少我们现阶段的能力是做不到这一点的。
好,我们来查壳:
什么壳都没有,就是一个裸程序。看到希望了吧?
这里给新人们提醒一下,这里虽然显示的是Visual C++,其实这软件是易语言写的。
易语言用的是VC的link.exe,所以当然软件入口是一样的。当然,这并不重要,只要是无壳我们就开始直接搞。
破解步骤02:信息收集
啥?你说上od?错!
拿到一个软件直接上od是万万不可的。因为你根本就不知道这个软件是什么习性,至少你也要正常跑起来这个软件看看是什么效果。
于是,我们走起~
就是它了,没壳还那么嚣张。我们随意输入进去一个
注册码
看看?
弹了一个小的
消息框
,提示你注册失败。点击确定之后,这个消息框就没了,但是
并不会影响程序运行
。你知道为什么我把这两个东西标红么?因为这是破解的
关键点
!
我们利用api断点来定位关键代码的时候,是需要知道行为的。因为,api有很多,有拦截对话框的,有拦截日期的,有拦截文件的……所以你必须知道程序的行为才能一击必杀。
那么,这时候你应该知道下什么api断点了吧,嗯,真聪明,就是拦截对话框!
好,让我们走起!
破解步骤03:od调试
除了一些特殊的软件,破解是没有什么捷径的,最好的方法就是用od来调试。
od是一种调试器,这个调试器是直接调试汇编,也就是机器码,来进行工作的。这也就是说,我们需要了解一些汇编语言的知识。
载入od,说好的下API断点呢?来来来,MessageBoxA下了!
这个MessageBoxA断点,就是当软件即将弹出消息框的时候,把软件中断下来,也就是拦截消息框。这样我们不就可以快速找到弹对话框的位置,然后对代码进行处理了么?
好,这时候把程序跑起来,然后注册码随便输入,点击注册,软件即将弹出对话框……duang!被od拦截了,看~
这时候od已经把这个软件挂起了,我们可以对软件施工了。
大家注意,因为是api断点,断点是断在系统API上的。所以,我们不能直接对这里的代码进行分析——因为这是windows系统的代码呀!
如果你把这里的代码修改了,非但程序没有任何变化,反而windows系统就大难临头了~于是乎,我们需要一些操作,返回到程序自身的代码才行,也就是大家所说的“返回到自己的领空”。
我们点击这个按钮——执行到返回:
多点几次,直到上方标题栏的模块字样显示出软件名称,这就是回到程序自己的领空了。然而回到领空之后我们还要掌握一些小技巧,才能精准的定位到关键代码。
下面介绍第一种方法:
这种方法又叫做返回法。适合点击对话框之后,
程序能够正常运行
的情况。
之前我们说过,点击了那个确定之后,程序不会自动关闭,而是可以继续运行的。那么这种方法完全适用。
就拿这个软件来说,当我们刚刚回到领空之后,会发现并没有什么地方能将那个调用跳过去。那么这时候我们就点击那个执行到返回按钮。
直到这里:
这里有一个call,也就是调用子函数,这个call上面压了一大堆东西,倍有易语言的风格。
这时候,代码就变得可疑了,来来来,让我们往上看!
惊现注册码!这个软件的注册码是固定的(我说追码非常容易吧……毕竟这个软件是我自己写的)。这时候我们已经可以拿这个注册码去注册了。
但是,注册码并不是我们的目标,我们的目标是练手,把这个软件爆破了。
我们继续看,注册码被压入栈之后,下面不远处有个cmp,然后紧接着是一个je。这个je可是跳的非常可疑呀,
直接跳向了那个弹窗的call
。
你没看错,这就是关键跳了~恭喜~如果你不确定的话,可以将这里下一个断点,然后运行下程序,随意输入个注册码试试,肯定会被断在这里。
既然这样,让我们继续研究下,这个je是如果
注册码不正确的时候就跳转
,所以我们只要把这个跳转废了,也就是让它不跳,我们就可以破解掉这里的验证。
于是,果断nop掉。
接下来还有一个新人们比较常问的问题——如何保存修改到程序呢?别怕,这篇文章为你们做了充分的考虑。
nop掉之后,被修改的代码会变成红色。让我们拖拽鼠标,选中这部分代码(不选中也行),然后右键——复制到可执行文件——所有修改:
(注:本文来自
吾爱破解
论坛,作者Angelic47,请其他站点保留版权,不要恶意转载!)
然后会出现一个这样的对话框,不怕,我们继续右键——保存文件
然后你就可以保存一个新的exe啦~文件名不要重名即可,防止以后需要原来的文件。
好了,这时候你已经完成了一次破解。然后运行一下……
嗯,很正常,于是赶紧输入个注册码,点击确定……啥?软件消失了?
破解步骤04:去退出暗桩
“没错,我早就料到有人会破解掉我的软件,于是乎,我加入了防破解的自毁功能,如果你爆破我的软件被我抓到了,程序就不能运行了。”
大家注意,我们遇到典型的退出暗桩了——这还算幸运的,你要知道,有些软件是带有格式化暗桩的……如果触发了后果是不堪设想的,所以,论虚拟机的重要性~
俗话说的好,见招拆招才重要……怎么了?害怕了?退出暗桩而已,有什么可怕的,虚什么虚?拿起我们新保存的那个软件!上od!用我们的大杀器——程序退出API断点!
ExitProcess是一个程序退出的API,程序调用这个之后,就会退出。我们下这个断点,当程序即将退出的时候,就会被拦截下来。
Duang~程序又一次被od打了个正着。想退出?门都没有,把你拦下来了。和以前一样,程序还是断在系统领空的,我们需要找到程序自己的领空才行。
还记得我教你的第一种方法?想要点击执行到返回?错!你点一下试试,点了程序就退出啦~
这时候该怎么办呢?
下面介绍第二种方法:
这种方法是回溯法,也就是看堆栈的调用,然后手动去找代码。
首先,什么是堆栈?堆栈是一个计算机术语,或许没有学过编程的很难理解。那么,我再举个例子吧,保证一看即懂:
刚开始,我的桌面是空的,这时候有人送我了一封信,我便读信,信中说要我拿起旁边的书,我便把信放在桌子上,把书拿来压在信上,开始读书。书中说我要打电话给xxx,我便把电话拿过来,压在书上,开始打电话。
这里的桌面就是一个典型的堆栈。刚开始堆栈是空的,然后放上了一封信,接着信的上面压入了一本书,又压上了一部电话。
当我打完电话后,就可以把电话拿下来,继续读书了。读完书,就可以把书拿下来,继续读信了……直到桌面空了为止(程序自然退出)。
这就是堆栈工作的整个过程。有时候,为了找某处的代码,我们是可以翻堆栈的,从堆栈里面翻出点东西。这或许需要一点破解的经验,但是对于新人来说,如果程序不是很庞大,随意乱翻都是能找到的。
听起来或许很麻烦,但是实际上并不是很难。让我们来试试。
(注:本文来自吾爱破解论坛,作者Angelic47,请其他站点保留版权,不要恶意转载!)
我们点击这个按钮,打开堆栈:
如图所示:
这就是调用栈了。我们看到,ExitProcess在最顶上,程序即将退出了。那么,我们双击下面那层,进去看看呢?
看,代码好像比较乱,但是至少找到了一个call。我们把call下个断点,然后重新跑程序:
然后,和之前一样,运行程序,输入注册码,注册——程序果然被断在这里:
但是,通过观察我们可以发现,这个地方不应该是call过来的,应该是跳过来的。而上面有许多没有分析的代码,或许我们一会可以对那地方研究研究。
这是个什么情况呢?我们观察下右下角:
右下角其实也是堆栈。这里又出现我们输入的假注册码了。这里是怎么回事呢?我们不妨这样:
这是什么原理呢?其实就是快速跳到这附近,对附近的代码进行观察。和之前的那个绿色的堆栈窗口的原理是一模一样的。
然后变成了这个样子:
灰不溜秋的不好看,但是上面又一次爆注册码!看来这里一定有猫腻,通过堆栈来看,这里确实是被执行了,而不是一些无用的二进制数据。
这种情况下,我们右键——分析——从模块中删除分析
然后成了这样:
我们看,分析的代码依然很乱,而且有一些错误,但是并不要紧。我们看,这里有个跳转,正好能直接跳到下面那个退出的call。
看到这里,你可能会不确定这到底是不是关键跳。没事,让我们把这里F2下个断点,然后重新跑一遍程序。你会发现,点击注册之后真的会断在这里。
而且右边的寄存器已经爆注册码,这让我们更加肯定是这里。
那么,既然注册码不正确,这里就跳向退出,那么我们直接nop掉好了。
和之前一样,保存一个新文件,然后填入随意注册码——点击注册——卧槽?这又是什么?
(注:本文来自吾爱破解论坛,作者Angelic47,请其他站点保留版权,不要恶意转载!)
破解步骤05:再去暗桩
很不幸,你又一次中了我的暗桩。
我们来看看这个暗桩是怎么回事。这里的特征是,弹出一个消息框,点击确定后程序自动关闭。
那么,我们下两个api断点都可以,也就是说,下退出断点,或者是消息框断点,都是一样的。
我们这里下消息框断点好了。这样,我们还可以执行到返回,而不至于它立即退出。至是,返回的时候我们要小心,不能触发了退出,也就是过头了。
看,又一次被od拦截,我们多点几次执行到返回,回到程序领空,成了这样:
因为目前我们也不知道退出的call到底在哪,所以不能继续执行到返回了,我们来看堆栈:
啥?你说你找不到这行?把堆栈使劲往下拽,一定有的~
跟踪进去看看:
又是一个倍有易语言风味的call。很明显,这里的这个call就是弹出对话框了。那么,下面那个call会不会是退出呢?不好说~猜测而已。
往上看,你会清楚的发现上面有一个很大的je。
这个je是怎么回事?好像是如果注册码正确的话,就会向正确的功能,反之不跳转。
没错,就是这样。还是那句老话,不确定的话可以断点,然后重新运行,断下来之后观察下。
这里可就不能直接nop喽~你要nop了,那这个程序无论注册码正确或者不正确,都会触发暗桩。为什么?因为该跳的时候跳不动了,所以就算正常的注册码也不能通过这里的验证了。
那么我们该怎么改呢?改的方法是把这里的je换成jmp,让它强制跳,不该跳的时候也跳,这样不就搞定了么?
好,我们保存程序吧……运行,输入注册码,点击确定,祈祷这次别再有暗桩了……
你成功了!~
此时此刻你一定心里非常兴奋,这时候的程序会发出欢呼声,并一直播放一个表示胜利的音乐。
最后我想说:
看完这篇文章,你应该也知道api断点的工作原理是什么了:拦截软件的行为。
破解就是入门难,实际上哪有你想象的那么难?你需要的是理解而不是背诵。熟练使用api断点,你就能搞定大部分不加壳或者能脱掉壳的软件。
如果不信,可以去尝试一下,你会有惊奇的发现。
本帖de评分:
共
0
条评分
隐藏
本帖de打赏:
共
条打赏
隐藏
打赏
收藏
新鲜事
相关主题
教你如何破解开机密码
【绿色软件】无线网络随时用 教你如何破解密码
【無名】教你免费制作一个属于自己的个人博客!(分帖~)
手把手教你如何破解无线路由
教你如何破解pubwin2009,免费上网,主机不显非法!!!
一步一步教你免费建一个网站!
回复
引用
鲜花[
0
]
鸡蛋[
0
]
青空
ZxID:19170623
关注Ta
注册时间
2012-07-24
最后登录
2025-01-15
发帖
48255
在线
7892小时
精华
63
DB
0
威望
5200
保证金
0
桃子
47
鲜花
250
鸡蛋
250
访问TA的空间
加好友
用道具
发消息
加好友
他的帖子
对该用户使用道具
qq
等级:
督察
配偶:
Null.
站务/记者团/我爱我宠
举报
只看该作者
沙发
发表于: 2015-08-04
0
我看不懂。。
本帖de评分:
共
0
条评分
隐藏
本帖de打赏:
共
条打赏
隐藏
回复
引用
新鲜事
鲜花[
250
]
鸡蛋[
250
]
这屎里有毒
ZxID:1024363
关注Ta
注册时间
2004-08-10
最后登录
2020-03-11
发帖
1820
在线
112小时
精华
0
DB
66
威望
12222
保证金
0
桃子
0
鲜花
0
鸡蛋
0
访问TA的空间
加好友
用道具
发消息
加好友
他的帖子
对该用户使用道具
qq
等级:
大将
配偶:
这毒里有尿
举报
只看该作者
板凳
发表于: 2015-08-04
0
图片好美
本帖de评分:
共
0
条评分
隐藏
本帖de打赏:
共
条打赏
隐藏
回复
引用
新鲜事
鲜花[
0
]
鸡蛋[
0
]
« 返回列表
发帖
回复
关闭