其他分享
首页 > 其他分享> > PE文件之dll导出私有函数

PE文件之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)
#endif

DLLIMPORT 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