反编译用什么虚拟机
Ⅰ 谁有办法把class文件反编译为java吗,不能出任何错误。我用jd总是有错误,而且好像有层级限制
jd只是适合少量class文件,如果太多的话,类的引用就太繁琐了,偶尔会出错。我也是用XJAD反编译的,它可以反编译一个jar包。反编译有啥原理呢?虚拟机将*.java文件编译成字节码(*.class文件)然后,在编译成本地机器码,执行;我们一般用来传播的也就是*.class文件,这是一种有标准格式的字节码,开发工具按这个格式在将转换为*.java程序,就这样咯。而且,如果你要学了*.class文件的结构,自己都能计算出对应的*.java文件,只不过很复杂,很繁琐。
Ⅱ 怎样反编译程序
哦 很简单
如果没有加壳 可以用 rescope注册版
加壳的 涉及加密解密知识
Ⅲ 安卓手机上可以实现apk安装包的反编译吗用什么软件
手机上目前不太可能,APKTOOL也只是电脑上的,手机上如果要反编译,必须具备java虚拟机的全部环境才可以,当然,不排除以后有高手能直接提取需要的java类放到手机中,建立一个轻量级的反编译环境
Ⅳ JAVA反编译软件
由于JAVA语言安全性高、代码优化、跨平台等特性,从1995年5月由SUN公司发布后,迅速取代了很多传统高级语言,占据了企业级网络应用开发等诸多领域的霸主地位。
不过,JAVA最突出的跨平台优势使得它不能被编译成本地代码,而要以中间代码的形式运行在虚拟机环境中,这使得JAVA的反编译要比别的高级语言容易实现,并且反编译的代码经过优化后几乎可以与源代码相媲美。
为了更好地保护知识产权,避免本公司的智力成果轻易被人窃取,开发者有必要对反编译工具深入了解,以便有针对性地采取保护措施。
目前,比较流行的JAVA反编译工具有近30种,其中有三款堪称精品:
一、 应用广泛的JAD
在众多的JAVA反编译工具中,有几种非常着名的工具使用了相同的核心引擎——JAD,其中主要包括:Front End Plus、mDeJava、Decafe Pro、Cavaj Java Decompiler、DJ Java Decompiler、NMI’s Java Class Viewer和国产的JAVA源代码反编译专家。
JAD本身是一个命令行工具,没有图形界面,上述的这些工具大多是在JAD内核的基础之上加了一个图形界面而已。这么多种产品的共同选择,足可证明JAD在JAVA反编译领域中的尊贵地位。
JAD是使用Microsoft Visual C++开发的,运行速度非常快,可以处理很复杂的JAVA编译文件。众多的参数使JAD可以灵活应付多种加密手段,令反编译的代码更加优化和易读。由于JAD参数太多,没必要一一解释,其中有几个最常用的如下(以JAD 1.5.8f版本为例):
-d
- 用于指定输出文件的目录
-s - 输出文件扩展名(默认为: .jad),通常都会把输出文件扩展名直接指定为.java,以方便修改的重新编译。
-8 - 将Unicode字符转换为ANSI字符串,如果输出字符串是中文的话一定要加上这个参数才能正确显示。
最常用的反编译指令如下所示:
Jad –d c:\javasource –s .java -8 javatest.class
这条指令将当前目录下的javatest.class反编译为javatest.java并保存在c:\javasource目录里,其中的提示输出为中文,而不是Unicode代码。
二、 源码开放的JODE
JODE是全球最大的开源项目网站Sourceforge.net的成员,在所有的JAVA反编译器中,JODE的反编译效果是最好的,尤其是对付一些常见的加密手段,例如混淆技术等,更是出类拔粹。
JODE本身也是纯JAVA开发的,最近越来越多的JAVA反编译软件也选择JODE来做它们的核心引擎,例如JCavaj Java Decompiler、BTJ (Back To Java)、jEdit’s JavaInsight plugin等。
JODE是一个可运行的JAR文件,在windows环境下双击即可运行。
需要特别说明的是,JODE不是通过常规的Open->File的方式来加载JAVA编译后的类文件(*.class)或是类包(*.jar)的, 而是通过在Options菜单中的Set Classpath来实现的,单独的类文件可以将它的上一级目录作为Classpath输入,然后再选择Reload Classpath即可。
新加入的类包或是类的名字会在左侧窗口出现,双击类包名可以展开目录树结构,双击需要反编译的类名则在右上角的窗口中直接显示反编译后的源代码。
三、 独树一帜的DAVA
DAVA不是一个独立的JAVA反编译器,而是JAVA代码优化工具Soot的一部分。Soot和JODE一样是纯JAVA开发的,也是一个独立的JAR包,但却不能通过双击直接运行,而是象JAD一样在命令行状态运行。
Soot对环境变量的配置要求非常严格,通常情况下要对CLASSPATH做如下设置:
Set CLASSPATH=%CLASSPATH%;c:\sootdir\sootclasses-2.1.0.jar;.;
其中的c:\sootdir\是下载的soot类包放置的路径,CLASSPATH末尾的.;代表了当前目录,如果不加上这个的话Soot经常会报一个找不到类的错误。
DAVA是作为Soot的一个参数使用的,通常的用法如下:
Java soot.Main –f dava –d c:\javasource javatest
注意最后的类名不用带.class后缀,因为它默认是处理class文件,这个操作与前述的JAD的参数效果相同。
DAVA采取了流程优化的方式进行反编译,与传统反编译思路不尽相同,但却对改变流程类的加密方法有独特的反编译效果。
上述的三种工具各有千秋,但效果都非常不错。经测试,它们基本上都可以把JDK自带的一些例程完全反编译,然后不加任何修改可再编译成功,并能正常运行!
Ⅳ 反编译是什么意思
计算机软件反向工程(Reverse engineering)也称为计算机软件还原工程,是指通过对他人软件的目标程序(比如可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,
某些特定情况下可能推导出源代码。反编译作为自己开发软件时的参考,或者直接用于自己的软件产品中。
(5)反编译用什么虚拟机扩展阅读
反编译是一个复杂的过程,反编译软件有:
1、SWF相关的反编译程序
Action Script Viewer
第一个也是最强大的商业SWF反编译工具,同类产品中,它的AS代码反编译效果最好,SWF转Fla工程重建成功率最高。
2、Android相关的反编译程序
SMALI/BAKSMAL
SMALI/BAKSMALI是一个强大的apk文件编辑工具,用于Dalvik虚拟机(Google公司自己设计用于Android平台的虚拟机)来反编译和回编译classes.dex。其语法是一种宽松式的Jasmin/dedexer语法,而且它实现了.dex格式所有功能(注解,调试信息,线路信息等)。
3、python相关的反编译程序
uncompyle2
uncompyle2可以直接转化为十分完美的python源码,并可以将反编译后的源码再次生成字节码文件。
参考资料来源:网络-反向编译
Ⅵ Android程序反编译后为什么不能部署在模拟器上呢
classes.dex是java源码编译后生成的java字节码文件。但由于Android使用的dalvik虚拟机与标准的java虚拟机是不兼容的,dex文件与class文件相比,不论是文件结构还是opcode都不一样。目前常见的java反编译工具都不能处理dex文件。http://www.ijiami.cn/newsInfo?id=281&v=3
Android模拟器中提供了一个dex文件的反编译工具,dexmp。用法为首先启动Android模拟器,把要查看的dex文件用adb push上传的模拟器中,然后通过adb shell登录,找到要查看的dex文件,执行dexmp xxx.dex。但是这样得到的结果,其可读性是极差的。
Ⅶ 请推荐一款虚拟机软件
推荐给这位朋友CSM脚本语言编译器和虚拟机执行器
CSM脚本语言是国人自主研发的,拥有自主知识产权(软件着作权证书号为2006SR16059)的,是世界上第一款也是迄今为止(2006年10月)唯一的一款嵌入型的,高性能的,工业强度级的,基于对象的,完全强类型的,基于寄存器虚拟机实现的静态编译型脚本语言.它是主流编译型宿主语言(C/C++/ C#/Java)在脚本领域的自然延伸.也代表着这一领域的顶尖设计水平.CSM是C Sharp Minus的简称,其语法形式大部分取自于微软的c#语言,但也有许多不同.而语义上基本与C/C++相同.CSM脚本语言有许多独特的特性使其成为最优秀的静态脚本语言之一.具体的介绍如下:
CSM 脚本语言提供与主流编译型宿主语言(C/C++/C#/Java)相同或相似的语法形式和思维习惯.
CSM 脚本最终生成字节码,以二进制的方式嵌入到宿主环境中,这防止了脚本文本本身的直接暴露,保护了编写者的利益.而且编译器和脚本源程序无须随应用宿主程序一同分发.
CSM 编译器提供精确到某行某列的,详尽的,完全中文化的编译出错信息显示.
CSM 编译器内部大量使用了虚拟内存,内存映射文件和嵌入式汇编技术,使编译速度更加快速.
支持预编译处理中的条件编译功能.(由#def / #undef / #if / #ifdef /#endif等预处理指令提供的一组预处理功能).这使脚本程序像VC++那样可以提供debug和release版本.
天生就是Unicode,所以支持中文的类名,变量名,常量名,函数名,属性(property)名.
支持sbyte,byte,short,ushort,int,uint,long,ulong整型类型,以及float,double浮点类型,和bool,char等强类型数据.
从形式语法上彻底取消了指针的使用(但是语义上还是保留的),但又不失指针操作的灵活性,CSM脚本语言在这方面作出了不小的努力.
支持类和对象的概念,并同时支持全局常量,枚举成员,常量成员,静态成员,实例成员。以及静态构造方法,静态析构方法,实例构造方法,实例析构方法,普通静态成员方法,普通实例成员方法,静态和实例属性,以及==和!=操作符重载方法. 可在方法中定义out类型的参数.并支持方法重载(method overload)功能.
支持类中成员的1,2,4,8,16字节对齐属性,这为与C/C++宿主语言进行通讯,提供了相同的内存布局结构,能够以更加直接而快速的方式操控数据.
像Java或C#那样,支持静态和实例成员的初始化表达式.
支持各种算术,逻辑,布尔运算,复合运算及强制类型转换功能.
支持各种语句,包括声明语句,表达式语句,循环语句,跳转(goto)语句,以及switch语句,特别是switch语句,采用了和编译型宿主语言一样的技术.内部实现通过使用平衡树建立跳转表的方式,大大提高比较速度,使得在1000个分支的最坏情况下比较十次,加快了运行速度.
支持静态和实例方法的回调机制(这在c/c++中被称为函数指针,而C#中被称作代理delegate),能提供一定程度上的多态特性,并且通过这种方式可实现Event机制.
支持作用域和局部对象(或称栈对象)的概念,当局部对象退出其所在的作用域时,将自动调用其析构方法,且调用的次序正好与构造的次序相反,这是最典型的C++特征.
提供快速高效的算子功能.
提供局部堆和全局堆对象的分配功能.
对堆对象实行手工的new/delete分配和释放功能,做到与宿主语言C/C++一致.
有对系统调用的跟踪功能,一旦程序发生崩溃,能自动给出崩溃的语句点,以及此时的方法调用堆栈.这有点像我们在Windows系统中常见的崩溃对话框.
CSM脚本语言编译成字节码后由CSMachine虚拟机执行,CSMachine虚拟机上执行的汇编语言被称作是CSMasm汇编语言.而CSMachine虚拟机也是当今独一无二的强大的虚拟机实现之一:
CSMachine虚拟机是一种完全强类型的32位虚拟机,它支持约2500条虚拟机指令,每条虚拟机指令均以嵌入式汇编语言实现,以求达到最高的运行效率.
由于CSMasm具有庞大的指令集,所以对脚本的逆向工程能起到很强的遏制作用.使得反编译CSM字节码的工作很困难,这在很大程度上保护了脚本编写者的经济利益.
利用虚拟内存和内存映射技术对CSM执行映像进行分段,如数据段,代码段,堆栈段,局部堆,全局堆,对代码段实施只读保护,这起到了沙箱保护的功能.
CSMachine的堆栈尺寸可根据实际情况自动而灵活地扩大和收缩,无须象其它的脚本语言那样时刻去留意是否引发堆栈溢出.
是基于寄存器的实现方式,这种方式比嵌入型栈式虚拟机速度稍快.
是开放式虚拟机设计,只须通过Wrap/Unwrap操作对指针进行坐标系调整,不像封闭式虚拟机那样必须使用Marshal/Unmarshal进行数据块复制.
提供载入多个脚本以及一个脚本的多个副本的功能,为脚本程序的团队化开发和多线程应用提供了强而有力的技术保障.
希望这位朋友能喜欢
参考资料:http://www.27down.com/soft/10/169/2007/2007129961419.html
Ⅷ 什么叫反编译
编译是一种将高级语言翻译成计算机可是别的低级语言。
反之就是反编译。
不光只JAVA,可以编译的高级语言都可以被反编译。
Ⅸ c++代码反编译
进入.Net之后,VC可以用来开发本地的win32程序,还有托管的.Net程序
其中win32程序,比如mfc程序,使用传统C++语言,是直接编译为机器指令的,最多反汇编到汇编代码
但是.net程序,使用微软为.net平台扩展的C++/CLI语言(.net 1.1时代有一种托管C++语言,是微软的早期作品,因为稳定性欠佳,已被C++/CLI取代),编译之后的是.net平台的IL语言,因为IL汇编语言较传统汇编指令远为“高级”,通过简单的反汇编器就可以得到几乎一摸一样的源代码,楼主实际看到的是这种.net程序,这才是通过Reflector能够看到的反汇编代码
Ⅹ 用apktool对apk 反编译怎么在sdk虚拟机里使用这个项目啊
貌似木有吧