楼主目前是做渗透测试的,在看一些大神的文章时,有时会看到一些关于逆向方面的知识,无奈楼主不懂逆向。但是身为搞技术的嘛,不懂就学,学不懂就再学,所以就在前些日子看了一些基础的汇编视频入了个门,然后在看汇编的时候又对逆向破解比较感兴趣(有成就感),所以又看了破解相关的视频。
题外话(废话):但是楼主归根结底还是要做web安全的,还是要回到自己的路子上的,但是又怕时间长了,汇编的知识忘记了,所以在 上看到有一套CrackMe系列破解软件,故打算用这个来辅助记忆自己的汇编知识。楼主打算一周一破解,希望自己能够坚持下去。
废话不多说,下面就开始介绍并破解第一个小软件Acid_burn。
一、源程序介绍
首先了解下这个软件运行时的情况,记录下有哪几个需要破解的位置。
程序运行时会弹出一个NAG窗口,标题是"hello you have to kill me",这个窗口是要去除的。
进去后发现有两个按钮,根据按钮上的字符串判断应该是需要输入序列 和名称的位置。
首先看下左边那个按钮,点击进去看下情况,发现有两个输入框,分别是输入用户名和序列 ,然后点击Check it Baby,程序会进行校验,校验失败会弹出下面窗口,提醒你try again!
记录下这个位置也是一个需要破解的点。
综上所述,我们可以看到这个程序有三个点需要破解:
1,程序主界面之前的一个NAG窗口
2,Serial/Name校验页面
3,Serial校验页面
二、NAG窗口去除
好,首先我们先要破解第一个NAG窗口,这个程序很小,用OD打开后可以F8单步调试一遍看下程序的调用情况。可以发现单步调试到 call Acid_bur.00429F8C时,第一个NAG窗口出现了,
老方法,下断点、重新加载程序,F9运行到该位置,F7进入该函数继续F8单步调试,在call dword ptr ds:[ebx+0x1CC] 位置NAG窗口继续弹出
程序运行到0042562F处直接跳到00425643处,越过弹窗函数。修改完毕后我们右键-复制到可执行文件-所有修改,选择全部复制,然后跳到D窗口,右键-保存文件,将程序重命名为Acid_burn1.exe。
然后F3加载Acid_burn1.exe程序,F9直接运行可以发现没有了NAG窗口,第一个NAG窗口去除成功。
三、Serial/Name窗口破解
OD加载Acid_burn1.exe程序,我们在name和serial输入框随意输入一个字符串和序列 时,此时点击Check it Baby,会弹出try again窗口,内容是sorry,the serial is incorect。
在这里你可能会发现两个记录,没有关系,这个是两个函数窗口返回的一样的字符串内容(后面会分析到),双击第一条记录会自动切换到C窗口相应的汇编代码位置
在这里我们可以看到有两块区域,下面这个是我们手动查找到的字符串,上面好像是一个成功的字符串。再往上看能看到有一个jnz条件跳转指令。
这个指令的意思是如果上一个call函数的返回结果ZF=1的话,则不跳转;ZF=0的话,则跳转。而跳转的位置恰好是在两块字符串中间,所以可以看出这个上面那个call函数是判断name和serial是否是正确的关键函数。
这里呢,我们仍然采用暴力破解的方式,这里呢不能让指令跳转,所以我们修改jnz指令,用nop指令覆盖,修改后的代码如下:
修改完毕后,同样的右键-复制到可执行文件-全部赋值,保存该文件,重新命名为Acid burn2.exe。
程序保存完毕我们可以在OD内F3加载Acid burn2.exe程序F9运行改程序也可以直接运行Acid burn2.exe程序,在serial和name输入框内随意输入函数,点击check,都会弹出成功的信息。
找到记录后双击该记录,跳转到汇编代码处,同样的我们也看到了条件跳转指令,分析一下跟上一个窗口差不多一样的逻辑
这里我们能够看到关键的函数就是call Acid_bur.004039FC,该函数执行后返回的结果ZF=1则不跳转,弹出成功的窗口;ZF=0则跳转弹出失败的窗口。
我们仍然选择暴力破解方式将jnz指令nop掉,不进行跳转,修改后的代码如下:
修改完毕后,同样的右键-复制到可执行文件-全部赋值,保存该文件,重新命名为Acid burn3.exe。
运行Acid burn3.exe程序,我们可以看到在serial窗口随便输入字符串都可以弹出成功的窗口。

至此,程序破解结束。
五、总结
1,程序破解的关键在于找到正确的条件跳转语句处,找到关键点则破解工作就完成了一大半;
2,限于楼主水平有限,在破解的过程中可能使用的方法不是最简单、最方便的,也希望有大佬指出更好的姿势;
3,Acid burn2.exe程序好像没有对name字段的长度小于4进行破解,当长度小于4仍然会弹出失败窗口。这里就不做笔记了,比较简单,有兴趣的可以试试;
4,程序破解除了使用暴力破解的方式也可以找到程序的关键函数写出算法出来进行破解,这里限于文章篇幅就不做分析了,后面有机会再分享。
最后,谢谢大家能够坚持看完这篇文章,同时呢也希望各位大佬指出文章的不足之处,后面文章会做出相应调整。再说一句谢谢。
相关资源:番茄助手2017破解版_vs2017番茄助手-C++工具类资源-CSDN文库
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!