>如何从内存加载DLL-系统安全-黑吧安全网 | xxx>如何从内存加载DLL-系统安全-黑吧安全网 – xxx
菜单

>如何从内存加载DLL-系统安全-黑吧安全网

三月 7, 2020 - 黑吧安全网

如何从内存加载DLL

来源:本站整理 作者:佚名 时间:2020-03-07 TAG: 我要投稿

本教程介绍了一种技术,该技术可如何从内存中加载动态链接库(DLL)。
文章结尾将给出github地址
Windows可执行文件– PE格式
首先我们先看看pe的结构
DOS headerDOS stub
PE header
Section header
Section 1
Section 2
. . .
Section n
下面给出的所有结构都可以在头文件winnt.h中找到。
DOS header
DOS header 仅用于向后兼容。它位于DOS stub 之前。
Microsoft定义DOS标头如下:
typedef struct _IMAGE_DOS_HEADER {// DOS .EXE标头
    WORD e_magic; //Magic number
    字e_cblp; //文件最后一页上的字节
    字e_cp; //文件中的页面
    WORD e_crlc; //Relocations
    字e_cparhdr; //段落中header的大小
    字e_minalloc; //所需的最少额外段落
    字e_maxalloc; //所需的最大额外段落数
    WORD e_ss; //初始(相对)SS值
    WORD e_sp; //初始SP值
    WORD e_csum; //校验和
    WORD e_ip; //初始IP值
    WORD e_cs; //初始(相对)CS值
    字e_lfarlc; //重定位表的文件地址
    WORD e_ovno; //覆盖数
    WORD e_res [4]; //保留字
    WORD e_oemid; // OEM标识符(用于e_oeminfo)
    WORD e_oeminfo; // OEM信息;特定于e_oemid
    字e_res2 [10]; //保留字
    LONG e_lfanew; //新的exe标头的文件地址
  } IMAGE_DOS_HEADER,* PIMAGE_DOS_HEADER;
PE header
PE 头包含有关可执行文件内不同部分的信息,这些信息用于存储代码和数据或定义从其他库导入或此库提供的导出。
它的定义如下:
typedef struct _IMAGE_NT_HEADERS {
    DWORD签名;
    IMAGE_FILE_HEADER FileHeader;
    IMAGE_OPTIONAL_HEADER32可选标题;
} IMAGE_NT_HEADERS32,* PIMAGE_NT_HEADERS32;
该FileHeader里描述的physical 文件的格式,如目录符号等信息:
typedef struct _IMAGE_FILE_HEADER {
    WORD    Machine;
    WORD NumberOfSections;
    DWORD TimeDateStamp;
    DWORD PointerToSymbolTable;
    DWORD NumberOfSymbols;
    WORD SizeOfOptionalHeader;
    WORD    Characteristics;
} IMAGE_FILE_HEADER,* PIMAGE_FILE_HEADER;
该OptionalHeader里包含的信息逻辑库的格式,包括需要的操作系统版本,内存需求和切入点:
typedef struct _IMAGE_OPTIONAL_HEADER {
    //
    //标准字段。
    //
WORD    Magic;
    BYTE    MajorLinkerVersion;
    BYTE    MinorLinkerVersion;
    DWORD   SizeOfCode;
    DWORD   SizeOfInitializedData;
    DWORD   SizeOfUninitializedData;
    DWORD   AddressOfEntryPoint;
    DWORD   BaseOfCode;
    DWORD   BaseOfData;
    //
    // NT其他字段。
    //
    DWORD   ImageBase;
    DWORD   SectionAlignment;
    DWORD   FileAlignment;
    WORD    MajorOperatingSystemVersion;
    WORD    MinorOperatingSystemVersion;
    WORD    MajorImageVersion;
    WORD    MinorImageVersion;
    WORD    MajorSubsystemVersion;
    WORD    MinorSubsystemVersion;
    DWORD   Win32VersionValue;
    DWORD   SizeOfImage;
    DWORD   SizeOfHeaders;
    DWORD   CheckSum;
    WORD    Subsystem;
    WORD    DllCharacteristics;
    DWORD   SizeOfStackReserve;
    DWORD   SizeOfStackCommit;
    DWORD   SizeOfHeapReserve;
    DWORD   SizeOfHeapCommit;
    DWORD   LoaderFlags;
    DWORD   NumberOfRvaAndSizes;
    IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
} IMAGE_OPTIONAL_HEADER32,* PIMAGE_OPTIONAL_HEADER32;
所述DataDirectory目录包含16(IMAGE_NUMBEROF_DIRECTORY_ENTRIES定义库的逻辑组件)条目:
Index
描述
0
导出功能
1
导入功能
2
资源资源
3
异常信息
4
安全信息

[1] [2] [3]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。

上一篇:CVE-2020-8597: PPPD 远程代码执行漏洞通告返回黑吧安全网首页】【进入黑吧技术论坛
下一篇:Windows Service Tracing中的权限提升漏洞分析 CVE-2020-0668


Notice: Undefined variable: canUpdate in /var/www/html/wordpress/wp-content/plugins/wp-autopost-pro/wp-autopost-function.php on line 51