PE结构之绑定导入表

打印绑定导入表
//打印 绑定导入表
BOOL PrintBoundImport(__in char* m_fileName)
{char* Filebuffer = NULL;if (!GetFileBuffer(m_fileName, &Filebuffer)) return FALSE;PIMAGE_DOS_HEADER LPdosHeader = NULL;PIMAGE_NT_HEADERS LPntHeader = NULL;LPdosHeader = (PIMAGE_DOS_HEADER)Filebuffer;LPntHeader = (PIMAGE_NT_HEADERS)((CHAR*)LPdosHeader + LPdosHeader->e_lfanew);//如果是32位程序if (LPntHeader->OptionalHeader.Magic == 0x10b){PIMAGE_NT_HEADERS32 LPntHeader32 = LPntHeader;LPntHeader = NULL;PIMAGE_DATA_DIRECTORY LPdirBoundImport = &LPntHeader32->OptionalHeader.DataDirectory[11];PIMAGE_BOUND_IMPORT_DESCRIPTOR LPBoundImport = (CHAR*)LPdosHeader + RVAToFOA(LPdosHeader, LPdirBoundImport->VirtualAddress);CHAR* NameBase = LPBoundImport;while (LPBoundImport->TimeDateStamp != 0 && LPBoundImport->OffsetModuleName != 0){printf("时间戳:0x%x dll名字偏移:0x%x ForwarderRefs结构数量: %d dll名字 %s\n",LPBoundImport->TimeDateStamp, LPBoundImport->OffsetModuleName, LPBoundImport->NumberOfModuleForwarderRefs,(NameBase+ LPBoundImport->OffsetModuleName));LPBoundImport++;}return TRUE;}else{PIMAGE_NT_HEADERS64 LPntHeader64 = LPntHeader;LPntHeader = NULL;PIMAGE_DATA_DIRECTORY LPdirBoundImport = &LPntHeader64->OptionalHeader.DataDirectory[11];PIMAGE_BOUND_IMPORT_DESCRIPTOR LPBoundImport = (CHAR*)LPdosHeader + RVAToFOA(LPdosHeader, LPdirBoundImport->VirtualAddress);CHAR* NameBase = LPBoundImport;while (LPBoundImport->TimeDateStamp != 0 && LPBoundImport->OffsetModuleName != 0){printf("时间戳:0x%x dll名字偏移:0x%x ForwarderRefs结构数量: %d dll名字 %s\n",LPBoundImport->TimeDateStamp, LPBoundImport->OffsetModuleName, LPBoundImport->NumberOfModuleForwarderRefs, (NameBase + LPBoundImport->OffsetModuleName));LPBoundImport++;}return TRUE;}
}
IAT 表中的数据,在文件中可能已经不和INT表一样了,已经保存了需要导入的函数的VA(内存地址或者说绝对地址). 如果IMAGE_IMPORT_DESCRIPTOR结构(导入表的结构)中的TimeDateStamp==0 ,表示 没有绑定 ,如果为-1,说明已经绑定,这时 IAT表的数据已经是导入函数的VA了
IAT 中的 IMAGE_THUNK_DATA 结构将被导入函数的实际地址覆盖。磁盘上的可执行文件具有其 IAT 中其他 DLL 中 API 的实际内存地址。加载绑定的可执行文件时,Windows 加载程序可以绕过查找每个导入的 API 并将其写入 IAT 的步骤。正确的地址已经在那里了!但是,这只有在DLL正确对齐时才会发生
Inside Windows:深入了解 Win32 可移植可执行文件格式,第 2 部分 |Microsoft 学习
相关文章:
PE结构之绑定导入表
打印绑定导入表 //打印 绑定导入表 BOOL PrintBoundImport(__in char* m_fileName) {char* Filebuffer NULL;if (!GetFileBuffer(m_fileName, &Filebuffer)) return FALSE;PIMAGE_DOS_HEADER LPdosHeader NULL;PIMAGE_NT_HEADERS LPntHeader NULL;LPdosHeader (PIMAGE…...
【python学习】1-2 配置python系统环境变量
1.点击“我的电脑”右键,点击属性,点击“高级系统设置”,再点击环境变量。 2.选择“系统变量”中的Path后,点击编辑。 3.点击新建,添加如图两个路径,即是python安装的路径位置后,点击确定。...
日均千万订单的交易平台设计稿
业务背景 平台主要售卖电子商品和少量特定的实物商品。 经营模式,主要分为平台商家和自营店,自营店的流量占整个平台业务的50%以上,我负责自营店交易履约相关业务。 以前的架构,平台交易和履约中心是所有流量共享,在…...
如何在 iPad 上恢复已删除的历史记录?
iPad 配备了一个名为 Safari 的内置网络浏览器。这是一种在旅途中保持联系和浏览网页的强大且便捷的方式。但如果您不小心删除了浏览历史记录,则尝试恢复它可能会很令人沮丧。 幸运的是,您可以通过多种方法在 iPad 上恢复已删除的 Safari 历史记录。您应…...
Haar cascade训练人脸小模型做人脸辨别
代码讲解 1. 导入必要的库 import cv2 import os from pathlib import Path import shutil import numpy as np import loggingcv2: OpenCV 库,用于图像处理和计算机视觉。os: 提供了一种便携的方式使用操作系统依赖的功能。pathlib.Path: 提供了对象导向的路径处…...
DBA | 如何将 .mdf 与 .ldf 的数据库文件导入到SQL Server 数据库中?
[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ] 原文链接:DBA | 如何将 .mdf 与 .ldf 的数据库文件导入到SQL Server 数据库中? 如何将 (.mdf) 和 (.ldf) 的SQL Server 数据库文件导入到当前数据库中? Step 1.登录到 Sql Server 服…...
【差分数组】个人练习-Leetcode-3229. Minimum Operations to Make Array Equal to Target
题目链接:https://leetcode.cn/problems/minimum-operations-to-make-array-equal-to-target/description/ 题目大意:给出两个数组nums[]和target[],可以对nums[]数组进行这样两种操作 给某个区间内的子列全加1给某个区间内的子列全减1 求…...
HTML5--裸体回顾
免责声明:本文仅做分享~ 详情请参考以下: HTML 系列教程 (w3school.com.cn) 菜鸟教程 - 学的不仅是技术,更是梦想! --本文是光秃秃的空壳. 标题标签 段落标签 换行和水平线 文本格式化标签 (一般用左边的ÿ…...
【网络安全】CVE-2024-46990: Directus环回IP过滤器绕过实现SSRF
未经许可,不得转载。 文章目录 背景漏洞详情受影响版本解决方案背景 Directus 是一款开源 CMS,提供强大的内容管理 API,使开发人员能够轻松创建自定义应用程序,凭借其灵活的数据模型和用户友好的界面备受欢迎。然而,Directus 存在一个漏洞,允许攻击者绕过默认的环回 IP …...
问:JVM的垃圾收集算法你知道哪些,有什么区别?
GC(垃圾回收器)的概念 GC,即垃圾回收(Garbage Collection),是计算机程序中一种自动管理内存的机制。其目的是自动回收不再被使用的对象所占用的内存空间,从而避免内存泄漏和内存溢出࿰…...
Python selenium库学习使用实操四
系列文章目录 Python selenium库学习使用实操 Python selenium库学习使用实操二 Python selenium库学习使用实操三 文章目录 系列文章目录[TOC](文章目录) 前言一、元素获取二、选项解析总结 前言 在Python selenium库学习使用实操二中提到了下拉框的操作,一种是标…...
用Go开发跨平台GUI
本篇内容是根据2023年3月份#271 Cross-platform graphical user interfaces音频录制内容的整理与翻译 这一期与 Wails 和 Fyne 的创建者一起深入研究为不同架构和操作系统编写 Go 代码。 译者注: Wails的作者是在澳大利亚悉尼的威尔士人,github头像是威尔士的旗帜,Wails也是Wa…...
云原生开发 - 工具镜像(简约版)
在微服务和云原生环境中,容器化的目标之一是尽可能保持镜像小型化以提高启动速度和减少安全风险。然而,在实际操作中,有时候需要临时引入一些工具来进行调试、监控或问题排查。Kubernetes提供了临时容器(ephemeral containers&…...
Mac 电脑pink 后端ip地址进行本地联调
文章目录 0: 使用ping 192.39.192.180查看是否能ping通1:点击访达2:在访达里面 shift commit g 打开前往路径的窗口3:在窗口中输入地址/private/etc/hosts4:打开hosts文件 添加后端地址(如:192.39.192.180 localhost:80805:保存 后端ip为192.39.192.180…...
iPhone使用指南:如何在没有备份的情况下从 iPhone 恢复已删除的照片
本指南将向您展示如何在没有备份的情况下从 iPhone 恢复已删除的照片。我们所有人在生活中的某个时刻都一定做过一些愚蠢的事情,例如从手机或电脑中删除一些重要的东西。这是很自然的,没有什么可羞耻的。您可能在辛苦工作一天后回来。当突然想看一些照片…...
黑马程序员 javaWeb基础学习,精细点复习【持续更新】
文章目录 WEB开发一、HTML1.html介绍 二、CSS1.CSS介绍2.CSS导入方式3.CSS选择器4.CSS属性 三、JavaScript1.介绍2.浏览器3.js的三种输出方式4.js定义变量5.js数据类型6.js运算符7.全局函数8.函数定义9.js数组对象10.js正则对象11.字符串对象12.自定义对象13.BOM浏览器对象模型…...
【C++设计模式】行为型模式:中介者模式
行为型模式:中介者模式 中介者模式通过引入一个中介者对象来集中控制对象之间的交互。这样可以解耦多个对象之间的复杂交互关系,使系统更易于维护和扩展。 假设我们有一个简单的聊天室应用,其中有每个用户可以发送群聊消息给其他用户&#…...
关于C语⾔内存函数 memcpy memmove memset memcmp
memcpy使⽤和模拟实现 void * memcpy ( void * destination, const void * source, size_t num ); 函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。 这个函数在遇到 \0 的时候并不会停下来。 如果source和destination有任何的重叠&am…...
华为---Super VLAN简介及示例配置
目录 1. Super VLAN技术产生背景 2. Super VLAN概念 3. Super VLAN应用场景 4. Super VLAN工作原理 5. Super-VLAN主要配置命令 6. Super-VLAN主要配置步骤 7. 示例配置 7.1 示例场景 7.2 网络拓扑 7.3 配置代码 7.4 代码解析 7.5 测试验证 1. Super VLAN技术产生背…...
PHP 中浮点数 array_sum 求和精度丢失问题
首先给定一个数组: // 该数组中,amount 为 float/double 或 string 不影响结果 $arr [[amount > 1493.66],[amount > 1493.66],[amount > 1493.66] ];求和: $amount array_sum(array_column($arr, amount));我们已知晓的结果如下…...
STAR-CCM+物理场全览:从基础流动到前沿多物理场耦合
1. 流体与传热:STAR-CCM的仿真基石 流动与传热仿真是工程模拟中最基础也最常用的功能。在STAR-CCM中,这两个物理场就像盖房子的地基,后续所有高级功能都建立在这个基础之上。我刚开始接触CFD时,花了整整三个月时间专门研究这两个模…...
连接池为什么重要?从一次“数据库没打满,但应用越来越慢”的事故说起
连接池为什么重要?从一次“数据库没打满,但应用越来越慢”的事故说起 在很多后端系统里,数据库往往是最容易被怀疑的对象。 接口慢了,第一反应是: “是不是数据库扛不住了?” 订单页卡住了,第一…...
WindowsCleaner 终极指南:如何轻松解决C盘爆红和系统卡顿问题
WindowsCleaner 终极指南:如何轻松解决C盘爆红和系统卡顿问题 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是否曾经遇到过这样的场景:…...
Wand-Enhancer终极指南:免费解锁WeMod专业功能的完整解决方案
Wand-Enhancer终极指南:免费解锁WeMod专业功能的完整解决方案 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 还在为WeMod专业版的高昂订阅费…...
如何轻松管理Switch游戏:NS-USBLoader完整指南,三步搞定游戏安装与系统引导
如何轻松管理Switch游戏:NS-USBLoader完整指南,三步搞定游戏安装与系统引导 【免费下载链接】ns-usbloader Awoo Installer and GoldLeaf uploader of the NSPs (and other files), RCM payload injector, application for split/merge files. 项目地址…...
基于Sovereign-MCP-Servers构建私有AI工具链:从协议原理到Docker化部署
1. 项目概述与核心价值最近在折腾AI应用开发,特别是想给Claude、Cursor这类工具加上“联网”和“执行”能力时,绕不开一个概念:MCP(Model Context Protocol)。简单说,MCP就是一套标准协议,它能让…...
本地化AI代码助手LLMDog:模块化框架与开源模型集成实践
1. 项目概述:一个为开发者设计的本地化AI代码助手最近在GitHub上闲逛,发现了一个挺有意思的项目叫“LLMDog”,作者是doganarif。乍一看这个名字,可能会联想到“AI狗”或者某种宠物,但它的全称其实是“Large Language M…...
Arm Iris调试接口:架构设计与工程实践详解
1. Iris调试与追踪接口深度解析调试与追踪技术是嵌入式系统开发的核心支柱,而Arm的Iris接口代表了这一领域的最新进展。作为一名长期从事嵌入式调试工具开发的工程师,我将带您深入剖析这套接口的设计哲学与实战应用。1.1 接口架构设计理念Iris的架构设计…...
基于树莓派与QT Py的本地化物联网红外遥控器DIY指南
1. 项目概述与核心价值想没想过,把家里那堆遥控器——电视的、机顶盒的、空调的、音响的——统统集成到一个你手机能打开的网页里?而且这个控制中心完全在你家局域网里运行,不依赖任何云服务,不用担心厂商倒闭后设备变砖。今天分享…...
