windows 导出模块获取及dos内存结构剖析
来源:互联网 发布:网络支付有哪些 编辑:程序博客网 时间:2024/05/14 12:08
include "stdafx.h"#include <iostream>#include <windows.h>#include <string.h>using namespace std;int main(){ HMODULE hMod = ::GetModuleHandle(NULL); //获取dos头 IMAGE_DOS_HEADER *pDosHeader = (IMAGE_DOS_HEADER *)hMod; //获取选项头 IMAGE_OPTIONAL_HEADER *pOptHeader = (IMAGE_OPTIONAL_HEADER *)((BYTE *)hMod + pDosHeader->e_lfanew + 24); getchar(); //获取导入表基址 IMAGE_IMPORT_DESCRIPTOR *pImportDes = (IMAGE_IMPORT_DESCRIPTOR *)((BYTE *)hMod + pOptHeader->DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress); while (pImportDes->FirstThunk) { char *pszDllName = (char *)((BYTE*)hMod + pImportDes->Name); cout << "模块名:" << pszDllName << endl; IMAGE_THUNK_DATA *pThunk = (IMAGE_THUNK_DATA *)((BYTE *)hMod + pImportDes->OriginalFirstThunk); int n = 0; while (pThunk->u1.Function) { //获取导入函数名称 char *pFunName = (char*)((BYTE *)hMod + (DWORD)pThunk->u1.AddressOfData + 2); //获取导入函数地址 PDWORD lpAddr = (DWORD*)((BYTE *)hMod + pImportDes->FirstThunk) + n; //打印函h数名和函数表 printf("从此模块导入的函数:%-30s", pFunName); //printf("\t函数名称: %-10s", pFunName); printf("函数地址: %X\n", lpAddr); n++; pThunk++; } pImportDes++; } return 0;}
阅读全文
0 0
- windows 导出模块获取及dos内存结构剖析
- 【Windows】获取内存及CPU使用率
- C51内存结构深度剖析
- DOS下导入导出Windows注册表
- Windows Process内存组织结构及重要域解析
- Object内存核心结构及实现完全剖析(MethodTable、EEClass与MethodDescChunk)
- windows内存结构
- Windows的内存结构
- Windows的内存结构
- windows内存结构
- windows内存结构
- Windows内存结构
- Windows内存结构
- windows内存结构
- Windows内存结构 .
- chapt13、Windows内存结构
- Windows内存结构
- 关于Windows内存结构
- final关键字
- Devstack stable/pike local.conf 分析
- 俄罗斯方块
- 数据结构中缀转后缀笔记
- 从RDD角度来剖析Spark内部原理
- windows 导出模块获取及dos内存结构剖析
- 安卓事件分发机制
- jquery validate简单实例
- Flask使用SQLAlchemy时报字符集错误处理
- 16进制数与字符串转换函数
- Java内存泄露监控工具:JVM监控工具介绍
- day 19 Linux文件压缩与打包
- 俄罗斯方块
- Class类深入理解