Author:ILU
前言
上一篇文章讲了如何从进程的TEB获取PEB,然后再从PEB中的LDR中的加载时的模块链表获取指定模块(Kernel32.dll),并经过断链的方式躲藏kernel32.dll。但是这里的躲藏并不是真正躲藏dll模块,只是在某些状况下看不到,实践上还是能够查得到的。上一篇文章学的过程真实是太久了,揣摩了很久,好在也是整出来了。
本篇文章应用PEB获取到的模块基址,然后一步一步的找到对应的函数,然后再应用函数执行shellcode。
留意
:编译时选择x86,x64代码还需求做一些简单的修正。
正题
在这里的话我们要理解一下PE相关的学问。
什么是PE文件?
PE文件的全称是Portable Executable,意为可移植的可执行的文件,常见的EXE、DLL、OCX、SYS、COM都是PE文件,PE文件是微软Windows操作系统上的程序文件(可能是间接被执行,如DLL)。(摘自百度百科)
PE文件的构造
这里简单的以一张图的方式去理解,细节后面渐渐讲。
PE文件的各个局部都有其对应的构造体,这是微软定义好的。我们能够经过构造体指针,获取到对应的值,同时我们用读取进制的软件(比方:HXD)翻开PE文件,也够经过这些构造体一个一个的找出其对应的数值。
忽然发现,这东西仿佛一时半会讲不分明,触及的学问点太多了。
DOS头部
typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header WORD e_magic; // MZ头 WORD e_cblp; // Bytes on last page of file WORD e_cp; // Pages in file WORD e_crlc; // Relocations WORD e_cparhdr; // Size of header in paragraphs WORD e_minalloc; // Minimum extra paragraphs needed WORD e_maxalloc; // Maximum extra paragraphs needed WORD e_ss; // Initial (relative) SS value WORD e_sp; // Initial SP value WORD e_csum; // Checksum WORD e_ip; // Initial IP value WORD e_cs; // Initial (relative) CS value WORD e_lfarlc; // File address of relocation table WORD e_ovno; // Overlay number WORD e_res[4]; // Reserved words WORD e_oemid; // OEM identifier (for e_oeminfo) WORD e_oeminfo; // OEM information; e_oemid specific WORD e_res2[10]; // Reserved words LONG e_lfanew; // 文件头地址 } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;
感谢您的来访,获取更多精彩文章请收藏本站。
![](https://www.gyzsq.com/wp-content/uploads/2022/07/9259adea4619.gif)
© 版权声明
本站网络名称:
孤勇者社区
本站永久网址:
https://www.gyzsq.com
网站侵权说明:
本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长QQ324470778删除处理。
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
THE END
喜欢就支持一下吧
相关推荐
评论 共1条
![头像](/wp-content/themes/zibll/img/avatar-default.png)
欢迎您留下宝贵的见解!
- 最新
- 最热
只看作者