标签:文件 私有 DLLIMPORT 导出 DLL PE DWORD dll
最近在看《Windows PE 权威指南》,才看完导出表。
动动手,跟着做一下好了。
看完这章,基本可以做一个网上常见的基本的PeInfo(pe文件查看器)了,
自己也写了一个,但是还不太完整,不过还是有参考价值的。
工欲善其事必先利其器,没有一个称手的工具,效率上不去啊。
为什么要自己写,因为对别人的不满意,而且自己能做。
不满意又不能做,就只能接受别人的了。
Peinfo 实验文件实验目的:导出dll中的私有函数。
这里仅记录实验过程,不涉及原理讲解。
IDE:Dev-C++,简洁方便,用来学习是很不错的选择。
一:编写dll文件
dll.h
#ifndef _DLL_H_ #define _DLL_H_#if BUILDING_DLL
#define DLLIMPORT __declspec(dllexport)
#else
#define DLLIMPORT __declspec(dllimport)
#endifDLLIMPORT void HelloWorld();
#endif
dllmain.c
/* Replace "dll.h" with the name of your header */ #include "dll.h" #include <windows.h>//导出
DLLIMPORT void HelloWorld()
{
MessageBox(0,"Hello World from DLL!\n","Hi",MB_ICONINFORMATION);
}
//不导出
int add(int a,int b)
{
return a + b;
}
直接编译运行,就会生成dll文件了。
2.定位导出表的位置
不做过多解释,直接看dll文件2000H的地方。注意前面46H个字节。
圈了一部分,但是太淡了。这里不多解释框出来的是什么,事实上,对导出表结构了解以后,光看这个字节,就能知道大体干什么的了。
没错,就是这个了,只有一个HelloWorld的导出函数。
typedef struct _IMAGE_EXPORT_DIRECTORY { DWORD Characteristics; DWORD TimeDateStamp; WORD MajorVersion; WORD MinorVersion; DWORD Name; DWORD Base; DWORD NumberOfFunctions; DWORD NumberOfNames; DWORD AddressOfFunctions; DWORD AddressOfNames; DWORD AddressOfNameOrdinals; } IMAGE_EXPORT_DIRECTORY,*PIMAGE_EXPORT_DIRECTORY;
这个winnt.h里面的导出表的结构,刚开始写的时候,还自己定位结构体,呵呵。
标签:文件,私有,DLLIMPORT,导出,DLL,PE,DWORD,dll 来源: https://www.cnblogs.com/dayq/p/15971064.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。