我正在寻找一个命令行程序来向PE文件的导入表添加一个条目。我的目标是从外部DLL添加一个新的导入函数到我的EXE,然后使用ollydbg使用代码洞穴插入新代码。新代码将使用新导入的函数。实际上我已经实现了我的目标,但是为了向我使用的导入表添加一个新条目Stud_PE,这是一个GUI应用程序,我想自动化这部分过程。我会考虑以编程方式解决方案,但我担心PE结构太复杂,我无法在我的时间范围内学习和探索。此外,如果一个实现已经存在,那么不使用它是一种耻辱。:-) 最佳答案 找到了正在寻找的东西。m-PEFileforc++:http://f
在Windows上,一些二进制文件,例如.obj为COFF格式,其他如.exe和.dll是PE,是COFF,多了一个header。看来您需要查看文件扩展名才能知道期望的是什么。是否有关于哪些文件扩展名使用COFF哪些文件扩展名使用PE的完整列表? 最佳答案 没有“哪些文件扩展名使用COFF哪些文件扩展名使用PE的完整列表”。扩展仅用于帮助系统“映射”将用于启动所选文件的应用程序(例如,*.jpg将映射为由MSPAINT.exe启动,*.doc将映射为启动通过MSWORD.EXE...等)。这种逻辑映射是通过注册表进行的。Micros
我正在通过机器学习方法进行Windows恶意软件研究。我看了PE格式,用dumpbin解压PE文件,发现里面有很多部分。例如:.idata.edata.pdata.data.rdata.sxdata.text.rscr.tls...但并非所有这些都用于Action/行为。我只关心他们的行为并在下一步之前减少大数据。谢谢 最佳答案 由于您正在分析恶意软件,因此不应查看部分的名称。恶意软件开发人员更改节的名称并不困难,而且msvc编译器还允许您创建自定义节。您应该做的是查看各个部分的特征。通过读取IMAGE_SECTION_HEADER
这是简短的控制台应用程序示例staticcharbuffer[4096];intmain(){for(inti=0;i据我了解,编译器生成的“exe”文件应包含用于存储“buffer”变量的.bss部分。我正在使用TinyC编译器,生成的文件不包含对.bss的任何引用。DOSHeaderMagicnumber:0x5a4d(MZ)Bytesinlastpage:144Pagesinfile:3Relocations:0Sizeofheaderinparagraphs:4Minimumextraparagraphs:0Maximumextraparagraphs:65535Initial
我试图通过在PE文件末尾添加一个额外的节头并在其中编写shellcode来进行PE感染。我已经添加了额外的部分并在其中编写了shellcode,并将原始入口点(OEP)更改为新添加的部分并且它执行得很好;我的意思是我的shellcode运行良好,但现在我想恢复主进程,为此我需要再次将修改后的入口点更改为OEP。但是,我无法弄清楚。请告诉我是否有任何方法可以在执行shellcode后恢复主进程。而且,我也试过这个blog,但它也不起作用,因为作者编写了内联汇编代码并放置了一些占位符以在运行时恢复OEP,这将动态嵌入到shellcode中。我正在考虑编写一个包含JMPto_OEP的shel
我打开了一个我用ImageHlp.dll编写的程序来尝试一下,我注意到文件中似乎有很大的空白。据我了解,对于每个PE部分,部分标题将其在文件中的偏移量指定为PhysicalAddress,并将其大小指定为SizeOfRawData,因此所有内容均来自PhysicalAddress到PhysicalAddress+SizeOfRawData应该是那个部分。但是有大量EXE文件没有包含在这些范围内,所以我一定遗漏了一些东西。我知道我可以使用ImageRVAToSection并给它一个RVA地址来找出RVA位于哪个部分。有什么方法可以对文件偏移量做类似的事情吗?我怎样才能找出哪个PE部分字节
我正在使用“PE编辑器”检查Windows可执行文件,它显示入口点为0x15B8,我们如何确定该入口点的地址为虚拟地址? 最佳答案 入口点是相对于模块的加载地址存储的。模块可以通过设置IMAGE_OPTIONAL_HEADER中的ImageBase字段来声明其首选地址(参见thispage)。但是,操作系统可以自由选择另一个地址,或者是因为首选地址正在使用中,或者是最近因为ASLR。我不确定你在什么环境下运行这个,但如果你用一个实时运行的程序来做这个:这是一个实现细节,但在NT上你可以转换一个HMODULE成一个指针,这是模块的加载
我有一个PE文件,我尝试反汇编它以获取它的说明。但是我注意到.text段不仅包含指令,还包含一些数据(我使用IDA注意到这一点)。这是示例:.text:004037E4jmpds:__CxxFrameHandler3.text:004037EA;[00000006BYTES:COLLAPSEDFUNCTION_CxxThrowException.PRESSKEYPAD"+"TOEXPAND].text:004037F0;.text:004037F0movecx,[ebp-10h].text:004037F3jmpds:??1exception@std@@UAE@XZ;std::exce
我想编写一个从PE文件(.rsrc部分)中提取资源的脚本(或类似的东西。不关心是哪种语言)。我将Python的pefile和peutils用于各种PE任务,但找不到任何实际提取资源的东西。我们将不胜感激。谢谢,摩西 最佳答案 是否PEDUMP工作?参见here有关如何使用它的说明。来自快速扫描thisarticle似乎展示了如何解码资源部分。最后this显示一些提取资源的C++代码。 关于windows-通过脚本/命令行从PE文件中提取资源,我们在StackOverflow上找到一个类似
我正在编写我自己的WindowsLoader版本(尽管是一个非常简单的版本),到目前为止一切顺利。但是,在递归遍历已加载模块的导入表时,我遇到了一些小问题。对于大多数依赖项,一切都很顺利,我可以简单地递归加载模块。但是,对于某些依赖项,这只会破坏目标进程。经过进一步调查,我意识到这是因为Windows并行程序集。本质上,加载的PE中的依赖项是目标进程中使用的模块的不同SxS版本。在一种情况下,我正在加载的DLL引用了msvcr90.dll,但目标进程使用的是运行时的早期版本:msvcr71.dll。现在,windows加载程序可以很好地处理这个问题,所以显然有一种“正确”的方法可以做到