如何反编译exe文件

如何反编译exe文件,第1张

反编译exe文件基本上是不可能的,因为反编译过程由很多因素会干扰,反编译过程:

1、检测程序时候加壳了,如果加壳就必须先去壳。

2、去壳后需要猜测程序员采用的是什么编程语言,编程语言有:java/c/c++/c#/vb/VC++等等。

3、猜测到程序员使用的语言后根据编程语言进行汇编,汇编需要考虑到语言中的语法问题,即使是同种语言,一种命令有多种说法,汇编成功率在20%左右。

4、汇编成功后基本就已经到反编译的顶端了,要从汇编程序翻译成源码可能性为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下的反汇编

1、点击“开始”菜单——选择“运行”。

2、在d出的运行框中输入“cmd”——选择“确定”。

3、然后就d出MS-Dos窗口。

4、接着记住CHM文件的路径,我是放在“F:\”根目录下。

5、接着新建一个文件夹,我这里取名为“checkout”,还有记住你的文件夹路径,我是放在“F:\”根目录下。

6、然后在命令行中输入“hh -decompile F:\checkout F:\checkout.chm”——按回车即可。


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

原文地址: http://outofmemory.cn/tougao/11814131.html

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

发表评论

登录后才能评论

评论列表(0条)

保存