笔记
略
作业
Lab 6-1
目标:在lab06-01.exe中发现恶意代码
-
main函数调用的第一个子过程中发现的主要代码结构式什么?
if-else结构,执行完call,进行判断,满足条件就跳转,不跳转的话,执行完jmp再跳下去,二选一的结构
-
位于0x40105F的子过程是什么?
这个子过程在调用前都会压栈一个字符串,而且都是以
\n
结尾的,进去后看到__stbuf
和__ftbuf
函数,这是printf里会用到的,这里基本上可以认为这就是printf函数: -
这个程序的目的是什么?
检查当前联网状态,根据检查结果返回不同返回值,并打印相关说明信息
lab 6-2
目标:在lab06-02.exe中发现恶意代码
-
main函数调用的第一个子过程执行了什么操作?
检查网络状态,和lab6-1(1)的那个图相同
-
位于0x40117F的子过程是什么?
分析同上题,是printf函数
-
被main调用的第二个子过程做了什么?
打开URL,读取内容,读取成功后,判断读取的内容:读取的内容正确后,就正常返回,某一个环节出错了,就跳出了
-
这个子过程中使用了什么代码结构?
if-else嵌套结构:(if-(if-else)-else结构):
-
这个程序有基于网络的提示吗?
有的,程序会连接网址:
http://www.practicalmalwareanalysis.com/cc.htm
-
这个恶意代码的目的是什么?
目的是从URL里读取命令,然后拿到本地执行
lab 6-3
目标:在lab06-03.exe中发现恶意代码
-
与6-2的题相比,main调用的新的函数是什么?
-
新的函数的参数是什么?
参数是从url返回的字符和命令行参数的文件名
-
这个函数的代码结构是什么?
switch-case结构,有5个case情况:
-
这个函数能做什么?
根据输入的参数的不同,执行不同的操作:
- a:创建目录
C:\temp
- b:复制指定文件到
c:\temp\cc.exe
- c:删除文件
- d:把该文件添加到注册表
Software\Microsoft\Windows\CurrentVersion\Run
中,键的名称是Malware - default:打印输入错误的信息
- a:创建目录
-
这个恶意代码有本地特征吗?
会创建文件
C:\temp\cc.exe
,并且添加到注册表Run键值中去 -
这个恶意代码的目的是什么?
根据网络连接的结果来进行程序的下一步操作,包括创建目录,创建文件,删除文件,将文件添加到注册表Run键值中去和睡眠等功能
lab 6-4
目标:在lab06-04.exe中发现恶意代码
-
和上一题main函数调用有什么区别?
这次变成for循环结构(for循环开始前会jmp跳三行)了,循环1440次,每次都获取HTML,然后解析命令进行执行
-
什么新的代码结构添加到了main函数中?
for循环
-
这个实验解析HTML的函数和前面实验的有什么区别?
多传入了一个参数:
参数被用于拼接user-agent了:
-
这个程序会运行多久?
60s*1440 = 24小时:
-
有什么基于网络的迹象吗?
会连接网址:
http://www.practicalmalwareanalysis.com/cc.htm
-
这个恶意代码的目的是什么?
与上题功能相同,不过不同的是本样本会每分钟获取一次HTML来解析执行命令