随笔分类 -  PE文件

摘要:此文章系收藏之作,并非本人所写大家都知道,一般的程序运行的时候,可执行文件本身是被操作系统保护的,不能用改写的方式访问,更别提在本身还在运行的时侯删除自己了。在lu0的主页上看到一种undocument的方法,通过改变系统底层的文件访问模式实现删除自己,那是实在功夫。我看了很是佩服。但是有没有一种用在msdn上就能查到的函数实现呢?有!jeffrey richter给我们做了一个范例:deleteme.cppmodule name: deleteme.cppwritten by: jeffrey richterdescription: allows an executable file to 阅读全文
posted @ 2009-12-05 03:15 冷寒生 阅读(400) 评论(0) 推荐(0)
摘要:OEP是PE文件被加载时的起始地址,该值位于PE文件头的IMAGE_OPTIONAL_HEADER32结构体中。照着网上的教程写了一遍,收获不小,现在对PE文件的前两部分已经有一定的了解了。下面的代码很简单,首先用CreateFile读取PE文件,PE文件的起始位置是DOS部分,DOS部分又分为DOS MS文件头和DOS块,在DOS MS文件头中包含了PE文件头的起始地址,而DOS块中的数据没啥用,该块的大小为112字节,通常其内容为“This program cannot be run in DOS mode.”。所以我们现在要做的就是读取DOS MS 文件头,其存放于IMAGE_DOS_H 阅读全文
posted @ 2009-12-04 04:29 冷寒生 阅读(1349) 评论(1) 推荐(0)

IT知识库