完整版-木马分析.DOC

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
完整版-木马分析

一个木马的分析第一次详细分析木马,不足之处请见谅。这个木马一共4KB,是个比较简单的程序,所以分析起来也不是很难。下面开始正式分析。这是程序的主题函数,一进来就是三个初始化的call,然后就是一个大的循环,程序就是在这个循环之中不停的运行着。跟进第一个call:start proc near call sub_401481 call sub_401092 call sub_4011AEloc_4014C4: call sub_4013D5 call sub_40143F push 0EA60h ; dwMilliseconds call Sleep jmp short loc_4014C4start endp 函数首先创建了一个hObject变量,用于存放创建的互斥对象句柄。mov [ebp+hObject], eax就是将创建的互斥句柄传送到hObject中。这里是创建了一个名为H1N1Bot的互斥对象。然后调用GetLastError得到错误码,这里加入程序已经有一份实例在运行了,则这个互斥对象就是创建过了的,就是得到错误代码为0B7h的值。通过查询msdn发现:0b7h含义是Cannot create a file when that file already exists.所以这样就防止了木马程序同时打开了多份。当返回值是0B7h的时候,调用ExitProcess退出程序。总结来说这个call就是检查程序是否已经打开,要是打开过了就退出。hObject = dword ptr -4.texttext push ebp.text mov ebp, esp.text add esp, 0FFFFFFFCh.text push offset Name ; H1N1Bot.text:0040148C push 0 ; bInitialOwner.text:0040148E push 0 ; lpMutexAttributes.text call CreateMutexA.text mov [ebp+hObject], eax.text call GetLastError.text:0040149D cmp eax, 0B7h.text:004014A2 jz short loc_4014A6调用ExitProcess退出程序..text:004014A4 leave.text:004014A5 retn进入401092的call,由于这个函数代码过多,就不贴详细的代码了。函数定义了两个局部字符串数组ExistingFileName,String2(这里是ida分析给出的名字)和一个文件指针。函数先将这两个数组用零填充,然后调用GetModuleFileNameA得到当前程序的完整路径,并将结果存放在ExistingFileName中。在调用SHGetFolderPathA并将结果存放在String2中。SHGetFolderPathA可以获取系统文件夹,这里他的参数值是0x1c。Const CSIDL_LOCAL_APPDATAH1C(用户)\本地设置\应用程序数据。即如果以administration身份登录获得的是C:\DocumentsandSettings\Administrator\Local Settings\Applicaton Data\路径。然后调用lstrcatA这个函数在String2的后面加上\\winvv.exe。然后比较String2和ExistingFileName是否相同,不同则把自身复制到ExistingFileName中,最后运行复制过去的文件

文档评论(0)

fengruiling + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档