[分享]pe文件学习笔记1-----为PE文件添加节

作者在 2007-08-21 16:20:00 发布以下内容
[分享]pe文件学习笔记1-----为PE文件添加节

此程序借鉴不少高手程序   所以称不上原创   但也经过我重新写过和加了注释  
实现功能将pe文件添加一个自己的节,将程序入口地址更改为自己节  自己节中程序执行完成后跳回原程序
此程序在插入代码中没做任何操作就直接返回原程序了  另外还有其他方式可插入自己代码 我并未添加

.386
.model flat,stdcall
option casemap:none
include windows.inc
include kernel32.inc
includelib kernel32.lib


;##########
InfectFile    proto    :dword
;#########
.code

;###############插入代码############################
VStart:
        call    abc
abc:        pop    ebp
        sub    ebp,offset abc
        xor    eax,eax
        add    eax,[ebp+HostEntry]
        jmp    eax
HostEntry    dd    ?
VEnd:
;######################################################

filename    db    "f:/a.exe" ;添加目标文件
write        db    0


;################添加节的操作过程###########################
InfectFile    proc    _filename:dword
        local hFile
        local hMapping    
        local pMapping    
        local @dwAddCodeFile
        local @dwAddCodeBase
        local @dwEntry
;#######################打开文件##########################################################
        invoke    CreateFile,_filename,\
        GENERIC_READ+GENERIC_WRITE,\
        FILE_SHARE_READ+FILE_SHARE_WRITE,\
        NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL
        .if eax == INVALID_HANDLE_VALUE
            jmp    exit2
        .endif
        mov    hFile,eax
        invoke    CreateFileMapping,hFile,NULL,PAGE_READWRITE,0,0,0
        mov    hMapping,eax
        invoke    MapViewOfFile,hMapping,FILE_MAP_READ+FILE_MAP_WRITE,0,0,0
        mov    pMapping,eax        
;########################找到pe头#########################################################
        mov    esi,eax
        assume    esi:ptr    IMAGE_DOS_HEADER
        

默认分类 | 阅读 3285 次
文章评论,共0条
游客请输入验证码