导入表

26 篇文章 2 订阅

一、 导入(出)表

导入表在扩展PE头_IMAGE_DATA_DIRECTORY DataDirectory[16]中,每个结构体都是8个字节

二、导入表

IMAGE_DIRECTORY_ENTRY_IMPORT
struct _IMAGE_DATA_DIRECTORY {
0x00 DWORD VirtualAddress;		//导入表的地址
0x04 DWORD Size;				//大小
};

三、导入表结构(20个字节)

typedef struct _IMAGE_IMPORT_DESCRIPTOR {
union {
DWORD Characteristics;
DWORD OriginalFirstThunk; //RVA 指向IMAGE_THUNK_DATA结构数组
};
DWORD TimeDateStamp; //时间戳
DWORD ForwarderChain;
DWORD Name; //RVA,指向dll名字,该名字已0结尾
DWORD FirstThunk; //RVA,指向IMAGE_THUNK_DATA结构数组
} IMAGE_IMPORT_DESCRIPTOR;

四、导入表名字

DWORD VirtualAddress;		//导入表的地址	80 CE 01 00 
DWORD Size;					//大小	DC 00 00 00

在这里插入图片描述
有20个0导入表结束 ,每个导入表20个字节

DWORD Name; //RVA,指向dll名字,该名字已0结尾
在这里插入图片描述
D8 D5 01 00
在这里插入图片描述

五、导入名称表(导入地址表)
在这里插入图片描述
在这里插入图片描述

导入名称表(4字节)

typedef struct _IMAGE_THUNK_DATA32 {
    union {
        PBYTE  ForwarderString;
        PDWORD Function;
        DWORD Ordinal;			//序号
        PIMAGE_IMPORT_BY_NAME  AddressOfData;	//指向IMAGE_IMPORT_BY_NAME
    } u1;
} IMAGE_THUNK_DATA32;

一直找到4个字节都是0结束

IMAGE_IMPORT_BY_NAME:

typedef struct _IMAGE_IMPORT_BY_NAME {
    WORD    Hint;			//可能为空,编译器决定 如果不为空 是函数在导出表中的索引
    BYTE    Name[1];			//函数名称,以0结尾
} IMAGE_IMPORT_BY_NAME, *PIMAGE_IMPORT_BY_NAME;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值