恶意代码分析实战15-1

本次实验我们将会分析Lab15-01.exe文件。先来看看要求解答的问题
Q1.这个二进制程序中使用了何种对抗反汇编技术?
Q2.这个二进制程序使用了什么流氓机器码来欺骗反汇编过程?
Q3.这种对抗反汇编技术被使用了多少次?
Q4.什么命令行参数会让程序输出“GoodJob”?

首先载入IDA进行分析
在这里插入图片描述

0040100e处有个jz的跳转,如果其上一条指令的结果为0则跳转
而上一条指令是异或自身,其结果一定是0,那么jz指令的跳转是一定会发生的
jz跳转的地方是loc_401010+1,也就是这里
在这里插入图片描述

跳转到指令的中间是不正常的,而且IDA将其目的地标记为红色,是不可能的一个值
Q1.这个二进制程序中使用了何种对抗反汇编技术?
A1.这个程序使用一个永远为假的条件分支: xor eax, eax,随后是一个jz指令。

光标定位到00401010按d键,将这一行转为数据
在这里插入图片描述

看到了其实jz跳转的是unk_401011
我们可以修改jz的真正目标了,光标定位到401011,按c键
在这里插入图片描述

将这段数据转换为了代码
可以看到这里其实是一条mov指令
继续往下
在这里插入图片描述

可以看到一些指令没有对齐,为了对齐,可以按c键,直到一条指令紧挨着另一条指令,而且他们中间没有数据字节。
对齐后的结果如下
在这里插入图片描述

这里IDA分析出现问题的根本原因在于恶意代码编写者在401010处用了E8,而E8代表的其实是call指令,在E8后跟着的4个字节应该就是跳转的目的地
Q2.这个二进制程序使用了什么机器码来欺骗反汇编过程?
A2.使用了机器码0xE8,它是call (占5个字节)指令的第一个字节,然后紧跟着的是一个jz指令。

举个例子,以401023为例
option->general,把机器码显示出来
在这里插入图片描述

结果如下
在这里插入图片描述

E8就是call指令,其后的8B 45 0C 8B就是跳转的目的地
但是这些E8是用来欺骗IDA,从而混淆我们的分析工作的

对401023处进行同样的处理,先按d键转为数据
在这里插入图片描述

然后在E8的下一条指令按c键进行转换
在这里插入图片描述

对没有对齐的位置按c键,对齐,如00400127处的8B
在这里插入图片描述

依次下去,最后如下图所示
在这里插入图片描述

此时可以看到00401037又出现了相同问题,继续同样的处理
按d键转为数据
在这里插入图片描述

然后对齐操作,结果如图
在这里插入图片描述

0040104b继续:
在这里插入图片描述

接着是00401062
在这里插入图片描述

这样就全部正确反汇编了,这样的混淆技术可以看到一共使用了5次
Q3.这种对抗反汇编技术被使用了多少次?
A3.在这个程序中被使用了5次

选中从401000开始位置一直到返回位置00401077
在这里插入图片描述
在这里插入图片描述

按p键将这段代码变成一个函数,然后按空格键就可以在图形模式中进行分析了
在这里插入图片描述

一开始就通过cmp比较arg_0和2
如果arg_0不是2,则会走到这里
在这里插入图片描述

打印出son,I am disappoint
如果arg0是2 ,也就是说有2个参赛,则走右边
在这里插入图片描述

00401011看到将arg_4赋给eax,而下一条将eax+4赋给ecx
70h表示p
也就是说我们输入的参数的一个字符与p比较,如果是p则继续
在这里插入图片描述

71h表示q
这里是将输入参数的第三个字符与q进行比较,如果是q,继续往下
在这里插入图片描述

64h表示d
这里是将输入参数的第2个字符与d进行比较,如果是d,继续往下
我们也可以直接f5看伪码
在这里插入图片描述

这里的printf的内容如下
在这里插入图片描述

如果输入的参数符合判断,则打印Good Job
我们可以在cmd中运行
在这里插入图片描述

可以看到和我们分析的是一样的
Q4.什么命令行参数会让程序输出“GoodJob”?
A4.命令行参数pdq可以让程序输出“Good Job!"。
参考:
1.《恶意代码分析实战》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值