恶意代码分析实战 Lab 6-4 习题笔记
2017-09-20 12:48
375 查看
Lab 6-4
问题
1.在实验6-3和6-4的main函数中的调用之间的关系的区别是什么?
解答: 和以前一样,先按照书中的步骤走一遍先是静态分析
导入的函数都和
Lab 6-3一样
字符串的话
也基本差不多,都和上一个程序一样,除了这点之外
然后这里会出现一个格式输出符
%d
这是上一个程序里没有的
然后会发现这个代码的结构和上三个都不一样
我们从开始,这里和原来一样,调用
sub_401000,
sub_401000返回的是此时网络连接的状态,如果是不可用的状态,就返回
0,反之返回
1
然后下面比较返回值和
0的关系,如果返回值不等于
0,则
ZF=0,然后
jnz跳转
跳转之后就继续执行其他的函数,反之如果返回值等于
0,那程序就跳转结束了,并且返回
0
如果连接可用的话,继续查看这个代码就
这里程序将一个值
0赋给了
var_C
然后无条件跳转到这里
将
var_c和
5A0h比较,再根据比较结果跳转,
jge是有符号大于跳转,现在
var_C是
0,所以这个跳转是不会实现的,那我们继续看,他不跳转之后会执行什么
函数不跳转之后,来到了这里,把
var_C压入了栈中,然后调用了
sub_401040这个函数
这个函数是调用
InternetOpenA来初始话一个网路连接,然后调用
InternetReadFile来从网络获取文件,最后比较获得文件的头四个数是不是
<!--
最后返回第五个字符
我们可以将这个函数重命名为
GetCommand之类的
最后获得返回值之后,
test一下是不是为
0,如果是,则跳转结束,如果不是,继续执行
var_8是程序从网页中获得的命令,压栈
var_8和一个字符串,之后调用
sub_401285,这个函数打开我们可以发现就是
printf函数,之后又压栈了一些参数,再调用
sub_401150,这个函数我们分析过,其实就是那个
switch语句,如果参数等于
a,
b,
c,
d,
e之类的,会执行不同的操作,我们可以将这个函数命名为
CommandSwitch之类的
然后函数睡眠
60s,再跳到
loc_401251的位置执行
这个代码是将刚刚被push进去栈中的数据赋值给
eax,然后将
eax增加
1,然后又把这个值返回栈中,有点像C语言的
i+=1哈
然后便是函数又跳回到这个程序开始的地方
不过这时候
var_C已经变成
1了
关系就是这么个关系
2.什么新的代码结构已经被添加到main中
解答: 新的代码结构我们刚刚已经说了其实,如果对C语言很熟的同学马上就会看出来,这其实就是个for循环
3.这个实验的解析HTML的函数和前面实验中的那些有什么区别
解答: 书中的说法是会调用
sprintf函数来对输出进行格式化
也就是会改变
User-Agent的值
arg_0是函数最后push进栈的参数
也就是
var_C的值,
var_C的值代表了函数
已经循环的次数,这里并不是函数已经运行的分钟数(书中解答有点潦误)
4.这个程序会运行多久?(假设它已经连接到互联网。)
解答: 因为这个for循环是这样的
for(int var_C = 0; var_C <= 5A0h; i++)
这里要注意
i++和
++i的区别,
i++是在函数的最后执行完了之后才
+1,而
++i是立马就把
1加上了,
IDA中显示
+1是在最后,所以我们这里用
i++
5A0h翻译过来就是
1440d,然后这样算过了,这个函数会执行
1440次,一次会休眠
60s也就是一分钟,除去运行程序本身的时间,这个函数会运行
1440m,也就是
24h,也就是
1day
5.在这个恶意代码中有什么新的基于网络的迹象吗?
解答: 新的基于网络的迹象就是这个程序运行次数会写在User-Agent里面,我们可以通过这个来确定这个程序已经运行了多少分钟多少次了
6.这个恶意代码的目的是什么?
解答: 和上一题一样,只是加入了for循环
本文完
相关文章推荐
- 恶意代码分析实战 Lab 10-2 习题笔记
- 恶意代码分析实战 Lab 3-4 习题笔记
- 恶意代码分析实战 Lab 7-1 习题笔记
- 恶意代码分析实战 Lab 6-2 习题笔记
- 恶意代码分析实战 Lab 1-3 习题笔记
- 恶意代码分析实战 Lab 1-2 习题笔记
- 恶意代码分析实战 Lab 3-3 习题笔记
- 恶意代码分析实战 Lab 3-1 习题笔记
- 恶意代码分析实战 Lab 7-3 习题笔记
- 恶意代码分析实战 Lab 10-1 习题笔记
- 恶意代码分析实战 Lab 6-3 习题笔记
- 恶意代码分析实战 Lab 5-1 习题笔记
- 恶意代码分析实战 Lab 9-3 习题笔记
- 恶意代码分析实战 Lab 8 习题笔记
- 恶意代码分析实战 Lab 7-2 习题笔记
- 恶意代码分析实战 Lab 6-1 习题笔记
- 恶意代码分析实战 Lab 4 习题笔记
- 恶意代码分析实战 Lab 1-4 习题笔记
- 恶意代码分析实战 Lab 9-1 习题笔记