PE
文章平均质量分 70
hercu1iz
i am a robot.
展开
-
PE新增节|扩大节|合并节
PE中节操作新增节实现步骤扩大节实现步骤合并节实现步骤新增节PE结构使用:SizeOfImageNumberOfSectionsVirtualSizeVirtualAddressSizeOfRawDataPointerToRawData实现步骤-判读那是否有足够空间,可以添加一个节表SizeOfHeaders-(DOS+DOS STUB+NT头+已存在节表) >=2个节表大小满足才可添加,否则提升PE头-完善新增节表内容-在新添节表后面填充一个(节表)大小的00-修改PE原创 2021-05-21 21:31:17 · 663 阅读 · 0 评论 -
PE中添加代码
PE中写入Shellcode需要用到的数据必须掌握的知识实现步骤需要用到的数据AddressOfEntryPointImageBaseSizeofRawDataVirtualSize必须掌握的知识实现的功能:执行完添加的代码后,跳回原来的入口。硬编码知识:call : E8 X=[(真正跳转的地址-(E8下一行的指令地址))] //X得出来的地址必须是内存加载时的地址jmp : E9 [同上公式]变式:X = 真正跳转的地址-(E8当前地址+5)注:下一行地址 = 当前地址+原创 2021-05-21 21:20:40 · 340 阅读 · 0 评论 -
PE拉伸|压缩
PE拉伸|压缩拉伸压缩重点:理解整个过程的思路是重点,代码思路自然就出来了。拉伸PE结构使用数据:SizeOfImageSizeOfHeadersPointerToRawDataVirtualAddressSizeofRawData-开辟空间-复制头-复制节压缩-开辟一个新的空间-复制头-复制节注意:最后一个节的PointerToRawData+在磁盘中所占大小SizeOfRawData...原创 2021-05-21 21:08:31 · 261 阅读 · 0 评论 -
RVA转FOA(RAW)[两种方法]
RVA转FOA(RAW)方法一(普通方法)方法二(变式)需要数据:IMAGE_SECTION_HEADER.VirtualAddress //内存中该节起始的RVAIMAGE_SECTION_HEADER.PointerToRawData //文件中该节起始的偏移方法一(普通方法)判断RVA落在哪个节内,找出对应IMAGE_SECTION_HEADER内容求出该节的起始RVA0=IMAGE_SECTION_HEADER.VirtualAddress求出偏移量offset=RVA0-RV原创 2021-05-21 21:02:47 · 541 阅读 · 0 评论 -
PE_结构解析
PE结构PE中涉及的地址有四类PE中对齐有三类分页机制PE头(不重要成员省略)IMAGE_DOS_HEADERIMAGE_NT_HEADERS头IMAGE_FILE_HEADER标准头IMAGE_OPTIONAL_HEADER32可选头IMAGE_SECTION_HEADER节表项(*星号标志多加记忆)PE结构里面最重要的就是清楚参照物(地址参照对象)PE中涉及的地址有四类虚拟内存地址Virtual address VA = 进程基址+RVA相对虚拟内存地址Revelation Virt原创 2021-04-08 00:00:43 · 410 阅读 · 0 评论 -
PE_重定位表
重定位表概述为什么需要重定位表存在?重定位表定位重定位表项IMAGE_BASE_RELOCATION结构结构详解定位实例概述加载PE文件到虚拟内存时,EXE默认IMAGEBASE一般为400000,DLL默认IMAGEBASE一般为10000000。一般情况下,EXE都是可以按照ImageBase的地址进行加载的.因为Exe拥有自己独立的4GB 的虚拟内存空间。 但DLL 不是 DLL是有EXE使用它,才加载到相关EXE的进程空间的。为了提高搜索的速度,模块间(各个Dll之间)地址也是原创 2021-04-05 13:25:18 · 476 阅读 · 0 评论 -
PE_导出表
导出表导出表概念导出表的作用导出表数据结构(IMAGE_EXPORT_DIRECTORY)IMAGE_EXPORT_DIRECTORY.nNameIMAGE_EXPORT_DIRECTORY.NumberOfFunctionsIMAGE_EXPORT_DIRECTORY.NumberOfNamesIMAGE_EXPORT_DIRECTORY.AddressOfFunctionsIMAGE_EXPORT_DIRECTORY.nBaseIMAGE_EXPORT_DIRECTORY.AddressOfNamesI原创 2021-04-01 10:18:57 · 1054 阅读 · 0 评论 -
PE_静态链接库/动态链接库
静态链接库/动态链接库静态链接库创建一个静态链接库使用静态链接库(两种方法)方法一方法二静态链接库的缺点:动态链接库创建一个动态链接库使用动态链接库(两种方法)方法一隐式链接方法二显示链接(利用API函数)使用.def文件导出动态链接库中的函数(隐藏函数名)静态链接库创建一个静态链接库1.创建项目:Win32 Static Library不用勾选选项,直接完成即可。2.随便创个类(方便一步到位获得xxx.h文件和xxx.cpp文件,当然你也可以选择自己分别创建这两个文件)3.完成后把里面构造原创 2021-03-31 00:38:16 · 564 阅读 · 0 评论 -
PE_导入表
导入表导入表简述调用一个外部函数流程导入表中涉及的数据结构总览结构全局流程导向(这图要牢牢映入脑中)IMAGE_THUNK_DATA(这真是个理解大坑)导入表描述符IMAGE_IMPORT_DESCRIPTOR结构信息IMAGE_IMPORT_BY_NAME查看IAT和导入表并分析证明(磁盘中)桥一和桥二最终指向一样证明(加载内存中)桥一不变,桥二中地址操作系统填入函数真实地址导入表简述目的:为实现代码重用而设置的。一个PE文件调用了多少外来函数,以及这些外来函数都存在于那些动态链接库DLL里等信息。原创 2021-03-27 22:59:26 · 377 阅读 · 0 评论