草庐IT

windows - 如何手动创建可执行的 .exe PE 文件?

所有关于如何创建编译器的文章在解释了词法分析器和解析器之后就停止了。他们没有解释如何创建机器代码。我想了解端到端流程。目前我的理解是,Windowsexe文件格式称为PortableExecutable。我阅读了它的标题,但尚未找到可以轻松解释这一点的资源。我的下一个问题是,我没有看到任何解释机器代码如何存储在文件中的资源。是不是像.text段中一个接一个存储的32位定长指令?是否有任何地方至少解释了如何创建一个什么都不做的exe文件(它有一个NoOp指令)。我的下一步是链接到dll文件以打印到控制台。 最佳答案 好问题!我对这个具

windows - 最小的 Windows (PE) 可执行文件是什么?

作为编写编译器的先驱,我正在尝试了解Windows(32位)可移植可执行文件格式。我特别希望看到一个基本的可执行文件示例,它除了正确加载、运行和退出外什么都不做。我已经尝试编写和编译一个简单的C主函数,它只执行生成的.exe文件,大约22KB并且包含许多从KERNEL32.DLL导入的文件(可能被LIBC用来设置环境、堆等)。甚至DOSheader也可能更小(它目前打印默认的“此程序无法在DOS模式下运行”)。最小的Windows32位可执行文件的结构是什么? 最佳答案 引自来源(Creatingthesmallestpossibl

c# - PE32+和PE32有什么区别?

运行时CorFlags在某些DLL文件上,有些显示为PE32,有些显示为PE32+。有什么区别? 最佳答案 PE32格式代表可移植可执行32位格式,而PE32+是可移植可执行64位格式。请看下面article获取详细信息 关于c#-PE32+和PE32有什么区别?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4284351/

linux - PE 和 ELF 二进制格式有什么区别?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭11年前。WindowsPE二进制和LinuxELF二进制格式有什么区别?当编译器只应创建与源代码等效的汇编语言时,它如何将文件转换为操作系统指定的格式?有人能简单解释一下吗?

linux - 如何在 Linux 上将时间戳证书添加到已签名的 PE 文件?

我需要在Linux上对PE文件(实际上是EFI)进行数字签名和时间戳。我找到了3种用于签署PE文件的工具:pesign、osslsigncode和signcode(mono),但似乎都不太符合我的需要。问题是,key在硬件token上,无法导出。因此我必须创建一个证书数据库,在那里添加token驱动程序条目并通过该数据库工作。只有pesign允许这样做,但它不支持时间戳。osslsigncode和signcode支持时间戳,但不能使用数据库。Windowssignttool.exe可以作为单独的步骤执行签名和时间戳。所以我想,我可能会使用pesign对文件进行签名,然后仅使用其他工具为

windows - 二进制文件(PE/COFF 和 ELF)格式和术语的说明

我在术语上很少混淆。AfilethatisgivenasinputtothelinkeriscalledObjectFile.ThelinkerproducesanImagefile,whichinturnisusedasinputbytheloader.我从“MSPE&COFF规范”中得到这个Q1.图像文件也称为BinaryImage、BinaryFile或简称为Binary。对吧?Q2.因此,根据上述术语,PE/ELF/COFF是ImageFile的格式,而不是ObjectFile。对吗?但是http://www.sco.com/developers/gabi/latest/ch4

AR、BR、CR、SR 与 CE、PE、P概念整理

一P、PE、CE这是mplsvpn里的概念。在VPN概念中,把整个网络中的路由器如下三类:​    P(Provider,运营商骨干路由器)   PE(ProviderEdge、运营商边缘路由器)   CE(CustomerEdge、客户侧边缘路由器)P位于骨干网络,负责建立标签交换路径,通过标签交换方式转发数据包,CE可以是路由器,也可以是交换机或主机;PE位于骨干网络,是P和CE之间的分界,连接CE路由器和P路由器,是最重要的网络节点。用户的流量通过PE路由器流入用户网络,或者通过PE路由器流到MPLS骨干网。​服务提供商所连接的用户端路由器,CE路由器通过连接一个或多个PE路由器,为用户

Ruby:带 -pe 的简单命令行不起作用

文件:测试test命令行输入:ruby-pe'gsub(/t([a-z])s/){"d"+$1.capitalize}'test我期望输出是dEt,但实际输出是:#我不知道发生了什么。当我这样做时它在irb中工作:"test".gsub(/t([a-z])s/){"d"+$1.capitalize} 最佳答案 事实证明这是一个Ruby错误。我在2天前提交了错误票,他们已经解决了。这是漏洞单的链接(现在是反向移植):Backport#7157这是主干的新更改日志:Changelog:seeOct14

电脑重装:微PE工具箱重装win10系统

前言:(废话可跳)基于电脑在我吃了个午饭开机后就连不上网,于是我一番操作乱七八糟花样都试过,花费三四个小时终于还是失败后,我将电脑带到了维修处,维修处师傅对我的电脑再次使用我使用过的乱七八糟花样后,告诉我是系统问题要重装,由于不想被装系统时被带上一些乱七八糟的广告,所以我趁此机会刚好自己试手重装系统。是的,这是我第一次重装系统,对象是我自己的电脑。以下笔记来源于学友YL以及大佬博客笔记本电脑重装win10系统图文并茂详细操作教程(U盘重装系统)_淡愿de的博客-CSDN博客_笔记本重装系统win10一、备份好资料备份好磁盘中的重要文件,数据或比硬件价更高,备份是个好习惯~二、准备一个8GB的U

电脑重装:微PE工具箱重装win10系统

前言:(废话可跳)基于电脑在我吃了个午饭开机后就连不上网,于是我一番操作乱七八糟花样都试过,花费三四个小时终于还是失败后,我将电脑带到了维修处,维修处师傅对我的电脑再次使用我使用过的乱七八糟花样后,告诉我是系统问题要重装,由于不想被装系统时被带上一些乱七八糟的广告,所以我趁此机会刚好自己试手重装系统。是的,这是我第一次重装系统,对象是我自己的电脑。以下笔记来源于学友YL以及大佬博客笔记本电脑重装win10系统图文并茂详细操作教程(U盘重装系统)_淡愿de的博客-CSDN博客_笔记本重装系统win10一、备份好资料备份好磁盘中的重要文件,数据或比硬件价更高,备份是个好习惯~二、准备一个8GB的U