程序分析 - task1

文件信息

image-20191028170050120

流程分析

程序没法调试,缺少了一个库,名字为Adsnds.dll,路径为C:\Adsnds.dll,但是问题不大,尝试静态分析,唯一不太好的一点就是start函数一开始调用的第一个函数的第一个参数没法动态调试的时候确定了,IDA中使用了xref功能,并没有找到相关的索引

image-20191028181644603

首先,sub_403988这个函数是start函数,很少分析到Delphi的程序,没想到Delphi的start函数相当于程序的main函数


sub_435B4 --> sub_4035B5

经过了一个连续的jmp,之后进入了函数sub_4035B5

函数的内容为:

image-20191028182607899

如果我没有记错的话,这是初始化函数,所以目前来说对程序本身的行为分析来说没有太大用,先暂时略过

唯一有一点让我疑惑的是,程序没有调用Loadlibrary,但是却加载了动态链接库,后续想看看为啥,怎么实现的。


image-20191028182903757

接下来往下走发现直接强行执行了3行shell命令,大概内容就是去杀进程

程序希望杀掉的进程为:

  • 360safe.exe ---- 360安全卫士主进程
  • 360tray.exe ---- 360安全卫士的实时监控程序
  • mdm365.exe ---- 未在百度查询到进程信息

sub_4037E4

image-20191028183458253

Software\\Microsoft\\Windows\\CurrentVersion\\Run注册表的这个位置是开机自启动的位置

所以,函数sub_40372C理论上应该是数据表操作的某种库函数,被静态编译出来的样子

GetSystemDirectoryA该函数用于取得Windows系统目录的完整路径名,然后被放置在Buffer中

再往下看,能够看到函数sub_40318Csub_4031AC,这两个函数应该分别为g_strcpyg_strcat,因为在g_strcpy中往里走,能看到调用了qmemcpy,这也是正常的strcpy的内容,而g_strcat里会不停的移位再疑惑,也是跟strcat很像

下面的sub_4036F8函数应该是file_exist函数,因为往里走能看到它的调用为:

image-20191028184920271

打开文件判断是否能正确打开,然后返回正确与否的布尔值,之后直接关闭文件,并没有操作,所以相当于在判断当前主机的系统目录下面时候有一个名叫interneter.exe的程序


如果不存在初始化整个路径,然后调用函数sub_402678,在函数里由于传入参数a1固定所以一定是走else分支。之后会取当前运行程序的绝对路径然后作为参数传入函数sub_40315C,函数内会执行memcpy,然后把自己程序的所有内容拷贝到变量,最后在外层函数调用kernel32_CopyFileA来生成了一个新的文件,这个文件在开机自启动注册表项里。


再往下就是

image-20191029100720685

这就是动态链接库里的函数,看目标可能是hookapi,但是没有文件看不到里面的hook具体怎么实现的了。

然后会调用user32_GetMessageA函数

函数作用为获取窗口消息,我觉得这里的用途应该是等待什么东西执行完毕

总结

没从开发学安全好多东西都得现场查。