如何反编译exe文件
反编译exe文件基本上是不可能的,因为反编译过程由很多因素会干扰,反编译过程:
1、检测程序时候加壳了,如果加壳就必须先去壳。
2、去壳后需要猜测程序员采用的是什么编程语言,编程语言有:java/c/c++/c#/vb/VC++等等。
3、猜测到程序员使用的语言后根据编程语言进行汇编,汇编需要考虑到语言中的语法问题,即使是同种语言,一种命令有多种说法,汇编成功率在20%左右。
4、汇编成功后基本就已经到反编译的顶端了,要从汇编程序翻译成源码可能性为1%。
exe文件能不能反编译?
本身就是不能反编译的,请看:程序:#includestdio.hvoidmain()
和程序:#includestdio.hvoidmain()
反汇编各得5071行,没有区分。如果编译时用了/O2,再反汇编回来,得到行数不同。要想反编译成原文件,明显不可能。除非开发1个新编译器,把源程序用注解方式写进去,就可以反编译回来。
EXE文件反编译成源码
EXE文件可以通过步骤来反编译成源码,具体步骤如下:
1、在百度上搜索下载反编译工具ILSpy,ILspy是一个开源的.net反编译软件,使用十分方便。解压后如图,双击.exe文件打开解压工具。
2、选择file,点击“打开”,选择要反编译的文件,点击“打开”,就可以看到源码了!
3、如果想把源码保存下来,自己在源码的基础上修改,点击"file"下的“Save code...”,保存即可,保存完的文件如图
4、如需用vs打开反编译后的源码,只需要打开这个.csproj文件即可,其中VS为Microsoft Visual Studio是VS的全称。VS是美国微软公司的开发工具包系列产品。
扩展资料:
反编译也称为计算机软件还原工程,是指通过对他人软件的目标程序(比如可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,某些特定情况下可能推导出源代码。
exe是编译好的程序文件 要看结构就得反编译 但是通常不能把可执行文件变成高级语言源代码,只能转换成汇编程序。 所以要要看结构不止要会反编译 还得精通汇编语言。
怎样反编译EXE文件?
Windows软件开发工具包(SDK)提供一个叫做 DUMPBIN 的极有用的工具,它有许多有助编程分析的功能. 反编译只是其功能之一.
反编译命令格式:
dumpbin /DISASM 你的文件.exe
DUMPBIN 详细用法参考:
http://support.microsoft.com/default.aspx?scid=kb%3Bzh-cn%3B121460
上述网页谈的是Windows NT, 其实也实用于其它视窗系统.
反编译exe文件就是把exe还原为汇编?
首先了解一下概念,exe程序只是WIN下PE格式的可执行文件的一种,而所谓的计算机执行的代码只是一串
二进制数
,跟数据没区别,当CS,EIP指向哪,哪里就是程序,而汇编语言之所以叫最底层的语言,是因为,
汇编的每一个语法,都应对了一串二进制的指令,这也就是
反汇编
的原理,所以
NO1.一、
反编译
exe程序
就是
把
exe
还原为汇编语言吗?,这句话,不能叫还原,应该叫解释,“解释”的东西,没还原的那么逼真,比如,在汇编
源程序
中所有的标号和注释,进行编译后,变成二进制可执行文件后,在反汇编,标号就变成数字了,而注释更是没了.....
二、除了
还原为
汇编语言,还能
反编译为
其他
高级语言
吗?不能,高级语言的语法是建立在大量的计算机
二进制代码
之上的,比如你C语言随便调用一个子函数,到了二进制中,他是先压栈,参数(编译后参数从右往左压,每个语言还不一样),然后就是call
子函数,子函数运行后,他还要清理堆栈,所以你一个句简单的高级语言,其实蕴含了大量的代码,而高级语言编译后的程序,就脱离了他的开发环境,楼上说的会引起你误会,Java的中间码,可以用他自带的反编译工具,因为Java不是
编译器
,而是
解释器
,所以他不编译,只是解释他的中间码
NO2.所有的exe都可以反汇编,但是你要注意,不只exe这种pe格式,linux下可执行文件是elf,所以你在反汇编的时候,要注意可执行文件的文件的头,而早期的DOS只是纯二进制代码,没有
头文件
,这个很重要,你要反汇编什么格式,就要选择相应的工具
NO3
.exe反汇编,当然是OD,不过,我对OD不熟悉,好像他只支持WIN下的反汇编