- 博客(21)
- 收藏
- 关注
转载 vc++常见编码规范及其应用
概述对于众多的编码规范一直没有一个清晰的认识,本文旨在理清这些编码规范的定义和特点。ASCIIASCII全称是美国国家信息交换标准码,它是用于字符转换的一个标准,长度是7位,可以标记128个不同的字符,但是这个标准极其有限,比如说它就无法支持中文的编码,甚至连其他英语国家的需求也无法满足,比如说英国的英镑符号。ANSIANSI是美国的一家非营利制定国家标准的机构,ANSI也被称...
2018-11-11 18:29:00 165
转载 浅谈Windows SDK窗口程序的消息机制
Windows系统的消息机制一个库函数(比如fopen),最终会调用操作系统的API来实现其功能,在Windows中,不仅库函数最终会调用系统函数,系统函数反过来也会调用用户函数,这种机制就是通过消息来实现的。我们假设程序发生了一项鼠标点击“关闭”按钮的操作,系统会发现这次操作,并将这次操作包装成消息结构体发送到程序的消息列表中,每一个程序都有一个消息列表(后面会讲),消息列表中的消...
2018-11-11 11:39:00 165
转载 PE文件格式学习(十六):延迟加载表
1.介绍延迟加载表本质上跟绑定导入表的目的是一样的,都是为了加快程序加载文件的速度,只不过方法不一样。延迟加载是指在调用某个DLL时才去加载,目的是为了避免在程序启动之初就加载了不必要的DLL而浪费了时间。微软建议在两种情况下使用延迟加载:程序并非在启动时就会调用DLL里面的函数程序未必会调用该DLL里面的函数延迟加载表不是系统支持的一个特性,它是由编译器控制的。2.分...
2018-11-08 10:46:00 122
转载 PE文件格式学习(十五):导入地址表
导入地址表的内容其实就是导入表中的FirstThunk的内容,本例使用的是PE文件格式学习(十四):绑定导入表一文中的程序,因为它有绑定导入表,所以它的FirstThunk会被填入导入表中函数的真实地址。转载于:https://www.cnblogs.com/tutucoo/p/9927718.html...
2018-11-08 10:45:00 125
转载 PE文件格式学习(十四):绑定导入表
1.介绍绑定导入表的作用是加快程序的启动速度,一个PE程序在启动时会去加载导入表中的dll文件,并将导入表的FirstThunk指向的数组填入函数的真实地址,这需要耗去时间,绑定导入表中保存了导入函数的真实地址,所以当PE在启动时系统检测到有绑定导入表,就会直接将地址填入FirstThunk里,这样就省去了寻找真实地址的时间。但是绑定导入表的生效,有两个前提条件:程序初始化时,导...
2018-11-08 10:31:00 202
转载 PE文件格式学习(十三):载入配置表
1.介绍载入配置表早期是用于描述当PE文件头或PE可选头无法描述或者因为太大而无法描述的各种功能。后来以XP及以后的系统主要是为了存储SEH句柄,称为安全结构化异常处理程序列表,如果SEH异常处理没有经过注册,在载入配置表中没有句柄,这个异常处理就不会被执行。具体的例子就不演示了,看起来只要是正规编写的程序都会在表中注册,因此都可以执行。据微软官方说明,这个载入配置表的作用是为了...
2018-11-08 10:12:00 234
转载 PE文件格式学习(十二):TLS表
1.介绍TLS全称线程局部存储器,它用来保存变量或回调函数。TLS里面的变量和回调函数都在程序入口点(AddressOfEntry)之前执行,也就是说程序在被调试时,还没有在入口点处断下来之前,TLS中的变量和回调函数就已经执行完了,所以TLS可以用作反调试之类的操作。TLS中的变量单独存在于每个独立的线程当中,每个线程中对该变量的操作都不会影响到其他线程中的TLS变量。TLS变...
2018-11-08 10:07:00 325
转载 PE文件格式学习(十一 ):全局指针表
在x86与x64系列平台没有使用全局指针表,目前只应用于MIPS等平台上,多用于参数传递。转载于:https://www.cnblogs.com/tutucoo/p/9927453.html
2018-11-08 10:03:00 118
转载 PE文件格式学习(十):版权或特殊结构表
微软官方文档说这个表是保留的,必须为0转载于:https://www.cnblogs.com/tutucoo/p/9927451.html
2018-11-08 10:02:00 108
转载 PE文件格式学习(九):调试表
微软官方参考文档:https://docs.microsoft.com/en-us/windows/desktop/debug/pe-format#debug-type转载于:https://www.cnblogs.com/tutucoo/p/9927378.html
2018-11-08 09:51:00 88
转载 PE文件格式学习(八):基址重定位表
1.简介基址重定位表位于数据目录表中的第六个,它位于安全表的后面。这个表的作用是用来索引那些需要重定位的数据的。当系统发现DLL的真实加载基址跟PE文件中的ImageBase中的值不一样时,就会启用基址重定位表修复一些数据的地址。我们知道一个程序中可能包含多个DLL,因此有可能多个DLL之间的ImageBase是重合的,一旦某个加载基址被占用了,系统就会随机分配一个基址给将要加载的D...
2018-11-08 09:47:00 285
转载 PE文件格式学习(七):安全表
1.介绍如果一个应用程序有数字签名,那么它的安全表就不会为空。它位于异常表的后面。2.安全表解析通过数据目录表里提供的RVA,我们转换成offset,找到了安全表的位置,如下:安全表的结构体如下:typedef struct _WIN_CERTIFICATE{ DWORD dwLength; WORD wRevision; WORD wCertifi...
2018-11-08 09:45:00 183
转载 PE文件格式学习(六):异常表
1.概述x86系统采用动态的方式构建SEH结构,相比而言x64系统下采用静态的方式处理SEH结构,它保存在PE文件中,通常在.pdata区段。因此本文的例子采用x64编译过的程序。异常表在资源表的后面。2.异常表解析数据目录表的第四个元素指向异常表,RVA指向的是一个IMAGE_IA64_RUNTIME_FUNCTION_ENTRY的结构体,本例的RVA是0xA000(也就是.p...
2018-11-08 09:43:00 363
转载 PE文件格式学习(五):资源表
1.概述程序内部和外部的界面等元素的二进制数据统称为资源,程序把它们放在一个特定的表中,符合数据和程序分离的设计原则。Windows程序中的资源大致分为六类:菜单、对话框、位图、光标、图标、自定义资源资源表是数据目录表中的第三个元素,排在导入表的后面。2.资源表解析资源表的解析比较复杂,可能是所有数据目录表中最复杂的一个。我将结合例子说明,这样会比较好理解。我们的文件在十六进...
2018-11-08 09:42:00 185
转载 PE文件格式学习(四):导入表
UPDATE:在文章的末尾更新了一张图,在网上找的,有助于理解导入表的结构1.概述导入表是逆向和病毒分析中比较重要的一个表,在分析病毒时几乎第一时间都要看一下程序的导入表的内容,判断程序大概用了哪些功能。导入表是数据目录表中的第2个元素,排在导出表的后面。2.导入表解析先来了解一下导入表在PE文件中的结构体:struct _IMAGE_IMPORT_DESCRIPTOR...
2018-11-08 09:39:00 123
转载 PE文件格式学习(二):总体结构
1.概述PE文件分为几个部分,分别是:DOS头DOS StubNT头(PE头)文件头可选头区段头(一个数组,每个元素都是一个结构体,称之为IMAGE_SECTION_HEADER).text.rdata.data.rsrc.reloc...本篇文章主要围绕整体结构做一个梳理,不会做太多细节的讲解。(比如说可选头里的数据目录表,它包含16种表,会在接下来...
2018-11-08 09:38:00 286
转载 PE文件格式学习(三):导出表
1.回顾上篇文章中介绍过,可选头中的数据目录表是一个大小为0x10的数组,导出表就是这个数组中的第一个元素。我们再回顾下数据目录表的结构体:struct _IMAGE_DATA_DIRECTORY{ DWORD VirtualAddress; DWORD Size;} IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY;可...
2018-11-08 09:38:00 98
转载 PE文件格式学习(一):概述
1.PE文件简介PE文件格式是Windows系统中应用最广泛的文件格式之一,我们常见的可执行文件.exe、动态链接库.dll以及驱动文件.sys等都是PE文件格式的。可以通过十六进制工具如010editor查看PE文件,可以看到PE文件都有一个共同的特点,就是它们的最开头都是4D5A,也就是ASCII字符MZ。见下图在Windows系统“眼里”,其实只有PE文件,后缀名只是用于关...
2018-11-08 09:35:00 133
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人