Yunyin's blog
  • Home
  • Archive
  • Tags
  • Categories

    { PE文件结构与应用 }

  • 1-1在程序开头添加对话框

    2023-03-13 /
    • { PE文件结构与应用 }

    在程序开头添加对话框

    1.使用LordPE修改PE文件的属性

    Read On »
  • 1-2PE文件结构概述

    2023-03-13 /
    • { PE文件结构与应用 }

    PE文件结构概述

    1.PE文件在内存中和磁盘中的映射关系(磁盘->内存)

    Read On »
  • 1-3DOS头详解

    2023-03-13 /
    • { PE文件结构与应用 }

    DOS头详解

    DOS头是PE文件结构中的第一个头,用来保持对DOS系统的兼容,并且用于定位真正的PE头。

    Read On »
  • 1-4使用程序判断PE文件有效性

    2023-03-13 /
    • { PE文件结构与应用 }

    使用程序判断是否是PE文件

    //function BottonClick
    <!--more-->

    //从编辑框获取文件路径和文件名
    char szFile[MAX_PATH] = {0};
    GetDlgItemText(IDC_EDIT1,szFile,MAX_PATH);

    //打开文件
    HANDLE hFile = CreateFile(szFile,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);

    //创建一个内核映射对象
    HANDLE hMap = CreateFileMapping(hFile,NULL,PAGE_READONLY,0,0,NULL);

    //把文件映射入内存
    LPVOID lpBase = MapViewOfFile(hMap,FILE_MAP_READ,0,0,0);

    //判断文件是否是有效PE文件


    //释放内存映射
    CloseHandle(hMap);

    //关闭文件
    CloseHandle(hFile);



    //function IsPeFile
    BOOL IsPeFile(LPVOID lpBase)
    {
    PIMAGE_DOS_HEADER pimgDosHdr = NULL;
    PIMAGE_NT_HEADERS pimgNtHdr = NULL;

    pimgDosHdr = (PIMAGE_DOS_HEADER)lpBase;
    if(pimgDosHdr->e_magic != IMAGE_DOS_SIGNATURE)
    {
    return FALSE;
    }

    pimgNtHdr = (PIMAGE_NT_HEADERS)((DWORD)lpBase + (DWORD)pimgDosHdr->e_lfanew)
    if(pimgNtHdr->Signature != IMAGE_NT_SIGNATURE)
    {
    return FALSE;
    }

    return TRUE;
    }
  • 1-5文件头及编程解析

    2023-03-13 /
    • { PE文件结构与应用 }

    文件头及编程解析

    Read On »
  • 1-6可选头及编程解析

    2023-03-13 /
    • { PE文件结构与应用 }

    可选头及编程解析

    可选头是IMAGE_OPTIONAL_HEADER,指该结构体的部分数据在不同文件中是不同的。

    Read On »
  • 1-8手动和编程添加节

    2023-03-13 /
    • { PE文件结构与应用 }

    手动和编程添加节

    增加节的步骤:

    Read On »
  • 1-9PE体——导入表分析

    2023-03-13 /
    • { PE文件结构与应用 }

    PE体——导入表分析

    导入表在PE体中,通过IMAGE_OPTIONAL_HEADER.DataDirectory的第二项进行获取

    Read On »
© 2024 - Yunyin
Powered by Hexo , Theme - Icalm