![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
pe
文章平均质量分 86
不会写代码的丝丽
这个作者很懒,什么都没留下…
展开
-
PE 资源表
前言我们在window开发中需要很多资源比如ico和accelerator,dialog这些资源都被存放在PE文件的.rsrc节中。首先我们需要明白PE存储方式才好解析:首先是三个三级目录最后才是真正的资源,其中第三个目录使用LCID进行区分地区.具体参阅谈谈Windows程序中的字符编码//winnt.h#define IMAGE_DIRECTORY_ENTRY_RESOURCE 2 // Resource Directory我们举例某个工程你可以看到这个工程有两个原创 2022-05-01 00:53:49 · 691 阅读 · 0 评论 -
Windows TLS原理
显示TLS首先看代码#include <iostream>#include<Windows.h>#include<tchar.h>#include<winnt.h>DWORD dwIdx = 0;int GLOBAL_VAR = 4;DWORD threadFun( LPVOID lpThreadParameter) { Sleep(10); DWORD dwVa2 = (DWORD)TlsGetValue(dwIdx); prin原创 2022-04-17 21:30:16 · 1676 阅读 · 0 评论 -
PE重定位表
前言首先看一个问题,假设我们的某个EXE/DLL首选加载地址是0x10000,但实际由于随机基质等原因实际加载地址与首选地址产生的偏移。我们首先看一个exe的静态反编译结果我们看到00411E98这个地址的反汇编指令是MOV EAX,[41A014H]我们再看看动态加载这个EXE后的结果这个你可以明显看到这个指令变成了eax dword ptr[09FA014h],这个读取地址从41A014H到09FA014h变化。这就是因为基地址实际装载有变化因此需要对于实际地址的命令做出改变。为了解原创 2022-04-10 20:44:10 · 1107 阅读 · 1 评论 -
PE 导出表
名称寻址我们下window经常导出函数,因此在动态库我们往往有一个特殊结构叫做导出表。Microsoft官方文档说明我们首先看一个导出模块信息#export.defEXPORTS MsgBox Foo TestFunc ABCDFunc上面我们导出四个函数且是名称导出我们的导出表地址位于NT头中数据目录的第一项。这个导出目录的位于虚拟地址的2060h处 换算成文件地址为660h相关的数据结构对应上面的数值我们得出以下数据FieldValue备注E原创 2022-04-09 19:05:38 · 649 阅读 · 0 评论 -
PE结构导入表
首先放一张PE结构导入放在数据目录数组中,所以我们先介绍这个数组相关结构。首先有4个字节指示这个数组大小,然后再接上数组元素。每一项数组的结构体typedef struct _IMAGE_DATA_DIRECTORY { DWORD VirtualAddress; //内存的虚拟地址 DWORD Size;//大小} IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY;上面的表示意义:的在VirtualAddress内存处大小为原创 2022-03-19 15:59:19 · 360 阅读 · 0 评论 -
内存Dump出PE
https://docs.microsoft.com/en-us/windows/win32/debug/pe-formathttps://blog.csdn.net/weixin_43655282/article/details/104291312https://zhuanlan.zhihu.com/p/31967907[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QwpoOrBd-1646929463326)(https://upload.wikimedia.org原创 2022-03-12 01:25:51 · 1045 阅读 · 0 评论