恶意程序CrackMe分析(超详细)

恶意程序CrackMe分析(超详细)

一.实验要求:
请依据课堂上所讲解的内容,完成本次的实验,要求:
1、结合你上次自行编写的CrackMe程序,实现“爆破”的逆向分析工作。
2、结合KeyFile.exe文件的内容,采用逆向技术,实现“爆破”操作。
3、采用逆向技术分析KeyFile.exe文件的内容,在不采用“爆破”技术的前提下,编写出符合要求的可以通过程序验证的文件,要求这个文件内容必须包含有你的学号以及中文姓名的拼音。
本次实验需要提交实验报告以及要求3中的程序验证文件。
二.实验目标和使用工具:
1.爆破上次所写的CrackMe,爆破这次老师给出的KeyFile,逆向分析KeyFile并通过验证
2.IDA 32,Ollydbg ,CrackMe,KeyFile,视频
三.实验过程:
1.爆破CrackMe.exe
将上次实验所写的CrackMe.exe拖入IDA
Shift+F12:打开String表,找到关键词
在这里插入图片描述

定位到False,Pass说明这里有判断点
双击后Pass:
在这里插入图片描述

看到pass参数放在apass,ctrl+x回车
在这里插入图片描述

右键打开Graph view
在这里插入图片描述

可以看到jz 在loc_401879判断是否和加密方式一样后输出Pass or False
在这里插入图片描述

显示地址
在这里插入图片描述

打开Ollydbg,拖进CrackMe.exe,ctrl+G快速定位到判断的地址
在这里插入图片描述

将判断的逻辑改为相反:即将je改为jne
在这里插入图片描述

汇编后,复制所有修改
在这里插入图片描述

在新窗口右键保存在桌面
在这里插入图片描述

运行,输入错误密码显示成功,爆破完成。
在这里插入图片描述

2.爆破KeyFile.exe
打开KeyFile.exe
在这里插入图片描述

看到有关键字:Status,Unregistered,Try it
将程序拖入IDA并shift+F12
在这里插入图片描述

找到关键字,双击CrackMe,转换到Graph view
在这里插入图片描述

同样找到了判断的地址:00429DDE
在这里插入图片描述

打开Ollydbg快速定位,修改为JZ
在这里插入图片描述

汇编保存在桌面,步骤和第一问相同。
在这里插入图片描述

运行,这时新建txt文件随便输入,添加后
在这里插入图片描述
在这里插入图片描述

Well done爆破成功
3.逆向分析KeyFile.exe,编写验证文件
将KeyFile.exe文件分别拖入IDA和Ollydbg
同样找到判断语句的地方
在这里插入图片描述

可以发现在判断语句的上方,(cmp)即判断的内容是ebx和20A9是否相等
同时注意到20A9后面有一个h说明这是一个16进制数字
点击ebx找到流程中出现ebx 的位置
在这里插入图片描述

第一个位置展示的是异或ebx本身,实际是一个清零初始化的过程
在这里插入图片描述

这是第二个位置:展示的是一个循环体,add为累加,将eax累加到ebx,eax的值存放在ebp+var_1;
在这里插入图片描述

同样显示出它的地址00429DAF,打开Ollydbg
快捷跳转ctrl+G 00429DAF,F2设置断点
在这里插入图片描述

F9运行程序到这里
在这里插入图片描述

其中插入文件的内容是;
在这里插入图片描述

运行的发现:
在这里插入图片描述

累加了61,即“a”
我们输入的第一个字符是a那么可以猜测它把我们输入的字符的ascii累加
在这里插入图片描述
在这里插入图片描述

再继续两次循环运行,发现果然是将输入的abc全部累加,猜测成功
那么就是输入的字符ascii累加等于16进制20A9;
使用老师所给的软件和电脑自带的计算器
在这里插入图片描述

在输入我的学号和姓名后,将二进制全部求和转16进制为579,
20A9-579发现还差1B30
在这里插入图片描述

百度找到ascii的最大有意义字符为”~”,那么就用他填充可以简洁一些
“~”的16进制为7E
用1B30分别求商和余数为37;1E
也就是需要添加37个~和一个1E
1E转换成字符为”.”
在这里插入图片描述

那么可以知道在创建插入文件时,内容应该填入
1801030137guowenwu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.
然而现实是痛苦的,无法通过
在这里插入图片描述
可以发现,”.”是2e
我天真的以为了1e就是一个点,后面了解到,转成的字符可能是需要分在两个空间里
在这里插入图片描述

出现了一个问号,于是我又改成了一个点再加一个问号,发现还是不对
再次百度知道了他是由于所转的字符在电脑无法显示,那么我想着尽量把这个情况避免,
于是用20A9除以579等于5,十进制下也是5,余数是54C
在这里插入图片描述

54C再除以7E等于A,十进制下为10,
在这里插入图片描述

余数为60
在这里插入图片描述

反向验证一下
在这里插入图片描述

也是60,说明正确
最终程序验证文件组成为5个学号姓名10个~1个`
在这里插入图片描述
在这里插入图片描述

成功!
谢谢浏览,大家可以从实验中掌握一些分析的方法,如果需要下载文中的软件和提到的恶意程序,点击下方链接
软件,程序

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值