pe文件学习笔记3-----在pe文件上添加一个消息框2

作者在 2007-08-23 05:48:00 发布以下内容

;接上篇

;######################################################

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
        cmp    word ptr [esi],IMAGE_DOS_SIGNATURE
        jnz    Exit
        add    esi,[esi].e_lfanew
        assume esi:ptr IMAGE_NT_HEADERS
        cmp    dword ptr [esi],IMAGE_NT_SIGNATURE
        jnz    Exit
;#######################添加新节##########################################################
        mov  eax,[esi].OptionalHeader.AddressOfEntryPoint
        add  eax,[esi].OptionalHeader.ImageBase
        mov  HostEntry,eax ;保存原程序入口地址
        ;判断是否能够有空间插入新节
        movzx  eax,[esi].FileHeader.NumberOfSections        
        mov    ecx,sizeof IMAGE_SECTION_HEADER
        mul    ecx
        add    eax,sizeof IMAGE_NT_HEADERS                
   

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