吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 49243|回复: 209
收起左侧

[原创] [新手福利]来来来,教你花样破解一个crackme并去除暗桩,并附带详细原理讲解

    [复制链接]
Angelic47 发表于 2015-7-30 15:01
本帖最后由 Angelic47 于 2015-7-30 15:19 编辑

警告:为避免发生头晕恶心、狂吐不止、脏话爆粗等严重不良反应,请非新手者立即点击右上角。本教程为新手量身定造,附带超详细原理讲解。新手不等于完全无基础,请先做好一些准备,如od的使用等等。本文章适合于有些基础但徘徊在入门门槛上的那些新手们。
首先,对于一些新手来说,可能不知道crackme是个什么东西。
crackme,是一种专门为破解而生的小程序。这个程序制作的目的只有一个——作者希望你把它破解了。
也就是说,这玩意是用来练手的,或者是用来研究逆向的,而没有太多的现实生活中的实际应用价值。
我们学破解,玩crackme是很正常的,就和闯关游戏一样。这次就带领大家来破解一个crackme,让新手们快速入门破解!


嘛,crackme goes here~
crackme.zip (841.16 KB, 下载次数: 1413)

看到论坛上一群新人在求破,或者是一群初学破解的人拿到软件后找不到思路,于是我做了这个crackme,并自己破解自己,发出来这个教程。
大家拿到crackme之后可以尝试自己破解一下,目标是这样的:
  • 最简单的方式是追码,一追即得,非常简单;
  • 尝试爆破,这个crackme是带暗桩的,你要试试;
  • 如果你把暗桩搞掉了,那么就尝试直接去掉登录框,当然这里不写这个方法啦,有兴趣的可以试试。


好了,教程开始!我们这次的目标是爆破它。

破解步骤01:查壳与脱壳

为什么要查壳?因为有些程序为了减少体积,或者是为了防止破解,会给自己的程序加壳。这种情况下直接来破解程序是非常麻烦的。
这就好比一个现实生活中的例子,比如说我的电脑坏了,我需要维修我的电脑,那么我必须把机箱外壳拆开才能对里面的电路板进行操作。
这个例子就是一个现实生活中的“脱壳”例子。同理,我们的软件有时候也有壳,如果有壳我们必须把壳搞掉,要不然非常难操作的。
当然带壳操作也不是不可以,至少我们现阶段的能力是做不到这一点的。

好,我们来查壳:
1.png
什么壳都没有,就是一个裸程序。看到希望了吧?
这里给新人们提醒一下,这里虽然显示的是Visual C++,其实这软件是易语言写的。
易语言用的是VC的link.exe,所以当然软件入口是一样的。当然,这并不重要,只要是无壳我们就开始直接搞。



破解步骤02:信息收集

啥?你说上od?错!
拿到一个软件直接上od是万万不可的。因为你根本就不知道这个软件是什么习性,至少你也要正常跑起来这个软件看看是什么效果。
于是,我们走起~
2.png
就是它了,没壳还那么嚣张。我们随意输入进去一个注册码看看?
3.png
弹了一个小的消息框,提示你注册失败。点击确定之后,这个消息框就没了,但是并不会影响程序运行。你知道为什么我把这两个东西标红么?因为这是破解的关键点
我们利用api断点来定位关键代码的时候,是需要知道行为的。因为,api有很多,有拦截对话框的,有拦截日期的,有拦截文件的……所以你必须知道程序的行为才能一击必杀。
那么,这时候你应该知道下什么api断点了吧,嗯,真聪明,就是拦截对话框!
好,让我们走起!




破解步骤03:od调试

除了一些特殊的软件,破解是没有什么捷径的,最好的方法就是用od来调试。
od是一种调试器,这个调试器是直接调试汇编,也就是机器码,来进行工作的。这也就是说,我们需要了解一些汇编语言的知识。
载入od,说好的下API断点呢?来来来,MessageBoxA下了!
4.png
这个MessageBoxA断点,就是当软件即将弹出消息框的时候,把软件中断下来,也就是拦截消息框。这样我们不就可以快速找到弹对话框的位置,然后对代码进行处理了么?
好,这时候把程序跑起来,然后注册码随便输入,点击注册,软件即将弹出对话框……duang!被od拦截了,看~
5.png
这时候od已经把这个软件挂起了,我们可以对软件施工了。
大家注意,因为是api断点,断点是断在系统API上的。所以,我们不能直接对这里的代码进行分析——因为这是windows系统的代码呀!
如果你把这里的代码修改了,非但程序没有任何变化,反而windows系统就大难临头了~于是乎,我们需要一些操作,返回到程序自身的代码才行,也就是大家所说的“返回到自己的领空”。
我们点击这个按钮——执行到返回:
6.png
多点几次,直到上方标题栏的模块字样显示出软件名称,这就是回到程序自己的领空了。然而回到领空之后我们还要掌握一些小技巧,才能精准的定位到关键代码。

下面介绍第一种方法:

这种方法又叫做返回法。适合点击对话框之后,程序能够正常运行的情况。
之前我们说过,点击了那个确定之后,程序不会自动关闭,而是可以继续运行的。那么这种方法完全适用。
就拿这个软件来说,当我们刚刚回到领空之后,会发现并没有什么地方能将那个调用跳过去。那么这时候我们就点击那个执行到返回按钮。
直到这里:
7.png
这里有一个call,也就是调用子函数,这个call上面压了一大堆东西,倍有易语言的风格。
这时候,代码就变得可疑了,来来来,让我们往上看!
8.png
惊现注册码!这个软件的注册码是固定的(我说追码非常容易吧……毕竟这个软件是我自己写的)。这时候我们已经可以拿这个注册码去注册了。
但是,注册码并不是我们的目标,我们的目标是练手,把这个软件爆破了。
我们继续看,注册码被压入栈之后,下面不远处有个cmp,然后紧接着是一个je。这个je可是跳的非常可疑呀,直接跳向了那个弹窗的call
你没看错,这就是关键跳了~恭喜~如果你不确定的话,可以将这里下一个断点,然后运行下程序,随意输入个注册码试试,肯定会被断在这里。
既然这样,让我们继续研究下,这个je是如果注册码不正确的时候就跳转,所以我们只要把这个跳转废了,也就是让它不跳,我们就可以破解掉这里的验证。
于是,果断nop掉。
9.png
接下来还有一个新人们比较常问的问题——如何保存修改到程序呢?别怕,这篇文章为你们做了充分的考虑。
nop掉之后,被修改的代码会变成红色。让我们拖拽鼠标,选中这部分代码(不选中也行),然后右键——复制到可执行文件——所有修改:
(注:本文来自吾爱破解论坛,作者Angelic47,请其他站点保留版权,不要恶意转载!)
10.png
然后会出现一个这样的对话框,不怕,我们继续右键——保存文件
11.png
然后你就可以保存一个新的exe啦~文件名不要重名即可,防止以后需要原来的文件。
好了,这时候你已经完成了一次破解。然后运行一下……
嗯,很正常,于是赶紧输入个注册码,点击确定……啥?软件消失了?




破解步骤04:去退出暗桩

“没错,我早就料到有人会破解掉我的软件,于是乎,我加入了防破解的自毁功能,如果你爆破我的软件被我抓到了,程序就不能运行了。”
大家注意,我们遇到典型的退出暗桩了——这还算幸运的,你要知道,有些软件是带有格式化暗桩的……如果触发了后果是不堪设想的,所以,论虚拟机的重要性~
俗话说的好,见招拆招才重要……怎么了?害怕了?退出暗桩而已,有什么可怕的,虚什么虚?拿起我们新保存的那个软件!上od!用我们的大杀器——程序退出API断点!
12.png
ExitProcess是一个程序退出的API,程序调用这个之后,就会退出。我们下这个断点,当程序即将退出的时候,就会被拦截下来。
13.png
Duang~程序又一次被od打了个正着。想退出?门都没有,把你拦下来了。和以前一样,程序还是断在系统领空的,我们需要找到程序自己的领空才行。
还记得我教你的第一种方法?想要点击执行到返回?错!你点一下试试,点了程序就退出啦~
这时候该怎么办呢?

下面介绍第二种方法:

这种方法是回溯法,也就是看堆栈的调用,然后手动去找代码。
首先,什么是堆栈?堆栈是一个计算机术语,或许没有学过编程的很难理解。那么,我再举个例子吧,保证一看即懂:
刚开始,我的桌面是空的,这时候有人送我了一封信,我便读信,信中说要我拿起旁边的书,我便把信放在桌子上,把书拿来压在信上,开始读书。书中说我要打电话给xxx,我便把电话拿过来,压在书上,开始打电话。
这里的桌面就是一个典型的堆栈。刚开始堆栈是空的,然后放上了一封信,接着信的上面压入了一本书,又压上了一部电话。
当我打完电话后,就可以把电话拿下来,继续读书了。读完书,就可以把书拿下来,继续读信了……直到桌面空了为止(程序自然退出)。
这就是堆栈工作的整个过程。有时候,为了找某处的代码,我们是可以翻堆栈的,从堆栈里面翻出点东西。这或许需要一点破解的经验,但是对于新人来说,如果程序不是很庞大,随意乱翻都是能找到的。
听起来或许很麻烦,但是实际上并不是很难。让我们来试试。
(注:本文来自吾爱破解论坛,作者Angelic47,请其他站点保留版权,不要恶意转载!)

我们点击这个按钮,打开堆栈:
14.png
如图所示:
15.png
这就是调用栈了。我们看到,ExitProcess在最顶上,程序即将退出了。那么,我们双击下面那层,进去看看呢?
16.png
看,代码好像比较乱,但是至少找到了一个call。我们把call下个断点,然后重新跑程序:
17.png
然后,和之前一样,运行程序,输入注册码,注册——程序果然被断在这里:
18.png
但是,通过观察我们可以发现,这个地方不应该是call过来的,应该是跳过来的。而上面有许多没有分析的代码,或许我们一会可以对那地方研究研究。
这是个什么情况呢?我们观察下右下角:
19.png
右下角其实也是堆栈。这里又出现我们输入的假注册码了。这里是怎么回事呢?我们不妨这样:
20.png
这是什么原理呢?其实就是快速跳到这附近,对附近的代码进行观察。和之前的那个绿色的堆栈窗口的原理是一模一样的。
然后变成了这个样子:
21.png
灰不溜秋的不好看,但是上面又一次爆注册码!看来这里一定有猫腻,通过堆栈来看,这里确实是被执行了,而不是一些无用的二进制数据。
这种情况下,我们右键——分析——从模块中删除分析
22.png
然后成了这样:
23.png
我们看,分析的代码依然很乱,而且有一些错误,但是并不要紧。我们看,这里有个跳转,正好能直接跳到下面那个退出的call。
看到这里,你可能会不确定这到底是不是关键跳。没事,让我们把这里F2下个断点,然后重新跑一遍程序。你会发现,点击注册之后真的会断在这里。
而且右边的寄存器已经爆注册码,这让我们更加肯定是这里。
那么,既然注册码不正确,这里就跳向退出,那么我们直接nop掉好了。
24.png
和之前一样,保存一个新文件,然后填入随意注册码——点击注册——卧槽?这又是什么?
25.png

(注:本文来自吾爱破解论坛,作者Angelic47,请其他站点保留版权,不要恶意转载!)




破解步骤05:再去暗桩


很不幸,你又一次中了我的暗桩。
我们来看看这个暗桩是怎么回事。这里的特征是,弹出一个消息框,点击确定后程序自动关闭。
那么,我们下两个api断点都可以,也就是说,下退出断点,或者是消息框断点,都是一样的。
我们这里下消息框断点好了。这样,我们还可以执行到返回,而不至于它立即退出。至是,返回的时候我们要小心,不能触发了退出,也就是过头了。
26.png
看,又一次被od拦截,我们多点几次执行到返回,回到程序领空,成了这样:
27.png
因为目前我们也不知道退出的call到底在哪,所以不能继续执行到返回了,我们来看堆栈:
28.png
啥?你说你找不到这行?把堆栈使劲往下拽,一定有的~
跟踪进去看看:
29.png
又是一个倍有易语言风味的call。很明显,这里的这个call就是弹出对话框了。那么,下面那个call会不会是退出呢?不好说~猜测而已。
往上看,你会清楚的发现上面有一个很大的je。
30.png
这个je是怎么回事?好像是如果注册码正确的话,就会向正确的功能,反之不跳转。
没错,就是这样。还是那句老话,不确定的话可以断点,然后重新运行,断下来之后观察下。
这里可就不能直接nop喽~你要nop了,那这个程序无论注册码正确或者不正确,都会触发暗桩。为什么?因为该跳的时候跳不动了,所以就算正常的注册码也不能通过这里的验证了。
那么我们该怎么改呢?改的方法是把这里的je换成jmp,让它强制跳,不该跳的时候也跳,这样不就搞定了么?
好,我们保存程序吧……运行,输入注册码,点击确定,祈祷这次别再有暗桩了……
31.png
你成功了!~
此时此刻你一定心里非常兴奋,这时候的程序会发出欢呼声,并一直播放一个表示胜利的音乐。







最后我想说:


看完这篇文章,你应该也知道api断点的工作原理是什么了:拦截软件的行为。
破解就是入门难,实际上哪有你想象的那么难?你需要的是理解而不是背诵。熟练使用api断点,你就能搞定大部分不加壳或者能脱掉壳的软件。
如果不信,可以去尝试一下,你会有惊奇的发现。

点评

膜拜楼下大牛  发表于 2015-8-6 10:05
文章实在太浅了,1s看完  发表于 2015-8-1 12:40

免费评分

参与人数 99吾爱币 +11 热心值 +99 收起 理由
hu957 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
亦菲冲天 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
lyxsh2013 + 1 + 1 谢谢@Thanks!
ammo + 1 + 1 谢谢@Thanks!
向挽. + 1 + 1 谢谢@Thanks!
贝优妮塔 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
18898341545 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
IceWind + 1 已经处理,感谢您对吾爱破解论坛的支持!
ly67 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
redc11 + 1 + 1 我很赞同!
海天一色001 + 1 + 1 谢谢@Thanks!
houjingyi + 1 + 1 我很赞同!
5211413 + 1 谢谢@Thanks!
时七 + 1 谢谢@Thanks!
杯具加杯具 + 1 典型的列子,值得学习!
duhai973 + 1 谢谢@Thanks!
riwfhiu + 1 感谢分享,小白正需要呢,嘿嘿
陈思颖Zora + 1 按着帖子学习,同步步骤真的破解了你给的E语言
acmepoyen + 1 谢谢@Thanks!
联盟.视频制作v + 1 我很赞同!
lshaiwo + 1 我很赞同!
大哥金 + 1 谢谢@Thanks!
缘何自己 + 1 感谢您的宝贵建议,我们会努力争取做得更好.
cc286866604 + 1 已答复!
a277683013 + 1 我很赞同!
羊之心羽 + 1 我很赞同!
qweeee + 1 谢谢@Thanks!
GodHand + 1 谢谢@Thanks!
掂软心内 + 1 谢谢@Thanks!
怒风 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩.
zy2pj + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
小人国历险记 + 1 鼓励转贴优秀软件安全工具和文档!
peter_king + 1 谢谢@Thanks!
我爱妮儿 + 1 谢谢@Thanks!
纷飞雨雪 + 1 我很赞同!
dtkissme + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
DCO + 1 谢谢楼主,小菜最近正在看关于暗桩的
LadyGaga + 1 我很赞同!
学妹不要这样 + 1 谢谢@Thanks!
dami400 + 1 师傅,请把我收了吧!
meiyoudao + 1 我只能说,照葫芦画瓢我会,让我自己搞一个..
419167861 + 1 谢谢@Thanks!
zhangqino2 + 1 谢谢@Thanks!
夜之零落兮 + 1 受教了
79876040 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
Flowerinjury + 1 热心回复!
fzx118 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
jmzjh99 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩.
飘零雪 + 1 我很赞同!
470798745 + 1 谢谢@Thanks!
红尘旧梦~ + 1 鼓励转贴优秀软件安全工具和文档!
st1717 + 1 我很赞同!
动物凶猛 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
tm895994936 + 1 我很赞同!
零點風暴 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
qwe1035135872 + 1 热心回复!
微博2016 + 1 谢谢分享,赞一个
2864095098 + 1 谢谢@Thanks!
sunhao810130 + 1 跟着做都成功,虽然糊里糊涂的
guojing776 + 1 谢谢@Thanks!
心飞扬520 + 1 谢谢@Thanks!
bpsd + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
lakshmi + 1 谢谢@Thanks!
349875904 + 1 谢谢@Thanks!
胡渣熟男 + 1 热心回复!
hjk + 1 我很赞同!
a76382449 + 1 已经处理,感谢您对吾爱破解论坛的支持!
guangguang210 + 1 谢谢@Thanks!
songxd + 1 我很赞同!
xuenii + 1 新手很有帮助的帖子。
royoko + 1 我很赞同!
asdnasiudn + 1 感谢您的宝贵建议,我们会努力争取做得更好.
tao849476012 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩.
v337392508v + 1 我很赞同!
alccc + 1 谢谢@Thanks!
hefan888 + 1 谢谢@Thanks!
love8702 + 1 鼓励转贴优秀软件安全工具和文档!
125733578 + 1 热心回复!
华夏小荧虫 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
cr7890 + 1 谢谢@Thanks!
jinwu2029 + 1 谢谢@Thanks!
172896906 + 1 666
youngnku + 1 我很赞同!
swl + 1 我很赞同!
dgcrow + 1 热心回复!
gaod + 1 很适合小白
yuluo5566 + 1 我很赞同!
丶木屐帽子 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
JackDx + 1 我很赞同!
Mar-king + 1 我很赞同!
dddou2000 + 1 热心回复!
w19901123 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
w571you + 1 楼主其实我想说应该是You succeed.
qianda66 + 1 我很赞同!
wweqq77 + 1 非常感谢分享经验
jiujie + 1 鼓励转贴优秀软件安全工具和文档!
苏紫方璇 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
lielanyu + 1 我很赞同!
za515217964 + 1 鼓励转贴优秀软件安全工具和文档!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

a46213599 发表于 2015-8-4 06:55
修改下面几处:
00401132      0F84 6D000000 je crackme.004011A5                      ;  NOP掉此处,转向-->使劲猜。。。
00401138   .  E8 00000000   call crackme.0040113D                    ;  无

00401211      0F85 66000000 jnz crackme.0040127D                     ;  NOP掉此处,使其转004012EC

004012B2      EB 56         jmp Xcrackme.0040130A                    ;  ................最想要的
004012B4      90            nop
004012B5      90            nop
004012B6      90            nop
004012B7      90            nop

004012EC   .  E8 12010000   call crackme.00401403                    ;  破破破,还想破我软件吧?
004012F4   .  F8            clc
.......
004012FA   .  E8 10010000   call crackme.0040140F                    ;  程序终止
a46213599 发表于 2015-8-2 09:08
破解就是入门难,实际上哪有你想象的那么难?你需要的是理解而不是背诵。熟练使用api断点,你就能搞定大部分不加壳或者能脱掉壳的软件。

老师说的好!也祝我自己也破解成功了,但观察堆栈-->跟踪反汇编代码---这一步如果选错还是不行,不那么完全理解。

希望发个易语言源代码,我想好好研究一下,这个破解练习小软件很有意思。
扯淡的ni 发表于 2015-7-30 15:08
Cizel 发表于 2015-7-30 15:10
看着有点多的感觉。
马启龙 发表于 2015-7-30 15:14
下次来个 没有任何提示的软件来试试  没有标题没有 信息框
苏紫方璇 发表于 2015-7-30 15:15
感谢楼主发原创教程,支持楼主了
艾莉希雅 发表于 2015-7-30 15:15
LZ好评……新手福利向,跳步少
 楼主| Angelic47 发表于 2015-7-30 15:15
马启龙 发表于 2015-7-30 15:14
下次来个 没有任何提示的软件来试试  没有标题没有 信息框

这次中间有一段没有任何提示的,就是退出暗桩
下次我会写个什么提示都没有的那种,用消息断点
qianda66 发表于 2015-7-30 15:19
来顶下。。话说暗装还真是多啊。我最近想爆破一个软件,也是很多暗桩。。希望可以通过lz教程的练习爆破成功~~~
zizhuyifeng 发表于 2015-7-30 15:19
http://www.52pojie.cn/thread-389639-1-1.html能否指点一点,谢谢啦~~
头像被屏蔽
我宠我爱 发表于 2015-7-30 15:44
好评……新手福利向,跳步少
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-17 02:14

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表