U盘PE| w764位旗舰版下载 | U盘装win7系统 | U盘启动 |win7pe | win10下载 |加入收藏土豆PE官网U盘PE,U盘装win7系统,win7pe,U盘启动,U盘装系统,w764位旗舰版下载站!
当前位置:主页 > 帮助中心 > 帮助中心 >

3.4 动态定位API函数地址(原理)

来源:http://www.tudoupe.com时间:2022-07-30

目录

一、Why?

二、How?

一、Why?

基于以前的代码嵌入实验和位置壳代码实验,我们发现这台机器的API输入地址与书上的API输入地址不同,因此,这导致API输入地址在机器上手动使用 dependency Walker被丢失在其他计算机上,它极大地影响了剥削的普遍性.这 一 现象 的 原因 主要 是 :

  • 不同的操作系统版本: windows 200, windwos XP等将影响动态链接库的载荷基地址;
  • 不同的补丁版本:许多安全补丁修改这些动态链接库中的函数,使得相应的动态链接库的内容不同于不同的补丁版本,包括动态链接库文件的大小和导出函数的极化地址。

二、How?

以Windows操作系统为例,Windows API通过动态链接库中的出口函数实现,例如,内存操作和其他功能在内核32中;在 dll中实现;许多与图像接口相关的API在user32中。Win_32平台shellcode使用最广泛的方法,通过从进程环境块中找到动态链接库的输出表,并搜索所需的API地址,然后注意调用。

所有的Win_32程序都会加载ntdll.dll和kernel32.dll这两个最基础的动态链接库。以定位kernel32.dll中的API地址为例,可以采用如下方法:

  1. 首先通过段选择字FS在内存中找到当前的线程环境块TEB
  2. 线程环境块的偏移存储在0x30位置,带有指向方向进程环境块PEB的指针。
  3. 过程环境块中的偏移位置存储在0xOC指向的地方PEB_LDR_DATA结构存储由进程已经加载的动态链接库的信息的指针。
  4. PEB_LDR_DATA结构偏移位置为0xlC的地方存放着指向模块初始化链表的头指针InInitializationOrderModuleList
  5. 模块初始化链表InInitializationOrderModuleList 中按顺序存放着PE装入运行时初始化模块的信息,表末端的第一个链接是ntdll.dll,第二个链接是 kernel32.DLL。
  6. 它属于32内核。 在 dll的结点之后,以0x08为基础的变换是在内存中载入DLL的基地址
  7. 从32内核计算了DLL的装载基础地址,其中0x3C被移动PE头
  8. PE头把Ox78移到存储指针的地方函数导出表的指针。

为此,我们可以用下列方法计算在函数输出表中所需的函数的输入地址:

  • 表极化Ox1C的指针指向存储导数函数极化地址列表(RVAs)。
  • 输出表的指针向0x20点移到存储输出函数的名称列表中。
  • 函数的RVA地址和名称存储在上述两个列表中,我们可以在名称列表中找到它们
    需要的函数是第一个,然后在地址列表中找到相应的RVA。
  • 在获取RVA后,加上前面已经获得的动态链路库的加载基地址,您现在得到了所需的API
    在内存中,虚拟地址是我们最终需要的地址,当调用shellcode时。

流程图如下:

Copyright © 2012-2014 Www.tudoupe.Com. 土豆启动 版权所有 意见建议:tdsky@tudoupe.com

土豆系统,土豆PE,win7系统下载,win7 64位旗舰版下载,u盘启动,u盘装系统,win10下载,win10正式版下载,win10 RTM正式版下载,win8下载,电脑蓝屏,IE11修复,网络受限,4K对齐,双系统,隐藏分区,系统安装不了,U盘装系统,笔记本装系统,台式机装系统,diskgenius运用,GHSOT装系统,U盘修复,U盘技巧,U盘速度,U盘不能格式化,U盘复制发生错误,U盘加密,U盘选购,开机黑屏,蓝屏,进不了系统,上不了网,打不开程序,点击无反应,系统设置,PE个性化,PE添加网络,PE维护系统

点击这里给我发消息