首页
社区
课程
招聘
[原创]windows pe 获取各种info的接口
发表于: 2013-11-13 18:59 7225

[原创]windows pe 获取各种info的接口

2013-11-13 18:59
7225

在看雪也有一段时间了,也学习了很多技术
今天也为大家分享一些比较基础的东西吧,大牛勿喷。
关于windows pe这块,涉及的知识主要就是加壳脱壳,反调试等等一些之内的东西

最近一直在研究关于WINDOWS PE的一些安全知识,包括一些简单的脱壳还有涉及到一些PE的编程接口。一个是可以获取到PE头的信息+导入表+节信息。当然,各位如果想要更多的信息,自己在源代码上进行修改就行了,很好找的。

PE理论上的知识我就不说了,很多大牛都在论坛中提到很多了

废话不多说,上一些源代码的说明:

class CPESecurity {
public:
	CPESecurity(void);
	CPESecurity(__in wchar_t * pe_path);		//构造拷贝函数


        //对外的接口放在Public里面

        //唯一的参数就是,PE的路径
	BOOL LoadPeFile(__in wchar_t * pe_path);

protected:
	//实现打开文件,获取文件句柄的功能
	//返回指定文件的句柄
	HANDLE OpenFile(__in wchar_t * file_path);
	//实现内存映射的功能
	BOOL LoadPe();
	//获得PE文件头信息
	void GetPeHeadInfo();
	//获得节信息
	BOOL GetSectionInfo(__in void * lpMemory);
	//获得PE导入表
	BOOL GetImportPeTable(__in void * lpMemory);

	//辅助函数
	//将内存偏移RVA转换为文件偏移的函数
	DWORD RVAToOffset(__in void * lpFileHead,__in DWORD dwRva); 
private:
	PVOID						m_pe_base_address;			//WINDOWS pe映射基址
	PIMAGE_NT_HEADERS			m_nt_head;					//WINDOWS pe nt head
	HANDLE						m_pe_mapfile;				
	HANDLE						m_pe_file;
	DWORD						m_pe_size;					//PE 文件大小
	wchar_t						m_pe_path[MAX_BUFFER_SIZE];
public:
	PEoption					m_pe_option;				//PE Header 的信息
};


说明:代码没有做好规范,还请见谅。
BUG : 目测现在只能识别一些win vc 的程序  ,自己写了一个mfc的,加载简单的可执行程序还
行,但是,但遇到一些市面上的软件就比较丢人了。。。

希望大家多多评论,指点指点。

环境:WIN7 + 2012 SP3
编译选项:
      多编译器处理是
      平台工具集v110_xp
      SDL检查否
其他选项默认。

上附件:
http://pan.baidu.com/s/1d31xu


[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 5
支持
分享
最新回复 (10)
雪    币: 19
活跃值: (125)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
看 来 ,下次不能用5号字体了。。。
2013-11-13 19:00
0
雪    币: 239
活跃值: (190)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
3
建议,可以更进一步封装,提供更多的功能 。
可以分析pe中的各种 信息,
pe信息还有许多 ,比如重定位表,资源表,导出表,等等
2013-11-13 20:27
0
雪    币: 19
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
感谢楼主,正在学习PE中...
2013-11-13 20:44
0
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
谢谢分享,来看下
2013-11-14 03:23
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
Windows PE和PE文件是两码事
一看第三行我还在想WinPE跟脱壳有啥关系
在楼主分享比较基础的东西之前,还是多看看更为基础的东西吧
2013-11-14 09:13
0
雪    币: 19
活跃值: (125)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
7
恩,想到过。只不过资源表的接口很早已经写好,没上传而已。。。

重定位和资源表,自己有点懒,就还没有写这一块的代码。嘿嘿
2013-11-14 10:20
0
雪    币: 19
活跃值: (125)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
8
本帖主要是分享的一个借口,和脱壳没有任何关系啦。
前面只是说了一个总结而已,最近同时在学简单壳的一些破解,以及在看《windows pe权威指南》学习编写和PE文件有关的代码而已,就当是在吐槽了。
您所说的更基础的东西,是什么呢?
2013-11-14 10:24
0
雪    币: 36
活跃值: (45)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
看ASM源码的书,用C++的方法写,改编很累吧???
2013-11-14 10:50
0
雪    币: 19
活跃值: (125)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
10
收获很多啊。呵呵。汇编能力长进了一些
2013-11-14 15:59
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
概念不清
http://technet.microsoft.com/en-us/library/cc766093(v=ws.10).aspx
2013-11-15 00:01
0
游客
登录 | 注册 方可回帖
返回
//