改造PE中的函数为导出函数

模拟操作系统的装载器LoadPE 模拟操作系统实现loadPE 设计思路 将PE文件头加载到内存中 把所有节区数据加载到内存 修正导入表,也就是上面的获取导入函数地址填入到IAT中 注意:为了防止装载的程序涉及到VA不一样,导致loadPE访问地址崩溃,所以自己的loadPe程序的基址要和装载的程序地址要一样,可以修改link 选项 /base:基地址 举例说明:假如对方模块基址为10000000 有个指令为jmp 0x1000... 阅读详情

改造PE中的函数为导出函数




1、前言:为什么要这么做
  很多时候,我们发现一个PE(EXE或DLL)中非常有用且功能独立的函数(call xxxxxxxx),并且已经知道了这个函数的各个入口参数的类型和具体含义,我们想在其他的软件中使用这个函数。于是,我想到了将这个PE中的函数改成一个导出函数,这样,我们就可以在任何软件中通过“LoadLibrary("ThisPE.EXE")”等API来使用这个函数了。

2、技术基础:已经了解PE结构

3、分类:
  (1)有导出表的DLL和EXE文件--非常简单
  对于这类PE文件,要简单的多,因为只要修改一下PE中的Export,增加上一个导出函数,并把这个导出函数的入口指向我们要导出的call的调用地址(RVA格式)就可以了。甚至可以更简单的处理:找个不用的导出函数,改一下入口就可以了。
  (2)没有导出表的EXE文件--稍微复杂
  因为大部分EXE文件没有导出表,所以我们必须要给它增加一个导出表。其实也很简单,给EXE增加一个节,并在这个节中按照导出表的格式构造一个导出函数,并将这个函数入口指向我们要导出的call的调用地址的RVA,并在PE头中指出其位置和大小。

4、举例说明:
  test.exe:ImageBase=0x00400000
  发现test.exe 的 0x00408050 处为call 0x0040A012 的 0x0040A012是我们要导出的函数,我们将它导出为MyFunction函数。

  (1)给test.exe增加一个节:RVA=0x28000,size=0x1000
  (2)构造导出表:
My_Export_Table dd 0 ;Characteristics
My_TimeDateStamp dd 0   ;TimeDateStamp
          dw 0   ;MajorVersion
          dw 0 ;MinorVersion
My_nName       dd My_DLL_nName-ImageBase ;nName
          dd 1 ;nBase
          dd 1 ;NumberOfFunctions
          dd 1   ;NumberOfNames
My_AddressOfFunctions     dd 0x0040A012-ImageBase ;AddressOfFunctions
My_AddressOfNames       dd My_Fun_Name-ImageBase ;AddressOfNames
My_AddressOfNameOrdinals   dd 0 ;AddressOfNameOrdinals
---------------------------------------------------------------------
My_Fun_Name           db 'MyFunction',0
My_DLL_nName           db 'test.exe',0

  (3)LoadPe修改PE头,将导出表地址填入0x28000,大小填入0x1000,保存。

                        Spirng.W/2005.3.14



PS:

    没有导出表的EXE文件 情况下,没必要添加新节,可以找一块剩余空间代替。


    如果单独使用其中的某个call,有时候加载需要第3方DLL才可以加载。举个例子,人家写了一个程序A.exe,附加有个B.dll,我仅仅想用到A.exe里面的一个函数,不想把B.dll牵扯进来,但是如果没有B.dll,加载A.exe的时候无法加载,可能会提示缺少B.dll,这时候可以把A.exe的import表信息请除掉。就是不引入B.dll信息。如果A.exe也是一个DLL,那么有时候还需要把A.exe(这时候是A.dll)的入口处直接ret,防止入口处执行B.dll里面的函数

作者: dwing

给出个另类方法:
mod=LoadLibrary("xxx.dll"); //载入文件
func=(char*)mod+offset;   //找到函数入口地址
__asm push param2       //参数2
__asm push param1       //参数1
__asm call func;         //直接硬调用
__asm mov ret,eax       //保存返回值

 

LoadPE工具 立即下载

相关推荐

loadPE查壳工具

不多说了,查壳工具,信息安全必备之神兵利器

Windows逆向项目-LoadPE

Windows逆向项目-LoadPE

1739

LoadPE源代码

LoadPE源代码

反病毒工具-LordPE

LordPE简介一款强大的可执行文件分析辅助脱壳工具,附带16进制编辑器.不包括反汇编模块.它名字叫LordPE而不是LoadPE. 其拥有基于最小功能的PE修改方式.对于win32平台下如果不将样本拖到其中分析看看,还叫分析恶意程序吗?可见其非常常用实用.

KD的疯狂实验室 1万+

LoadPE工具(修改了可正常运行).rar

LoadPE工具(修改了可正常运行)."_"

loadpe工具(1-4)

好用的PE文件查看分析工具,能查看PE文件各段,各种文件信息。

Spring源码3.1 默认标签的解析——Bean标签的解析及注册

Rush6666的博客 178

LoadPE 无病毒版

LoadPE目前网上大多数都在病毒,这个已经用卡巴杀过了。没有病毒。大家放心使用。

Spring3.2 中 Bean 定义之基于 XML 配置方式的源码解析

Spring3.2 中 Bean 定义之基于 XML 配置方式的源码解析 简介: 本文简要介绍了基于 Spring 的 web project 的启动流程,详细分析了 Spring 框架将开发人员基于 XML 定义的 Bean 信息转换为 Spring 框架的 Bean Definition 对象的处理过程,向读者展示了 Spring 框架的奥妙之处,可以加深开发人员对 Sprin

远有青山 1821

loadpe最新版豪华版中文

loadpe最新版豪华版中文2014.7.11无毒的

MedicalNet实战:3D医疗影像分割从零到部署(PyTorch+ResNet50)

本文详细介绍了基于PyTorch和MedicalNet预训练模型进行3D医疗影像分割的完整实战流程。通过加载ResNet50预训练权重进行迁移学习,大幅降低了对标注数据量的需求,并提升了模型性能。文章涵盖了从数据准备、模型微调、训练优化到最终部署的每一步,为医疗AI开发者提供了从零到部署的清晰指南。

weixin_29062671的博客 587

Spring3中Bean的加载解析

第三天 今天的事比较的郁闷,做一个优化查询的事,就是根据一堆ID去查对应的一堆数据,我先把这一堆ID写到临时表里面,然后再根据临时表从正式表里面把数据查出来,按理说是没太多曲折的一件事情,但是在我测试的时候一直查不出数据,检查了半天,原来是数据库里面真的没有这些ID的数据,当时我就郁闷了。    今天没怎么学东西,下午终于把屋里的空调弄好了,师傅说是外面的风扇的线接触不良,加了点F,总共花了2

zstu_cc的专栏 836

Lattice FPGA 开发工具Diamond使用流程总结——工具使用

本文介绍了一般的Diamond开发流程,包括工程创建、文件输入、IP使用、约束、管脚分配、和布线布局等流程

weixin_41895751的博客 2万+

Spring 3-Bean的解析

一、Bean的解析(以XmlBeanFactory为例来说明) 1、构造级联容器 AbstractBeanFactory.java public void setParentBeanFactory(BeanFactory parentBeanFactory) { // 如果当前容器已经指定了父容器,且新的父容器与当前的父容器不相同,则出错了; if (this.pare...

Hello, JavaER 222

c语言压力变送器程序设计,基于单片机的压力变送器设计

基于单片机的压力变送器设计(任务书,开题报告,外文翻译,论文15000字,代码)摘要随着工业化水平的不断提高,新型智能仪表在工业生产过程中运用也越来越广泛,同时对输出数据的准确检测和处理也变得至关重要。生产过程的运行和设备安全是极其重要的,那么如何实现对其精确的检测呢?众所周知,在工业生产过程中有一个很重要参数——压力,显然这个参数是一个必不可少的条件。故而,研究智能压力变松器系统对工业生产有着不...

weixin_33681561的博客 1962

USB3.0一致性测试方案

为各测试项目具体测试结果包括脉冲串突发时间、脉冲串重复时间、时钟周期以及眼图等完整USB3.0测试项目,工程师可以看到各项测试的具体结果方便观察。RIGOL 提供了一套完善的工具,包括数字示波器、专业的测试夹具以及全自动一致性测试软件,使得USB 3.0设备设计人员能够高效精确地进行信号捕捉、测试与分析。报告第二部分测试摘要,在此可以看到USB3.0测试所有测试项目,并且可以观看到测试是否正常,可以帮助工程师更好的判断测试结果。,以简化下载、存储以及对于多媒体的大量内容的共享。

2409_87378937的博客 2526

Spring源码解析3.加载Bean

Spring源码解析之加载Bean

KKK 728

彻底解决tplink路由器无法访问部分https网站

彻底解决tplink无法访问部分https网站

renkai721的专栏 8762

Spring源码深度解析(3)——bean的加载

我们从 TestChangeMethod t = (TestChangeMethod) ct.getBean("A"); 开始分析。 首先我们要知道 getBean方法是哪个类中的。下面给出其类图。 这里我们看 AbstractBeanFactory 中是如何实现该方法的,该类是org.springframework.beans.factory.support;包中的类

想当厨子的程序媛 500

基于YOLOv8深度学习的夜视行人检测系统:UI界面 + YOLOv8 + 数据集的实现

为了解决这一问题,基于深度学习的行人检测技术,尤其是YOLO(You Only Look Once)系列算法,成为了一个有效的解决方案。本文将详细介绍如何构建一个夜视行人检测系统,利用YOLOv8模型实现高效的行人检测,并设计用户友好的界面以便于使用。本博客详细介绍了如何构建一个基于深度学习的夜视行人检测系统,包括数据准备、YOLOv8模型训练、用户界面设计和实时监控模块的实现。为了将数据集转换为YOLO格式,我们需要确保每个图像文件都有一个对应的标签文件,标签文件中包含行人的边界框信息。

YOLO 1172

高分SCI讨论部分必学AI写作套路!仅需五步结合GPT‑5辅助,让你的SCI论文更有说服力(附实用AI提示词)

对于很多写SCI论文的学术人来说,其实“讨论部分”才是最致命的,网上虽然有大量的写作技巧和模板提供参考,但往往让人眼花缭乱,还是不知道如何下手。即便是下手了,也很难兼顾学术性与可读性,实际上讨论部分的难点并不在于写,而在于你能研究结果说清楚。今天七哥教你借助GPT-5,用五步法结合精心设计的AI提示词,让你能在科学逻辑与语言表达上一次性解决“讨论部分”的结构、内容、润色和翻译问题,轻松写出符合高分SCI期刊要求的讨论段落。

智能AI让学术科研更容易 1330

3.3 Spring之Bean生命周期源码解析

实例化自动注入Aware对象初始化。

wangdh1234的博客 136

数仓解惑:数据仓库常见建模方法与大数据领域建模实例综述

为什么需要数据建模? 为什么要进行数据仓库建模? 随着DT时代互联网、智能设备等信息技术的发展,数据开始井喷式的增长,如何讲这些数据进行有序、有结构地分类组织存储是我们面临的一个挑战。 如果把数据看作图书馆里的书,我们希望看到它们在书架上分门别类地放置,而不是乱糟糟的 大数据的数仓建模是通过建模的方法更好的组织、存储数据,以便在 性能、成本、效率和数据质量之间找到最佳平衡点。一般主要从下面四点考虑 ...

云祁QI 5849

3、Spring 源码学习 ~ 默认标签的解析之 Bean 标签解析

spring 源码学习

戴泽王的博客 540

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

2.1.3Spring源码解析——Bean标签的解析以及注册

4种标签中对bean标签的解析最为复杂也最为重要, DefaultBeanDefinitionDocumentReader.java protected void processBeanDefinition(Element ele, BeanDefinitionParserDelegate delegate) { //todo.进行元素解断返回BeanDefinitionH...

szhlcy的博客 123

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: x86机器码识别及其反汇编算法
下一篇: 替换GINA.DLL实现自己的登陆界面
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值