反编译exe文件就是把exe还原为汇编?

反编译exe文件就是把exe还原为汇编?,第1张

首先了解一下概念,exe程序只是WIN下PE格式的可执行文件的一种,而所谓的计算机执行的代码只是一串

二进制数

,跟数据没区别,当CS,EIP指向哪,哪里就是程序,而汇编语言之所以叫最底层的语言,是因为,

汇编的每一个语法,都应对了一串二进制的指令,这也就是

反汇编

的原理,所以

NO1.一、

编译

exe程序

就是

exe

还原为汇编语言吗?,这句话,不能叫还原,应该叫解释,“解释”的东西,没还原的那么逼真,比如,在汇编

源程序

中所有的标号和注释,进行编译后,变成二进制可执行文件后,在反汇编,标号就变成数字了,而注释更是没了.....

二、除了

还原为

汇编语言,还能

反编译为

其他

高级语言

吗?不能,高级语言的语法是建立在大量的计算机

二进制代码

之上的,比如你C语言随便调用一个子函数,到了二进制中,他是先压栈,参数(编译后参数从右往左压,每个语言还不一样),然后就是call

子函数,子函数运行后,他还要清理堆栈,所以你一个句简单的高级语言,其实蕴含了大量的代码,而高级语言编译后的程序,就脱离了他的开发环境,楼上说的会引起你误会,Java的中间码,可以用他自带的反编译工具,因为Java不是

编译器

,而是

解释器

,所以他不编译,只是解释他的中间码

NO2.所有的exe都可以反汇编,但是你要注意,不只exe这种pe格式,linux下可执行文件是elf,所以你在反汇编的时候,要注意可执行文件的文件的头,而早期的DOS只是纯二进制代码,没有

头文件

,这个很重要,你要反汇编什么格式,就要选择相应的工具

NO3

.exe反汇编,当然是OD,不过,我对OD不熟悉,好像他只支持WIN下的反汇编

有,反编译为汇编,不过因为 Linux 大部分为开源软件,不如找源代码……

所以,我没注意过怎么反汇编。一般经常调试程序的人都会这个。

另外,好像 gcc 编译时可以生成过渡代码,现在也有看过度代码的,好像和汇编类似。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8342950.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存