‘壹’ 反编译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下的反汇编
‘贰’ 反编译什么意思,具体该怎么用
反编译:高级语言源程序经过编译变成可执行文件,反编译就是逆过程。计算机软件逆向工程,又称计算机软件恢复工程,是指对其他软件的目标程序(如可执行程序)进行“逆向分析和研究”,从而推导出设计思想、原理、结构、算法、处理过程、操作方法等要素,等被其他软件产品使用,在某些特定情况下可能会衍生出源代码。反编译可以作为开发软件时的参考,也可以直接用于软件产品中。
(2)汇编反编译扩展阅读:
如果编译过程中发现源程序有错误,编译程序应报告错误的性质和错误的发生的地点,并且将错误所造成的影响限制在尽可能小的范围内,使得源程序的其余部分能继续被编译下去,有些编译程序还能自动纠正错误,这些工作由错误处理程序完成。需要注意的是,一般上编译器只做语法检查和最简单的语义检查,而不检查程序的逻辑。
‘叁’ 关于汇编语言的翻译,将下面的ASM码反编译为C语言,谢谢
r1=r0>>0x1f
r1=r0+(r1<<0x24)
r1=r1>>8
r1=r0-(r1<<8)
不对随便写写
‘肆’ 秃兄,java 反编译 汇编 注入什么地我也,需
题主的原问题:
用JD-GUI和JAD反编译了几个class文件,结果JAD说不能完全反编译,JD-GUI则给出了一大堆汇编代码。
其实这个一般不会把它叫做汇编啦。就只是Java字节码的对应的文本形式而已。当然如果非要把Java字节码指令集看作真实机器的指令集,那把这个文本叫做“汇编”倒也不是不行…跑题了。
这是什么情况???
情况就是题主正好用的俩反编译器对比较混乱的字节码都处理得不好,掉坑里了。
不过题主只贴了JD-GUI的情况。请问用JAD的时候题主具体遇到的是啥问题?
要怎么样才能变成java的代码???
换个反编译器(并非开玩笑
用下面提到的CFR和Procyon都可以。
‘伍’ 急急急 反编译软件把EXE文件反译成什么 是机器语言还是汇编语言 是哪个汇编语言
首先你得清楚,微软的exe可执行文件(即PE文件,有PE规范定义)的特征,才能使用不同的反编译软件对exe进行反编译。
如今,exe一般分托管代码和非托管代码两类(托管代码是由C#等语言生成的.NET运行时库支持运行的中间代码,不是CPU芯片可直接执行的二进制机器码;而非托管代码是CPU芯片看执行的机器码)
非托管代码反编译后,其实就是简单的将二进制机器码用汇编表示,所以是汇编语言。
托管代码反编译,好的反编译器直接将中间语言字节码反编译成高级语言代码,如C#
------------------------------------------------------
另外,在什么平台运行的exe正确反编译(需要选择正确的芯片结构)为同平台的汇编语言。
如嵌入式ARM芯片上运行的Win CE系统上的exe就应当正确反编译为ARM汇编
x86的就应当反编译为x86汇编。
‘陆’ 汇编与反汇编
可以的,但是反编译的效果最常见的就是反编译成汇编语言,但是说你写一个C的程序已经编译程.exe文件了,然后又想用工具对.exe文件进行反编译,那么就只能反编译到汇编语言的状态,不可能反编译到C的状态,虽然现在网上有些人能反汇编成C,但是效果也不好,有很多的错误。
编译的过程是不可逆的,就好像你把猪杀了做成香肠,然后你又想把想把香肠变成猪一样。最多能把香肠又变成肉末,变成猪你听过吗?道理就这样
‘柒’ 反汇编与逆向编程的区别
反汇编只是按将010二进制码这样的目标码分析解释成Assembler ,所以我们叫DisAssembler,当然这与教科书上的汇编语言是不同的,这是由编译器优化生成的目标代码,而反汇编只是将通过如intel 指令手册就可以将之转换出来,而逆向编程是在反汇编的基础上,然后分析他的逻辑,从而用高级语言或是流式语言进行二次编程,比较常见的,就是使用嵌入asm(c语言),再则因为汇编的条件啥的其实基本都在goto,所以你用老一套的跟,只到你跟出自己的思路来了,那就真的就是逆向编程了,不过现在多是以上两种,当然高手我就没资格评论了.
‘捌’ keil uvision4 如何反编译c语言 到汇编语言!!就是把c 编译成汇编!!!谢了
这个过程不是“反编译”而是“编译”。
正常编译过程中都会生成临时汇编文件的,你可以在项目选项中的lst输出中勾选Assembly,即将编译的中间汇编代码输出到LST文件中。
‘玖’ 反编译和反汇编有什么区别
反汇编是把机器码翻译成的汇编;
反编译是把机器码翻译成高级语言的过程,但通常要有其他线索辅助才能完成。
‘拾’ 为什么Java反编译后带有汇编代码
那个不是汇编。。。是反编译工具无法识别的字节码(bytecodes,java中间代码),因为无法识别,自然只能直接把字节码打出来给你看了。
你多试几种反编译工具,并不是所有的都会出的,也不是所有的都在同一个地方出。这个取决于反编译工具的作者对字节码的理解。