首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何加载PE文件以进行进程掏空?

加载PE文件以进行进程掏空是一种恶意攻击行为,违反了法律和道德规范。作为一个专家和开发工程师,我不能提供有关恶意行为的信息和指导。我致力于提供有益和合法的知识,帮助人们理解云计算和相关技术,以推动科技的进步和创新。

如果您有其他关于云计算、IT互联网领域或任何其他合法技术问题的咨询,我将非常乐意提供帮助和答案。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何将NumPy数组保存到文件进行机器学习

因此,通常需要将NumPy数组保存到文件中。 学习过本篇文章后,您将知道: 如何将NumPy数组保存为CSV文件如何将NumPy数组保存为NPY文件。...如何将NumPy数组保存到NPZ文件。...1.1将NumPy数组保存到CSV文件的示例 下面的示例演示如何将单个NumPy数组保存为CSV格式。...2.将NumPy数组保存到.NPY文件 有时,我们希望NumPy数组的形式保存大量数据,但我们需要在另一个Python程序中使用这些数据。...推荐阅读: 我回来啦 机器学习实战--对亚马逊森林卫星照片进行分类(3) 机器学习实战--对亚马逊森林卫星照片进行分类(2) 机器学习实战--对亚马逊森林卫星照片进行分类(1)

7.7K10

迷雾退散:揭秘创建进程时ebx为什么指向peb的答案

一、背景 这篇文章的起因,是笔者之前在做样本分析的时候,经常会遇到需要调试傀儡进程的情况,而其中有一种情景是将启动的白进程PE文件整个掏空并用黑进程进行替换。...二、具体分析 先抛出结论,这里的eax与ebx属于线程上下文信息,在一个PE文件开始被运行的过程中,主线程上下文初始化过程是在进程已经创建完成,而主线程还没创建的阶段发生的,下面是具体更详细的分析: 首先我们需要对进程的创建有一个大概的认识...PE文件,然后将DOS路径转换为NT路径。...加载advapi32.dll并获得CreateProcessAsUserSecure函数的地址。 9....同时观察也可以发现,这里也解析了包括Nt头、扩展头、扩展头魔术字效验等关键PE结构信息,联想到之前分析流程也处理了一部分PE结构,可以猜测早期的PE文件结构逆向可能也是通过逆向进程创建过程,即逆向CreateProcess

74520
  • 文件执行:一切皆是shellcode (中)

    PE文件本身并不重要,它的执行依赖于PE loader,因此PE如何转化为shellcode的问题,变成了PE loader 如何转化为shellcode的问题。...GetProcAddress 用来获取动态链接库中的API函数地址 VirtualAlloc 用于为PE文件分配内存空间 这三个API位于kernel32.dll中,而每个进程启动都会自动加载kernel32...一文件两用 新模型 通过猜想和比对,对原有的结构模型进行改进,将Stub是附加在PE文件后面,并对PE文件头部进行修改实现跳转,从而实现PE文件文件两用。 ?...在新模型中,Stub可以不用改变,直接附加在PE文件的最后,对PE文件的头部添加一段跳转shellcode,而且这段shellcode必须"MZ"开头,这样才能被识别为正常的PE文件。...我们可以先知道整个文件加载到内存中的基地址,然后通过偏移找到Stub。但是如何找到基地址呢?我们可以知道自身指令在内存中的地址,然后减去执行的指令字节数就是基地址,常用的是call-pop方式。

    3.3K20

    Windows黑客编程技术详解 --第四章 木马启动技术(内含赠书福利)

    q 内存直接加载运行:模拟PE加载器,直接将DLL和exe等PE文件加载到内存并启动运行。...本节主要针对DLL和exe这两种PE文件进行介绍,分别剖析如何直接从内存中加载运行。这两种文件具体的实现原理相同,只需掌握其中一种,另一种也就容易掌握了。...因为内存直接加载运行技术的核心就是模拟PE加载加载PE文件的过程,也就是对导入表、导出表以及重定位表的操作过程。 那么程序需要进行哪些操作便可以直接从内存中加载运行DLL或是exe文件呢?...接下来,根据PE结构的重定位表,重新对重定位表进行修正。 然后,根据PE结构的导入表,加载所需的DLL,并获取导入函数的地址并写入导入表中。 接着,修改DLL的加载基址ImageBase。...安全小贴士 可以通过暴力枚举PE结构特征头的方法,来枚举进程加载的所有模块,它与通过正常方法获取到的模块信息进行比对,从而判断是否存在可疑的PE文件

    3.9K50

    WinDbg 漏洞分析调试(一)

    可以看到用户进程空间中一般包含主模块、共享模块、堆栈资源等,相应的虚拟内存页也都有着各自的属性状态。 那么对于这样的进程如何从无到有创建起来的呢?...这就不得不提PE格式了,比如上面的exe、dll模块都是属于这种类型的文件,简单来看PE文件包含了DOS头、PE头、节表以及节数据,二进制数据将按装入内存后的页属性归类到不同的节中,而各个节中的数据按用途又可以被分为导出表...dh [标志] 模块地址”命令可以显示非常详细的PE头信息。当我们运行iexplore.exe的时候,操作系统将分配所需资源并按照此PE文件中的信息完成加载,即进程的创建。...一般来说,PE文件加载过程是由操作系统提供的PE Loader功能实现的,但我们也可以自己手动实现此过程,比如ReflectiveLoader这个技术,它就能在当前进程中完成一个独立dll的加载,一些勒索病毒就是用的这个技巧来躲避杀软...总体来看,要更好理解进程的创建需要了解相关的PE文件数据结构以及一些操作系统的数据结构,而WinDbg可以作为其中一个很好的学习工具,当然,完整的进程创建还是比较复杂的,除了这里关注的加载过程,还包括资源的分配管理等

    1.4K40

    模拟隐蔽操作 - 动态调用(避免 PInvoke 和 API 挂钩)

    它在初始化时被加载到每个 Windows 进程中,因此我们知道它已经被加载。因此,我们可以安全地搜索 PEB 的已加载模块列表找到对其的引用。一旦我们从 PEB 中找到它的基地址,我们就打印该地址。...如果您(或更可能是您的供应商)了解进程通常加载哪些模块,那么您可以识别进程何时加载它以前从未加载过的模块。由于异常模块加载可能是代码注入的指标,因此许多供应商都在关注它们发现内存中的恶意软件。...由于该文件是随机选择的(并且不会是已经加载文件),因此它可能不是进程正常加载的模块,因此是异常的。...顺便说一句,这种检测还可用于可靠地检测 .NET 程序集注入到通常不加载 CLR 的进程(例如非托管可执行文件)中。...hasherezade 的pe-sieve 项目可以检测已映射到动态分配内存或用于替换加载文件支持内存中的模块并将它们从进程中转储的模块。

    2.1K00

    DLL依赖查看神奇CFF Explorer

    使用CFF Explorer可以查看和修改PE文件的资源,可以查看dll文件可供调用的函数,修改函数入口地址达到制造崩溃屏蔽功能的目的。...PE(Portable Execute)文件被称为可移植的执行体,常见的EXE、DLL、OCX、SYS、COM都是PE文件PE文件是微软Windows操作系统上的程序文件(可能是间接被执行,如DLL)...Windows 下实现API HOOK的方法 关于API HOOK,就是截获API调用的技术,在对一个API调用之前先执行自己设定的函数,根据需要可以再执行缺省的API或者进行其他处理,假设如果想截获一个进程对网络的访问...,我们只要写好一个DLL文件,然后实现一个导出函数,就可以用这个工具对PE文件增加对自己的DLL的加载,下面这个操作就是让notepad.exe加载rand.dll的操作: ?...只要Rebuild Import Table,然后再Save/Save As就可以保存新的文件。这样你的dll就自动的被加载了,然后再DLL加载的时候实现API HOOK就在功告成了。

    3.7K40

    运用Capstone实现64位进程钩子扫描

    在编写代码之前,读者需要自行下载并配置Capstone反汇编引擎,配置参数如下所示;在之前的PeView命令行解析工具中笔者介绍了如何扫描32位进程内的钩子,由于32位进程需要重定位所以在扫描时需要考虑到对内存地址的修正...定义头文件首先引入capstone.h头文件,并引用capstone64.lib静态库,通过定义PeTextInfo来存储每个PE文件中节的文件偏移及大小信息,通过ModuleInfo用于存放进程内的模块信息...我们定义了三个主要函数:ReadPEFile用于从磁盘读取PE文件数据,ParsePEHeaders用于解析PE文件的头信息,ExpandPEImageBuffer用于将PE文件扩展为内存中加载后的形式...user32.dll等模块,当磁盘与内存被读入后,通过ParsePEHeaders解析PE头信息,并将PE文件通过ExpandPEImageBuffer拉伸到内存中模拟加载后的状态。...最后,通过Capstone反汇编库对磁盘和内存中的代码段进行反汇编,并逐条memcmp对比反汇编指令,检测代码是否被篡改。

    12120

    sRDI – Shellcode 反射 DLL 注入

    C 代码和交叉兼容性非常吸引人,但是如果您希望您的 DLL 在另一个进程中执行怎么办?好吧,您可以尝试将文件写入内存并在顶部放置一个线程,但这在打包的 PE 文件上效果不佳 。...Windows 操作系统已经知道如何加载 PE 文件,所以人们很好地询问和 DLL Injection 出生于。这涉及在远程进程中启动一个线程从 WinAPI 调用“LoadLibrary()”。...我们现在有一个基本的 PE 加载器作为 shellcode。...如果您不知道如何编写 DLL,我怀疑大部分内容都适用于您。话虽如此,如果您有兴趣编写 PowerShell 脚本或 Py2Exe 可执行文件以外的东西来执行红队,这是一个很好的起点。...读取 shellcode 并注入(<20 行 C 代码) 优点: 您的 RAT 或加载程序都不需要了解 RDI 或使用 RDI 进行编译。

    1.9K00

    Windows黑客编程技术详解 --2.3 病毒木马资源释放技术(内含赠书福利)

    如果程序额外需要加载一些DLL文件、文本文件、图片文件,或者其他的音/视频文件等,则可以把它们作为资源插入到程序里,等到程序运行后,再把它们释放到本地上。...本节“520”这个没有文件类型的文件作为演示实例,向大家介绍文件作为资源插入到程序中的步骤,其他类型的插入也是类似的。其中,“520”的文件内容如图2-5所示。 ?...接着,通过LockResource锁定加载到内存中的资源,防止程序中的其他操作影响这块内存。其中,返回值就是资源在进程内存中的起始地址。...它的原理就是通过PE文件结构,确定资源在PE文件中的偏移和大小。 在资源释放过程中,要特别注意一点就是,必须明确资源所在的模块,要指明所在模块句柄并且统一。...因为文件可以以资源的形式插入到DLL文件中,所以当DLL加载到其他进程时,资源所在模块仍是该DLL模块。要想成功释放资源,则需要先通过GetModuleHandle函数获取该DLL模块的句柄。

    1.6K30

    实战 | 进程启动技术的思路和研究

    因为根据PE结构的基础知识可知,PE文件有两个对齐字段,一个是映像对齐,另一个是文件对齐大。...其中,映像对齐大小是PE文件加载到内存中所用的对齐大小,而文件对齐大小是PE文件存储在本地磁盘所用的对齐大小。一般文件对齐大小会比映像对齐大小要小,这样文件会变小,以此节省磁盘空间。...当改变加载基址的时候,硬编码也要随之改变,这样DLL程序才会计算正确。 如何知道硬编码的位置?答案就藏在PE结构的重定位表中,重定位表记录的就是程序中所有需要修改的硬编码的相对偏移位置。...那么DLL如何知道MessageBox函数的地址呢?它只有获取正确的调用函数地址后,方可正确调用函数。PE结构使用导入表来记录PE程序中所有引用的函数及其函数地址。...DoImportTable failed\n\n"); return NULL; } // 修改PE文件加载基址 if (FALSE == SetImageBase(lpBaseAddress

    1.1K50

    总结到目前为止发现的所有EDR绕过方法

    他们将自定义DLL文件注入到每个新进程中。您可以找到DLL文件,这些文件是通过Sysinternals procexp64.exe从AV/EDR加载进程中的。...您需要检查“View”菜单中的“Show Lower Pane”按钮,然后检查该按钮显示已加载的DLL: ? 选择首选过程后,您将在“下部窗格”视图部分中看到已加载的DLL文件。...因此,这些加载的DLL文件将监控为特定Windows API调用注入它们的过程。在我的上一篇博客文章中,我签名更改,运行时加密和解密等形式撰写了有关AV-Evasion的文章。...如果我们对shellcode进行加密并在运行时对其进行解密将其写入到远程进程中,则可以调用writeProcessMemory,该函数在幕后有时会调用NtWriteVirtualMemory。...AV/EDR可能的目标之一是查看攻击者在运行时准确加载到内存中的内容。因此他们可以监视NtWriteVirtualMemory调用。但是如何进行“监视”呢?

    8.7K31

    《程序员的自我修养》笔记

    PE可执行映像在DOS下被加载的时候,DOS系统检测该文件,发现最开始两个字节是“MZ”,于是认为它是一个“MZ”可执行文件。然后DOS系统就将PE文件当作正常的“MZ”文件开始执行。...实体文件是真正加载到内存里面可以修改的,而不是镜像只是模仿不可以修改 原文:映像(Image):因为PE文件在装载时被直接映射到进程的虚拟空间中运行,它是进程的虚拟空间的映像。...如何对多个输入文件进行链接? 其实就是对多个输入段进行操作,生成输出段,最终输出段成型之后就可以确定符号的虚拟地址,每个符号虚拟地址确定好后,就可以进行修改重定位表里面的符号的符号值。...默认情况下,当程序需要动态链接库符号地址的时候会把共享库加载到自己进程的内存地址里面(因为程序需要使用动态链接的符号地址,但是这个地址怎么知道呢,就是把库加载到各自进程的内存里面),也就是说每个进程还会进行加载这些内容到进程私有的虚拟内存里面...so里面找到就会标识他是动态链接符号,不会在链接的时候就进行Í加载到内存运行的时候再进行重定位 链接器如何知道foobar的引用是一个静态符号还是一个动态符号?

    9310

    CC++ 进程隐藏&加载寄生&僵尸进程

    众所周知,windows下可执行文件必须符合一定的格式要求,微软官方称之为PE文件(关于PE文件的详细介绍这里就不赘述了,google一下可以找到大把);用户在界面双击exe时,有个叫做explorer...分配内存   既然是运行,肯定是需要放在内存的,所以首先要开辟内存空间,才能把exe从磁盘加载进来;32位为例,由于每个进程都有自己的4GB虚拟空间,所以还涉及到新生成页表、填充CR3等琐碎的细节工作...PE文件在编译器编译的时候,编译器是不知道文件会被加载到那个VA的(一般exe默认从40000开始,这个还好;但是dll默认从100000开始,这个就不同了。...所以只能把需要用到的这些系统函数统一放在一张叫做导入表的表格,explorer加载的时候还要挨个遍历导入表,一旦发现该PE文件用到了某些系统API,需要用这些API在内存的真实地址替换PE文件中call...)在虚拟内存中的起始地址;32位为例,exe默认都是从400000开始的;OD中查询PE文件头就是imageBase;上面说的重定位也是从imageBase这里开始重新计算新地址; (2)virtualAddress

    80120

    黑客利用病毒挖门罗币 已获利 60 余万

    混淆代码 混淆器中使用了大量与上图中类似的垃圾代码,而用于还原加载原始PE镜像数据的关键逻辑代码也被穿插在这些垃圾代码中。还原加载原始PE数据的相关代码,如下图所示: ?...还原加载原始PE镜像数据的相关代码 上述代码运行完成后,会调用加载原始PE镜像数据的相关的代码逻辑。...加载原始PE镜像数据的代码,首先会获取LoadLibrary、GetProcAddress函数地址及当前进程模块基址,之后借此获取其他关键函数地址。解密后的相关代码,如下图所示: ?...解密后的加载代码 原始PE镜像数据被使用LZO算法(Lempel-Ziv-Oberhumer)进行压缩,经过解压,再对原始PE镜像进行虚拟映射、修复导入表及重定位数据后,即会执行原始恶意代码逻辑。...混淆器还原加载原始PE数据代码为例进行对比,如下图所示: ?

    1.3K30

    DLL注入新姿势:反射式DLL注入研究

    接下来我们看看它是如何解决这些问题的。 1) 定位DLL文件在内存中的基址 ReflectiveLoader做的第一件事就是查找自身所在的DLL具体被写入了哪个位置。...4) 复制PE文件头和各个节 分配了用于装载的空间后,ReflectiveLoader将DLL文件的头部(也就是DOS文件头、DOS插桩代码和PE文件头)复制到新的空间的首部。...幸运的是DLL文件提供了我们进行重定位所需的所有信息,这是因为每一个DLL都具有加载不到预定基地址的可能性,所以每一个DLL都对自身的重定位做好了准备。...由于它没有通过系统API对DLL进行装载,操作系统无从得知被注入进程装载了该DLL,所以检测软件也无法检测它。...反射式DLL注入的实现中运用了大量对PE文件结构的解析。了解,以及动手实践这个注入方式会让您对PE文件格式,PE文件加载的理解更加深刻。

    2.1K30

    脱壳——UPX脱壳原理(脱壳helloworld)

    就是把得到的新的源文件给它保存下来,可以采用从头到最后一个区段的手动复制下来,也可以用工具 3 修复 对于手动扒拉下来的内存文件,肯定还有一些问题,这里需要对PE文件进行修复 第一次脱壳 加壳程序下载链接...,万一有什么修改呢 od中可以直接调用OllyDump脱壳调试进程 手动dump:利用M按钮里面的PE文件加载情况,将主程序.exe文件的内存文件一点一点复制粘贴出来 利用010Editor创建一个...hex文本类型文件 然后从od 的m按钮里面一块一块的复制文件过来 首先处理PE头 双击进入,然后修改为16进制类型 对整个内容进行二进制复制 然后再到010Editor中采用Ctrl+shift...出来的exe文件不能使用的,因为还有一些PE文件的内容没有修复,这个时候再用010Editor来加载dump出来的pe文件进行修复 它里面就会有一些PE的提示 需要修改的信息: 区段头信息 导入表...总结 UPX脱壳 首先采取找到OEP,然后呢对整个PE文件进行dump出来,然后再修复,修复需要修复PE的区段头和导入表 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn

    1.8K10

    ring0下使用内核重载绕过杀软hook

    ring0的监测原理,我们该如何进行绕过呢?...PE结构,那么PE文件文件偏移和内存偏移也是我们需要考量的一个点,不能说我们直接将内核文件copy一份就能够跑起来,这里就需要进行PE的拉伸。...那么既然有PE的拉伸,就要涉及到重定位表,我们要想定位到函数,这里肯定就需要进行重定位表的修复 在PE拉伸完成和修复重定位表过后,我们获得了一份新的内核,但是这里SSDT因为是直接拿过来的,地址肯定会发生变化...PE拉伸&重定位表修复 这里我把PE拉伸跟重定位表的修复放到一个函数里面,首先我们要进行打开文件的操作,那么这里就要实现几个关于文件的函数操作 主要用到ZwCreateFile、ZwReadFile、...PE的操作 首先判断是否为PE文件,即4D5A if (*(PSHORT)szBuffer == 0x5A4D) 然后定位到NT头,偏移为0x3c。

    61820

    ring0下使用内核重载绕过杀软hook

    ring0的监测原理,我们该如何进行绕过呢?...PE结构,那么PE文件文件偏移和内存偏移也是我们需要考量的一个点,不能说我们直接将内核文件copy一份就能够跑起来,这里就需要进行PE的拉伸。...那么既然有PE的拉伸,就要涉及到重定位表,我们要想定位到函数,这里肯定就需要进行重定位表的修复 在PE拉伸完成和修复重定位表过后,我们获得了一份新的内核,但是这里SSDT因为是直接拿过来的,地址肯定会发生变化...PE拉伸&重定位表修复 这里我把PE拉伸跟重定位表的修复放到一个函数里面,首先我们要进行打开文件的操作,那么这里就要实现几个关于文件的函数操作 主要用到ZwCreateFile、ZwReadFile、...PE的操作 首先判断是否为PE文件,即4D5A if (*(PSHORT)szBuffer == 0x5A4D) 然后定位到NT头,偏移为0x3c。

    56430

    DLL injection

    dll注入实现过程 即 1.附加到目标/远程进程 2.在目标/远程进程内分配内存 3.将DLL文件路径,或者DLL文件,复制到目标/远程进程的内存空间...在上面的注入方式中,我们使用了CreateRemoteThread来进行dll注入,而这个方式在具有Sysmon的系统中会留下Event ID 8的痕迹。...反射DLL注入实现起来其实十分复杂,需要对PE加载十分了解。...msf已经有了相应的模块: windows/manage/reflective_dll_inject 在内存中,可以看到明显的PE标识: 将其dump后 放入PE查看工具,可看到其为正常的PE文件与...磁盘加载: 内存加载: 其DarkLoadLibraryDebugging为自定义的名称,与NO_LINK,则看不到明显的dll加载痕迹 缺点是仅支持当前进程不支持远程进程,但不得不说,其优越性的确可以是当前进程加载

    2.2K40
    领券