华中科技大学软件安全实验一【破解Demo简易】


前言

作者在复习软件安全这门课是所写


处于学习阶段,有什么错误,请各位大佬指正。

一、分析工具

OllyDbg,Visual C++ 6.0

二、实验步骤记录

1.看看破解软件长啥样!

(1)用OllyDbg打开DemoD_简版.exe
在这里插入图片描述
fig1.破解软件长得还挺酷的嘛
(2)点击运行按钮试一试吧
在这里插入图片描述
fig2.运行窗口好像不酷了
弹出运行窗口,观察到我们的攻击目标,找出验证序列号。
(3)常用的按钮有哪些:
在这里插入图片描述
—快乐老家按钮,回到最初的起点,误操作之后请按它。
在这里插入图片描述
—开始运行按钮,莽就完了,反正可以用快乐老家撤回。

F7执行单步执行。
F8按行执行,遇到函数的时候用这个很有效
就教四个吧,多的我也不会了。更多的知识菲菲子可以自行探索。

2.尝试进行破解吧!

(1)先使用快乐老家按钮,在反汇编区域内右键,选择中文搜索引擎->智能搜索。我们可以得到下图:在这里插入图片描述
fig3.搜索结果,聚焦目标代码
(2)在合适的位置添加端点,之后点开始运行按钮。
在这里插入图片描述
fig4.仔细阅读汇编代码,看不懂的话可以右键**选择汇编(A)**查看更加详细的汇编指令

再次弹出运行结果的窗口,此时我们在序列号的位置,输入0000-0000-0000-0000,开始验证序列号,返回ODllyDbg。发现程序已经被顺利截断。

(3)开始一路F7,变按变关注寄存器的变化,菲菲加油!
在这里插入图片描述
分析汇编代码,我们可以看到EAX代表的是我们的输入,ECX是内存中的一个值。
注意:如果菲菲子仔细的话,应该已经发现了,ECX中的值不一定和我展示的一样,这是因为序列号是变化的。如果关闭应用,重启之后,序列号要重新寻找

【补充说明】
关键性代码:cmp eax,ecx 如果两者相同,则不会执行跳转指令;不同,则跳转。此时如果继续F7下去,直接会跳转到序列号错误。菲菲子可以大胆尝试一下。
内存地址展示区,右键->转到->表达式,输入要查看的地址。
这也代表着第一个序列号的值应该就是ecx中的值,此时为F8BE。

(4)举一反三,菲菲子可以自主进行序列号2、3、4的尝试

提示:每一次找到序列号之后,需要使用快乐老家按钮,回到开始;再点击运行,别忘了在序列号中输入已经确定的值哦

做出来了吗?做不出来吧。嘿嘿,不然我也不会破防了。
妙计1:点击验证序列号开始运行,而不是回车开始运行哦
妙计2:用过的端点用同样的方法去掉,可以跳过中间繁琐的函数调用过程哦
妙计3:使用F8运行,菲菲子有没有感觉被欺骗了呀hhh

炫耀一下我的图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

由于一些失误,序列号又改变了,我重做了一遍,第一个序列号是D620
、第二个序列号BCAD、第三个序列号CCAB

(5)突破难点第四个序列号
仔细阅读前三个序列号的汇编指令,不难发现其中的操作运算越来越复杂了,从开始的读一个内存的值,到向右移动,到两个内存的数值相加。
没有改变的是直接通过cmp的语句,我们可以直接找到对应的序列号结果,但第四个序列号不太一样,需要仔细分析上面的汇编代码。
在这里插入图片描述
分析mov eax,[local.86],将内存中esp-0x158的地址取了出来。
思考1、程序中取了别的地址的值,当做我们输入了?
很显然这个想法不对,那我们的输入就和答案无关了呀!
通过汇编代码查看,

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
读取的内存地址按顺序排布,没有问题!
思考2、程序内部对我们的输入进行了运算?
在附近的代码没有发现问题,究竟在哪里对内存中esp-0x158的值做了修改呢。
在这里插入图片描述
向上查看,我们可以看到这样一块可疑的代码,仔细阅读,分析含义:

在这里插入图片描述
代码含义是将19f288的一个字的内容,送到了19f278中,而19f278中的值就是我们输入的值。
貌似进行了简单的数值覆盖,接下来我们思考,19f288中的值是怎么来的呢?我们可以发现19f288其实等于[local.82],[local.82]=(eax+[local.78]) and 0xAFDA,其中eax的值
就是我们输入的第四个序列号,而[local.78]的值为D620,所以我们可以知道最后参与比较的表达式第一个序列号+第四个序列号的值,与上AFDA的值,等于25F7
由于A是1010,7是0111。所以此时无解。
做到这里就差不多可以了,我们已经知道方法了!

总结

复习了一个实验用了俩个小时,考试周我真浪啊

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值