首页 文章
  • 0 votes
     answers
     views

    PE文件.text节大小

    我编写代码并将其编译为exe,现在.text部分需要更大,如果我有代码并且我想在编译之前在代码中从.text部分分配更多空间,怎么做?分配一些缓冲区? 我正在尝试使用带有LARGER .TEXT部分的二进制文件来更改代码或编译选项 我的编译器VisualStudio2010或cl.exe 修补二进制文件更复杂
  • 0 votes
     answers
     views

    如何在RAW内存中找到(PE)可执行入口点?

    我正在研究一个ASM项目,我想知道一个可移植的可执行程序在原始内存中的入口点 . 原始内存我的意思是静态内存,就像我用十六进制编辑器编辑原始.exe文件一样 . 从程序的PE表中,我可以查找名为“EntryPoint:”的条目,但该条目包含程序在内存中加载后的入口点!我需要找到程序在磁盘中寻找原始内存中的第一条指令的位置 . 有些程序在.text部分的第一个地址开始执行,这是很平常但并不总是发生,...
  • 44 votes
     answers
     views

    VA(虚拟地址)和RVA(相对虚拟地址)

    作为链接器输入的文件称为对象文件 . 链接器生成一个Image文件,该文件又被加载器用作输入 . 来自“ Microsoft Portable Executable and Common Object File Format Specification ”的模糊 RVA(相对虚拟地址) . 在图像文件中,将项目的地址加载到内存后,从中减去图像文件的基地址 . 项目的RVA几乎总是与其在磁盘上...
  • 3 votes
     answers
     views

    .Net PE文件中的入口点RVA是什么?

    Microsoft's documentation对于PE可选标头标准字段(第25.2.3.1节)中的"Entry Point RVA"字段,该字段应为: 入口点的RVA,需要指向字节0xFF 0x25,然后在标记为EXE执行/读取的部分中为RVA,对于DLL为0 这是什么意思?我检查了一个由c#编译器生成的PE文件,发现一个RVA指向所描述的字节0xFF 0x25,但接下...
  • 0 votes
     answers
     views

    内存地址文件

    我有一个关于文件中的偏移的问题 . 例如,当您打开这样的文件时,“ . exe”扩展名/文件 . handle = open('file.exe', mode='rb') 现在,当您尝试访问第10个“字节”时,您可以使用搜索功能 . handle.seek(10, 0) PE头中的许多值都是RVA,这意味着Imagebase RVA是在内存中加载时的偏移量 . 问题是你无法用这个 Value ...
  • 0 votes
     answers
     views

    IMAGE_SECTION_HEADER的VirtualAddress和PointerToRawData的区别

    在this文章中,定义是 DWORD VirtualAddress 在EXE中,此字段将RVA保存到加载程序应映射该部分的位置 . 要计算内存中给定部分的实际起始地址,请将图像的基址添加到此字段中存储的部分的VirtualAddress中 . DWORD PointerToRawData 这是基于文件的偏移量,可以找到编译器或汇编器发出的原始数据 . 如果程序存储器本身映射PE或COFF文件...
  • 0 votes
     answers
     views

    检测PE FIles中的无效资源部分

    我正在尝试使用PE文件中的资源执行某些计算 . 为此,我按照以下步骤操作: 从 Headers 中获取资源部分的RVA PEHeader.DataDirectory [IMAGE_DIRECTORY_ENTRY_RESOURCE] .VirtualAddress 将上述RVA转换为文件偏移量 到达资源部分的开头并遍历资源树 到达树叶(实际资源)并进行计算 . 当我处理具有有效资...
  • 0 votes
     answers
     views

    Python:从PE文件中删除一个部分

    我正在使用Python和pefile库使用PE二进制文件 . 为了从二进制文件中读取信息并重写某些字节,这个库可以很好地完成它 . 但现在我想完全删除文件中的一个部分 . 我该怎么办?我找到的关于此任务的唯一代码是http://goo.gl/YYl5Vb函数 pop_back() . 但是这段代码只删除了最后一部分,而我需要删除任何部分 . 我想,我可以删除原始部分数据 dead_sect_st...
  • -1 votes
     answers
     views

    便携式可执行堆栈大小和操作(x64)

    在此图像中:https://i.imgur.com/LIImg.jpg 在代码部分下,它列出了第一条指令,从堆栈指针中减去0x28 . 为什么需要从应该为0的堆栈指针中减去,对吧?或者从顶部开始并减少工作量? PE标头中的哪个位置指定堆栈大小?
  • 3 votes
     answers
     views

    了解PE可执行文件的.text部分

    我正在尝试创建一个简单的CIL代码反编译器 . 我已经设法正确加载 Headers 和部分,现在我正在努力使用.text部分 . 这是我的测试应用程序: using System; namespace Sample2 { class Program { static void Main(string[] args) { in...
  • 2 votes
     answers
     views

    将部分添加到PE文件,将入口点更改为新部分并执行任何代码

    我正在使用PE文件打包器,我可以成功加密可执行文件的.text部分,更改其入口点并添加新部分 . 新添加的部分将负责解密.text部分,然后跳转到原始入口点 . 现在,我想更进一步,在新的部分中执行更多代码 . 我几乎可以做我想要的一切,但是如果我调用外部函数(例如 iostream 来自 iostream ),修改后的可执行文件将在尝试执行非法指令时崩溃 . 新部分中存根的反汇编如下所示: .n...
  • 1 votes
     answers
     views

    复制.text部分并在结束时添加可执行文件的新部分

    我有一个现有的PE二进制文件,我手动修补 . 我正在复制 .text 部分(在开头)并将其添加到部分表的末尾 . 然后我用 0xCC 覆盖第一个/旧的 .text 部分 . 由于这种变化,指令本身的虚拟地址当然会改变 . 由于我在添加/移动的 .text 部分中有 mov eax, dword ptr [rip + 0x2024] (它将指向 .data 部分中的地址)的指令,它将指向错误的东西(...
  • 1 votes
     answers
     views

    x64便携式可执行文件不工作

    我在十六进制编辑器中创建了该文件的精确副本:https://i.imgur.com/LIImg.jpg 问题是,我用它制作的.exe文件不起作用,它说在尝试运行它时它是一个无效的Win32应用程序 . 它有什么缺陷吗?我检查并仔细检查了我的文件...... 我不知道我可以在哪里托管一个exe文件,但如果有人想检查它我可以通过电子邮件发送 . 我还应该提到我正在运行Windows 7 64位 .
  • 0 votes
     answers
     views

    在链接上添加可执行文件部分

    我目前正在使用Visual Studio 2017,并尝试使我的应用程序更具防篡改性 . 现在我想要保护的关键代码函数将在运行时被解密,为此我试图将它们添加到文件中的自定义部分,这将被称为.foobar作为示例 . 我正在使用#pragma指令添加该部分,稍后指定应该链接哪个函数,但是当我分析PE文件时,没有.foobar部分 . 我正在尝试添加该函数的代码如下: #pragma section(...
  • 2 votes
     answers
     views

    如何将EXE中的文件偏移映射到其PE部分

    我打开了一个用ImageHlp.dll编写的程序来玩它一点点,我注意到文件中似乎有很大的空白 . 据我所知,对于每个PE部分,section Headers 在文件中将其偏移量设置为 PhysicalAddress ,其大小为 SizeOfRawData ,因此从 PhysicalAddress 到 PhysicalAddress + SizeOfRawData 的所有内容都应该是该部分 . 但是...
  • 4 votes
     answers
     views

    查找原始入口点

    我希望能够通过查看PE头来找出出现在入口点的代码的位置 . 例如,这段代码是我程序的起始代码(401000h) 00401000 >/$ 58 POP EAX ; kernel32.76E93677 00401001 |. 2D 77360100 SUB EAX,13677 00401006 ...
  • 0 votes
     answers
     views

    如何在PE32文件中找到Import Section的偏移量?

    我一直试图弄清楚这几个小时,但我似乎无法得到它 . 我一直在尝试在Microsoft文档中查找信息,但是我被大量信息所淹没 . 我的问题是:如何在PE32文件中找到 Import Section 的偏移量?我在磁盘上没有't mean when the the file is loaded into memory, I mean when it' . 我应该看看 Object Table ?另一个...
  • 0 votes
     answers
     views

    如何为新的节头标定义PointerToRawData?

    我正在尝试在PE中添加新的节头,但我不知道如何计算新节的PointerToRawData . 据我所知,它应该是原始数据的大小,最后一节的PointerToRawData,但我添加到PE中的部分的SizeOfRawData等于0,虚拟大小为1000 . 有人可以提供一些帮助吗? 提前致谢,
  • 2 votes
     answers
     views

    用于应用程序的沙箱虚拟机(概念)

    我想编写一个沙箱虚拟机来执行编译程序 . 我的目标是将该程序与操作系统的其余部分隔离开来并控制其执行,以便它不会对主机有害 . 我认为: 执行程序被编译为可移植可执行文件格式,它在机器代码中,而不是任何类型的字节代码或CLR, 执行程序不允许与打印机,扫描仪等外围设备通信,并且不使用任何GUI, 执行程序的主要任务是处理存储在本地文件中的一些数据(例如计算),并将其结果放在另一个本地文...
  • 0 votes
     answers
     views

    PE部分标志

    例如,section .text的特征是60000020,似乎是 IMAGE_SCN_CNT_CODE 0x00000020 IMAGE_SCN_MEM_EXECUTE 0x20000000 IMAGE_SCN_MEM_READ 0x40000000 如何清楚地识别隐藏此字段的特征?
  • 1 votes
     answers
     views

    如何在Delphi中获取包含可移植可执行文件中代码的部分的sha-256哈希?

    我想在Delphi中的可移植可执行文件中获取包含代码(.text,CODE)的部分的sha-256哈希 . 到目前为止,我已经尝试获取AddressOfEntryPoint指向的部分的起始和结束地址,但是如果我多次加载相同的文件,我会得到不同的起始和结束地址 . 谁能帮帮我吗? 这是代码: procedure TForm1.Button1Click(Sender: TObject); var x:...
  • 1 votes
     answers
     views

    添加了pe可执行部分损坏的.text部分

    我试图在pe可执行文件中添加一个部分,当我添加该部分时,它正在破坏.text部分的前40个字节的内存 . 我想知道是否有人知道为什么我的功能会破坏.text部分? 当我签入CFF资源管理器时,所有偏移都是正确的,包括新的部分 . 这已经反复发生在不同的文件中 . 以下是创建添加部分的代码: int addSection(char* sectionName, DWORD size){ int pos...
  • 0 votes
     answers
     views

    Win32 PE中的某个部分是否包含可执行代码,初始化数据和单元化数据的组合?

    Win32 PE中的某个部分是否包含可执行代码,初始化数据和单元化数据的组合? 部分是否可以包含代码和(未)初始化数据的任意组合作为部分数据,或者该部分是否只包含一种类型的数据? 这是节 Headers 的 Characteristics 字段,它有确定其属性的标志,但我不确定是否可以混合起来? 下面我列出了官方PE文件中的标志: IMAGE_SCN_CNT_CODE 0x00000020该...
  • -1 votes
     answers
     views

    代码被视为可移植可执行文件格式的初始化数据,以及初始化和单元化数据之间究竟有什么区别?

    代码被视为可移植可执行(PE)格式的初始化数据,以及初始化和单一化数据之间究竟有什么区别? 根据以前的经验,我将初始化数据视为字符串或整数,但可执行代码是否也被称为PE上下文中的初始化数据? 此外,初始化和单一化数据之间究竟有什么区别? 文件说: 节数据节的初始化数据由简单的字节块组成 . 但是,对于包含全零的节,不需要包含节数据 . ...
  • 3 votes
     answers
     views

    可执行部分 Headers - 含义和用法?

    通过在Windows中使用7zip打开许多可执行文件( .exe. , .msi ),我注意到许多不同的文件类型是常见的 . 那些包括.text,.data,.bss,.rdata,.pdata等 . 我发现它们的意思 . 以下是其中一些: .text :代码部分,包含程序的指令 - 只读 - . .data :通常用于具有一些初始化非零内容的可写数据 . 因此,数据部分包含可在应用程序...
  • 0 votes
     answers
     views

    调整可执行入口点

    我试图改变可移植可执行程序(PE)的入口点,以便它将执行我的代码 . 这就是我所做的 . 扩大了.text部分,即其VirtualSize等于SizeOfRawData 将我的shellcode插入文件偏移量1340(RVA 3140) CC int 3 (附加调试器) 将入口点设置为3140 问题:可执行文件不会调用我的代码 . 相反,它会产生一个垫片错误 . Hexdump c...
  • 0 votes
     answers
     views

    我有两个“.data”部分的PE文件部分名称的字节不同 . 这个文件的类型是什么?

    我有两个PE文件具有相同的部分命名为“.data” . 当我们在hex dump中看到时,这些名称包含不同的字节 . 这部分内容为00字节 . 这个文件类型是什么?
  • 1 votes
     answers
     views

    对象文件/可执行文件:段和段之间有什么区别?

    我很困惑于在引用目标文件/可执行文件时“segment”和“section”之间是否存在差异 . 根据https://en.wikipedia.org/wiki/Object_file: 大多数目标文件格式都是单独的数据部分,每个部分都包含某种类型的数据 . 然而,该文章后来继续谈论 segments (例如代码段,数据段等) . 此外,PE文件格式(Windows中的.exe / .dll ...
  • 26 votes
     answers
     views

    Windows下的确定性构建

    最终目标是在完全相同的环境中比较从完全相同的源构建的2个二进制文件,并且能够告诉它们确实在功能上是等效的 . 一个应用程序就是将QA时间集中在发布之间实际发生变化的事情上,以及一般的变更监控 . MSVC与PE格式串联自然使得这很难做到 . 到目前为止,我发现并中和了这些事情: PE时间戳和校验和 数字签名目录条目 调试器部分时间戳 PDB签名,年龄和文件路径 资源时间戳 ...
  • 3 votes
     answers
     views

    / TSAWARE链接器标志对PE可执行文件做了什么?

    将/ TSAWARE链接器标志添加到我的一个项目(Visual Studio 6)后,我很惊讶在PE文件(.idata)中找到了一个新部分 . 如果我没有设置标志,则导入将合并到.rdata中 . 为了说明“问题”,我们从一个简单的控制台程序开始: #include <stdio.h> int main() { printf("hello world\n"...

热门问题