win32 内存驻留

在Windows NT下,各个进程的地址空间被隔离了,不同进程之间不能自由地相互访问内存,而且对于用户态代码有了访问限制:ring3程序代码只能读写其进程空间中应用专属的部分(在进程空间为4GB 的情况下,通常是低2GB),对系统内核部分占用的空间是没有读写权限的。这使得内存驻留感染变得困难,不过类似的想法和技术仍然是可能实现的,需要做的不过是一点变通:既然每个进程有其专属的进程空间,尽管不能做到永久驻留,但病毒代码至少在进程的生命期内仍然是可以驻留的;既然Windows下仍然有作用和DOS下中断相同的API,那么病毒自然可以截获API,从而监视文件读写,伺机进行感染。至少让程序在它的生命周期内去影响api。
其实驻留方法与dos下面相类似。在dos下要勾住中断,在win32中就是要勾住api。将原来的api地址改为向病毒的跳转病毒执行完毕再运行原来的api。可以勾住的api有CopyFile CopyFileEx CreateFile FindFirstFile FindFirstFileEx
FindNextFile GetCurrentDirectory SetCurrentDirectory GetFileAttributes
SetFileAttributes GetFileSize GetFileType GetFullPathName LockFile
LockFileEx MoveFile MoveFileEx SearchPath UnlockFile UnlockFileEx 这些都是有关文件查找操作的api是非常常用的这样能做到大面积的感染。
获取api:因为在Windows下载入的DLL在不同的process中映射到同一个地址。 所以只要我们找到api地址就好办了。获取api在前面已经说过很多方法了最常用的应该是通过pe文件的导入表,以及搜寻dll文件来获取。
当得到api之后就可以像上面提到的那样更改入口到病毒。实现病毒的暂时驻留,当有其他程序调用被勾住的api是就会被感染到。

posted @ 2012-07-03 08:54  麦小扣_刘  阅读(221)  评论(0编辑  收藏  举报