0%

160个CrackMe笔记

从陌生开始练习。

001

破解的基本环境:

1
2
3
4
5
环境: 吾爱破解专用虚拟机(Windows XP) 以及配套的工具

转载的下载地址: 下载地址: http://pan.baidu.com/s/1xUWOY 密码: jbnq
WinXP SP3 + 52Pojie六周年纪念版OD + PEID + 汇编金手指。
160个CrackMe的打包文件。

2021年3月28日 第一个CrackMe 搞定。

程序分析

​ 首先观察这个程序的结构,然后多次点击会有不同的提示,而且有两种的的输入密码的方式。然后想了一下,我们试密码应该是试不出来的了,所以我们应该去爆破。(这个词吧,在大佬的眼中大概就是通过动态调试,然后将里面判断对错的地方给跳过去,这样的话,无论我们输入什么,不论对错,都会跳转到正确的地方)

​ 转载大佬的分析语句:

1
2
想要破解一个程序,必须先了解这个程序。所以,在破解过程中,对最初程序的分析很重要,他可以帮助我们理解作者的目的和意图,特别是对于注册码的处理细节,从而方便我们反向跟踪和推导。
打开CHM文件,将第一个文件 Acid burn.exe 保存下来,新建一个01的文件夹,将exe放到这里,同时将以后的分析文件也存放这里。打开Acid burn.exe,随意输入和点击,熟悉程序流程。

cpqDhQ.png

1
我们发现,这个软件分为了两个部分,一个是Serial/Name,需要输入用户名和注册码才能通过,另外一个Serial只需要输入一个注册码一类的东西。我们随意选一个开始,比如,先进行第一个。

cpqcXq.png

1
2
3
4
5
6
7
我们随意输入一个用户名和序列号(伪码):
伪码:
Name:112233
Serial:44556677
点击Check it Baby! 它会弹出一个对话框提示: Sorry, The Serial is incorrect !
再换几个随意试试,发现就这一种情况。
OK,出现了对话框这就很好办,说明作者在校验注册码之后发现如果错误了就直接弹窗,我们只要找到弹出对话框的地方,向上跟踪,就可以找出判断是否正确的地方了,jmp或者Nop就算爆破了。

开始CrackMe

我们用OD打开文件 ‘Acid burn.exe’ ,右键选择 用Jiack 打开,(或者直接将程序拖进 OD );

cpLp3d.png

打开后,可能会是几个小窗口的样子,这时我们可以点击那个上面的 ==C== 进入线程的调控。如图所示。

cpLBb6.png

所以我们先按下F9 运行,然后可以缩小OD界面,在桌面找到一个启动的方框。

cpOnIO.png

点击确定

然后进入后,再点击 并且点击

cpOaFS.png

直接点击 Check it baby 。然后返回的是Try Again。所以我们学习着点击k(快捷键Alt + K )去查看堆栈的情况。如图所示:

cpjN8g.png

这个时候,看着大佬的教程。观察到调用了两个 Message.Box .就是那两行。

cpjRxJ.png

然后根据我们进行判断(好吧,是大佬的猜测),因为前面的一个堆栈的地址为 77D。。。所以可能性较小,所以猜测更大的可能性是下面那个。于是乎目标可能在下面的那个跳转里面。

所以我们左键选中我们将要用的那一行,右键单击然后点击

cpvEss.png

跳转到里了。cpvMJU.png

所以我们在这个Call 这里设置断点。(方法点击这一行,然后右键点击断点切换)cpvdJO.png

先找到右下角的地方,看见返回的地方。

c9ikb4.png点击右键选择跟随

c9iZ5R.png

然后就可以看见前一副图的样子了。

c9itPI.png

c9irZQ.png

然后就可以看见这三跳转的点了。

c9FLkj.png

通过推断(大佬的分析)然后下断点。

然后将 sorry点击后,按F9执行,快速找到断点,将断点取消后,再按F9继续运行就可以得到了

c9kYgP.png

然后点击 check 就得到了。

这就是爆破的方法。

参考文章:

详情参考:参考文章1


002

环境

​ 与前面的一样。

程序分析

​ 首先进行运行一下,发现它大概是一个什么类型的应用,所以就先查壳。

image-20210329153142628

通过PEID查壳软件,进行查壳看的出来,这是一个没有壳的应用(因为我们可以看到他说他说VC编写的应用,所以应该就是没有壳的。)所以我们就把它放进OD里面看看,因为双击运行的时候可以运行,所以应该并不缺少什么DLL文件。

开始CrackMe

所以我们就右键单击应用程序然后使用od打开。image-20210329153438530

image-20210329153529443

然后看得出这个还是挺乱的一些小方格。所以我们先点击那个C的按钮,查看主线程。

按下F9开始运行程序:

image-20210329153745732

然后就发现这个应用开始运行了。我们随意的输入几个值进行试试。然后在输入错误有弹窗的时候,就将判断的过程给去掉,达到爆破的目的。

点击OK按钮提交,呈现出错误的地方。所以我们就需要暂停了。下图是弹出错误的窗口。image-20210329154040283

接着我们先不要将==确定==点了,我们先回到OD界面,按下F12或者点击菜单栏里的 调试->暂停(F12),将程序暂停。然后前往堆栈查看是否有类似的信息。

image-20210329154246506

在按下暂停后,我们按下Alt+K (或者点击快捷菜单那里的K)查看堆栈里面有没有所需要的信息。

image-20210329155442828

发现有两个的地址较为的相像(因为我不是很了解那个堆栈的地址为0012F298 的那个是什么地方的,所以也尝试着进去看了看,发现没有找到什么熟悉的片段,所以就先把它搁浅了),所以,接下来,我们点击最下面那个(因为我就在那里面找到熟悉的字符串的),image-20210329155806445

选择在堆栈中跟随地址,所以我们会跳转到这样的地方

image-20210329155922728

我们就可以通过我们的肉眼观察到很多地方都有着一些熟悉的地方,而我们的目的也就是单纯的将判断的地方给跳过。反正我是这么想的。爆破他。

我们右键选择右下角那个堆栈的区域,然后右键跟随(在我看来,经过我做了两道题的经验,只有在有返回值的地方,就是有显示==返回到==的地方,右键的时候才会出现那个反汇编窗口中跟随,就是左上角的窗口来显示。)如图所示

image-20210329160353600

image-20210329160453267

接下来我们就点击几个错误的提示的地方,看一下他们从哪里跳转过来的。(可以从第二列的红色箭头看出来跳的起始和结束的位置)

image-20210329160548669

所以呢很明显上面有着 “ you get it”,所以可以几乎有着很大的把握可以把那里直接给NOP掉,填充掉的意思吧。image-20210329160932745

然后我们按下F9运行,然后点击确定后,再进行提交。可以看见我们爆破成功了。image-20210329161215197

到这里大功告成了,这个是根据第一个,所以按照差不多的方法将它做出来了的。差不多两个爆破的想法都差不多。

小结

1
2
3
4
总结一下吧,可能对于OD的很多东西都不怎么会,像第一个是按照别人的教程一步一步的做的,观察每一步大概什么意思,然后自己也尝试着做一下。所以可能我懂得还是不多,不过还是慢慢的进步吧。
我可能写不出什么注册机出来还,所以吧,还是在做完之后,进行反思自己发现的问题,自己还有哪些的出现错误,然后看看大佬的做法吧。
春花秋月,夏荷冬雪。
2021-3-29

。。


EndLine~~

-------- 春花秋月 夏荷冬雪 --------