【CrackMe 实战】逆向破解实战之 001 Acid burn.exe
CrackMe:是一些公开给别人尝试破解的小程序,制作 crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 cracker,想挑战一下其它 cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破。
最近迷上了逆向脱壳破解,玩的不亦乐乎。
于是我在吾爱破解(https://www.52pojie.cn/)网站,下载了一些破解专用工具,以及 160 个练手用的 CrackMe 小程序。
网站上大神很多,也有很多破解的详细教程。
我跟着大神们的讲解一步一步的学,同时也会在这里将我学习的过程记录下来,既是对自己成长的见证,也可以为后来者提供一些帮助。
第一步 预先善其事 必先利其器
首先需要准备两样东西,1. 需要的破解的 CM 程序,2. 破解工具。
这两样东西在吾爱破解论坛里都可以找到,为了方便,我这里上传了一份,大家可以放心下载使用。
链接:https://pan.baidu.com/s/1MiK1oGrLA-gVAPNbXvDQ_w 提取码:ng8w
注意:CM 程序跟 OllyDbg 容易被杀毒软件报毒误删,需要添加信任。
160 个 CrackMe 程序是在一个 chm 文件中,点击作者那一栏里的名称,可以下载到对应的 CM 程序。
逆向破解工具,我使用的是 OllyDbg,简称 OD,运行界面如下。
为了方便大家学习,我将自己搜集的一些入门教程分享出来,供大家一起学习,共同进步。
1. 软件逆向是通过反汇编和调试等手段,分析计算机程序的二进制可执行代码从而获得程序的算法细节和实现原理的技术。因为是要进行反汇编,所以了解一些常见的汇编指令,读懂简单的汇编程序是非常必要的。《逆向分析之常见的汇编指令》
2. OllyDbg,简称 OD,是一款具有可视化界面的用户模式调试器,结合了动态调试和静态分析,具有强大的反汇编引擎,功能强大且容易上手。软件的操作教程了解一下《逆向动态调试之Ollydbg的使用》
3. 吾爱破解官方出的入门教学培训教程,已经更新到十期,大家可以去下载教学视频学习,《吾爱破解官方教程》。
第二步 动手操作
我们今天要逆向破解的是第一个 CM 程序 《Acid burn.exe》,首先双击打开先来运行看看。
先是弹出一个欢迎界面,大意就是作者说这个程序是我整的欢迎来搞。我们不管它,点确定。
进入了主界面,我们可以发现,程序提供了两种类型的验证方法,一种是用户名+序列号,另一种是序列号。
序列号(和用户名)输入之后,点击 Check it Baby!按钮可以进行验证,如果验证失败的话,会弹出对话框提示。
如果验证通过的话,弹出的对话框中会显示 Good job dude =) 字样。
我们本次逆向破解的目标,就是找到正确的序列号,使其可以验证通过,出现验证成功的界面。
了解了 CM 程序的大概运行流程之后,我们把它放到 OD 中进行调试分析。
打开 OllyDbg 软件,File --> Open ,找到我们要破解的程序,打开。
OD 的操作界面就不过多介绍了,不熟悉的朋友可以去看看文章开头推荐的教程。
点击 Debug --> Run,运行程序,也可以直接点击工具栏中的蓝色三角形按钮,运行程序。
这样,CM 程序就在 OD 中运行起来了。
我们先来破解 Name + Serial 模式。就正常操作,在输入框中随便输入一个用户名和序列号,如 Name 填的是123456789,Serial 填的是 abcde12345,点击 Check it Baby!按钮进行验证(结果当然不会通过,随便输入的怎么可能这么巧猜中)。
在弹出的 Try Again 界面不要动(不要关闭这个对话框),我们要从这里开始调试了。
这里讲一下为什么要这样做。因为我们知道程序后台肯定是由一个正确的序列号的(不管是代码写死的,还是动态生成的,反正在点击验证按钮的时候,这个序列号肯定是生成好的),验证过程就是我输入的序列号跟后台生成的正确的序列号比较的过程。而验证的过程肯定是在弹出这个窗口之前发生的。
所以,思路就来了,我们可以找到弹出对话框的代码处,从此处入手向前寻找,只要找到验证过程发生的位置,程序基本上就可以破解了。
思路讲到这里,下面我们接着操作。
保持 Try Again 的窗口不要关,然后切换到 OD 界面,按 F12 ,可以暂停程序,进入调试状态。
点击 Window --> 7 call stack of main thread ,或者直接点击工具栏中的 K 按钮,打开堆栈窗口。
观察其中的 MessageBox 字样(我的经验是,最好从下往上找,因为下面的是新弹出的),我们找到了图中箭头所指的那一行(结合那一行下面的 Text 和 Title 里的文字,我们基本上可以确定,这个 MessageBox 就是我们之前弹出没关的那个窗口)
鼠标选中这一行,右键,show call(显示调用),点击之后会跳转到 main thread 窗口。
图中选中的这一行,就是反汇编之后,程序中控制弹出提示框的语句。
根据我们之前的分析,序列号验证的逻辑肯定就在这句前面不远处,范围缩小了,我们把代码往上翻一翻找一找。
如图中所示,没翻多远,我们找到了 push ebp 这句代码,这句代码在汇编语言中,一般在程序入口会出现,我们在这里 F2 打个断点,待会儿可以从这儿开始逐行调试看看。
不要问我为什么知道该在这儿打断点,我也不知道,我也是一步一步慢慢摸索出来的,可能熟悉了汇编语言的基本指令的话,会容易一点(我刚开始找的时候,采用了一种简单粗暴的笨办法,从 MessageBox 那一行往上连着几十行都打了断点,然后调试运行,看程序是触发哪一行的断点,慢慢的就找到了)
打完断点之后,我们按 F9 继续运行程序,然后重新按 Check it Baby!按钮验证,此时没有直接弹出错误的提示框,而是触发了断点程序暂停,停在了我们之前打断点的那一行。
按道理,我们应该按 F8 逐行运行,观察程序运行过程中代码跳转情况,同时观察下方堆栈窗口的情况。
不过啊,我们这次的运气实在时有点好,在触发断点的时候,我们可以看到下方出现了四行很可疑的字符串。
0019F658 024A0F78 ASCII "4018"
0019F65C 024ABE48 ASCII "123456789"
0019F660 024ABEA8 ASCII "abcde12345"
0019F664 024ABE8C ASCII "CW-4018-CRACKED"
第一行 4018 不知道是什么,先不去管它,第二行和第三行,我们惊讶的发现,这不正式我们之前手动输入的用户名和序列号嘛。那第四行呢?看上去挺奇怪的一串字符,又感觉跟其他乱码不一样,这个不会就是真正的序列号吧?
不管是不是,先试试再说,重新运行程序,输入刚才找到的那串字符,点击按钮验证。
居然真的成功了,我们就这样找到了它真的序列号,把它给破解了!
是不是有点神奇啊!自己快去试试吧!
别忘了这个程序还有一种 Serial 模式。
其实这种模式的破解方式跟前面我们讲的那种,方法和操作是一样的,这里我就不再赘述一遍了,正好也留着可以给大家练手,巩固一下,熟悉熟悉操作和原理。
如果你成功破解了的话,请把你破解得到的序列号留在评论里给我看一下哦。
刚开始学,能力比较菜,工具用的也不熟,虽然破解成功了,但是有些地方还是看不特别懂,尤其是汇编语言的那部分.
不过没关系,慢慢学,慢慢进步嘛,加油。
【CrackMe 实战】逆向破解实战之 001 Acid burn.exe相关推荐
- 160个破解练习之CrackMe 001 Acid burn
这款软件的破解相对比较简单,但内容比较齐全,首先打开软件,发现有一个弹窗如下: 这个弹窗可以使用爆破. 进入后,软件的主界面如下: 需要破解的地方有两个,一个是用户名/密码,一个是单独的序列号. 我们 ...
- Crackme之Acid burn.exe
破解关键: 通过定位而nop掉关键跳转,使MessageBox()弹出GOOd 首先将程序载入OD,F9开始运行,有两种登录方式 (1)输入序列号和名称和(2)单独输入序列号 先随便输入,点击chec ...
- 逆向破解之160个CrackMe —— 001
CrackMe -- 001 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 视频+图文+注册+机源码 | 160个CrackMe深度解析合集 | 逆向破解入门
全部合集的获取请关注微信公众号:逆向驿站 回复:160 即可获得其余合集 以下是示例文章 160个CrackMe深度解析合集-001 提倡"刨根问底",拒绝"浅尝辄止&q ...
- python爬虫之逆向破解_js逆向爬虫实战(2)--新快之加密参数破解
爬虫js逆向系列 我会把做爬虫过程中,遇到的所有js逆向的问题分类展示出来,以现象,解决思路,以及代码实现.我觉得做技术分享,不仅仅是要记录问题,解决办法,更重要的是要提供解决问题的思路.怎么突破的, ...
- 支付宝钱包手势密码破解实战(root过的手机可直接绕过手势密码)
/* 本文章由 莫灰灰 编写,转载请注明出处. 作者:莫灰灰 邮箱: minzhenfei@163.com */ 背景 随着移动互联网的普及以及手机屏幕越做越大等特点,在移动设备上购物.消费已是 ...
- Linux Security Module逆向分析实战
Linux Security Module逆向分析实战 本文记录了对某发行版Linux中一个安全模块(LSM)的逆向过程,该LSM对系统中待运行的程序进行安全校验,数据流穿越内核态与用户态,涉及系统内 ...
- 逆向破解之160个CrackMe —— 007
CrackMe -- 007 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向学习实战之--替换哈罗单车图片
逆向学习实战之–替换哈罗单车图片 最近学习iOS逆向知识也有一段时间了,今天就找了一个App练下手,来检测这段时间的学习效果. 逆向的APP是哈罗单车,目的是实现替换地图上面单车的定位图片,之前好像在 ...
最新文章
- java设计模式---职责链模式
- JAVA 正则表达式 分组
- HTML文本框中只能输入纯数字
- 二叉树外部节点_leetcode 102 二叉树的层序遍历1 /BFS
- 解决Linux下启动Tomcat遇到Neither the JAVA_HOME nor the JRE_HOME environment variable is defined...
- linux系统迁移的重要配置文件,mylinuxbackup
- python怎么返回上一行代码_一行Python代码能做出哪些神器的事情
- VB控件注册 - 利用资源文件将dll、ocx打包进exe文件
- ic读卡器设置工具_什么读卡器,是一用过就想揣身上不想丢的?
- python编程特点_Python基础(1)--Python编程习惯与特点
- NoSQL——MongoDB
- 怀旧服务器联盟优势,魔兽世界tbc联盟服务器选哪个_wowtbc怀旧服联盟服务器排名_3DM网游...
- web ui自动化之弹窗操作 - alert模块
- 全新解密域名防红系统源码,支持分站
- Visual FoxPro 6.0常用命令
- 微信小程序—半圆(弧形)进度条
- mdict.cn的安卓安装包不能找到mdx文件问题解决方法
- android 2.3 StrictMode 使用
- 设计模式之外观模式(九)
- linux自己的软件在安装的时候如何创建快捷方式,在Deepin Linux系统下给AppImage格式软件创建快捷方式的方法...