jadx反编译代码能不能运行
Ⅰ eclipse debug下,为什么实际运行的代码和看到的不一致(源码是jad反编译的)
通过反编译的不可能是完全的相同你知道那些class 要是商用还会加密。要是开源的部份就直接去下源码看不要反编译。
Ⅱ java程序能被反汇编吗
呵呵 首先,java可以反编译,现在已经有反编译软件了,你已经用过了,就知道的确很强大。不过,java相对来说,还是安全的,现在似乎还有种反反编译,听说过,不了解。
这些我们可以通过一些算法去加密之类的,比如md5这样的。所以还是不用担心java的安全性。
然后,java是可以写病毒的。只是,java的使用需要对方先安装jvm之类的,所以说,如果对方没安装,那你病毒就没用了。所以现在很少人用java写病毒,就像linux里很少人会去浪费时间写病毒的。
Ⅲ 任何程序都可以反编译吗为什么有一些程序不可以反编译
javap是用作反编译的,但是javap只能给出你要反编译的class的结构,比如有什么方法,有什么static或者非static的变量什么,但不可能产生源代码编译后的文件不是原代码文件,所以不能直接拿来编译。希望楼主采纳
Ⅳ 如何反编译Android 的apk/dex/odex,获得源码
关于APK,DEX的介绍
当我们编译一个安卓项目的时候,整个项目会被打包成一个 .apk文件。这个文件其实是一个标准的zip文件,因此可以用解压缩工具打开。这个apk文件一般都包含程序的代码(在classes.dex文件中), 资源文件, 证书, manifest 文件等。 其中对我们最重要的是classes.dex文件,因为编译后的字节码(bytecode)都是放在这个文件中。我们后面讲的反编译就是针对这个dex文件来的。
反编译普通的APK文件:
对于普通的APK/DEX文件的反编译,其实工具有很多, 包括:
ByteCode Viewer: 一个可视化的集成工具,说实话,不太好用,不够稳定,生成代码质量中等。
dex2jar + jd_gui: 这两个工具组合还可以, 用起来比ByteCode Viewer麻烦一些,但比较稳定,生成代码质量中等。
在线反编译工具JADX: http://www.javadecompilers.com/apk , 这是基于SourceForge上的JADX的开源工具来实现的。本来以为在线反编译质量不会好,但出人意料的是:JADX是我发现的最好的反编译工具, 不但使用简单(直接上传,转换,下载就ok),而且反编译出来的代码质量很高,特别是变量命名方面,可读性很不错。
反编译ODEX文件:
Android 5.0 Lollipop以后,Google用ART代替了以前的Dalvik,对于普通的app来说我们仍然可以用上面的方法来把dex文件反编译成Java源代码。但对于系统预装的App,特别是类似应用商店,播放器等, 你会发现这些应用的apk文件中找不到对应的classes.dex文件,而是会发现在其子目录下有个.odex文件。 那如何反编译这个odex文件呢?我通过google查了查,知道应该用baksmali,但从github上下载了几个版本都不行,报各种不同错误。经过反复搜索和尝试,终于找到了这篇文章
: http://www.naldotech.com/how-to-deodex-applications-on-android-5-0-lollipop/ 。 具体方法如下:
1. 从这里下载工具包, 解压缩到本地。 这里的baksmali的版本是2.0.3. 不同版本的baksmali针对的Android内核不同。有时候高版本反倒不好用。
2. 打开工具所在目录, 按住shift键, 点击鼠标右键,打开windows命令窗口
3. 把 odex文件拷贝到该目录
4. 在命令窗口运行: oat2dex.bat *.odex. 正常情况下,应该显示OK等信息。如果报错的话,说明这个文件无法转换,后面的也不用试了。
5. 运行 oat2dex.bat *.odex temp.dex . 运行后会创建一个temp.dex文件。
6. 运行 java -jar baksmali-2.0.3.jar -a 21 -x temp.dex -o source . 运行后会创建一个source的文件夹,并将temp.dex反编译到该文件夹。-a 21 表明的是Android内核的版本21
7. 运行 java -jar small-2.0.3.jar -a 21 source -o classes.dex, 反编译为classes.dex文件。
需要注意的是:由这种方式反编译成的classes.dex 文件相比原生的classes.dex 还是缺少了些信息,因此反编译这种classes.dex 文件后生成的java代码可读性会更差些。
8. 用在线工具JADX 来把 classes.dex 最终反编译为java代码。
Ⅳ JAR文件经过反编译 得出的代码输入eclipse无法运行很多错误
反编译过的jar得到的最终代码形式和手动敲上去的一样,至于错误的原因,大概的分析下来我觉得至少有这几种可能,包之间的依赖(其他包的引用,但在你的项目拟不存这个包),另外一种就是语法不全,或是语法混乱,有的反编译工具就可能会生成错误的语法结构.... 至于反编译工具,还没用过这个东西,所以暂不讨论那些好,那些坏了!
Ⅵ jadx反编译后可以重新打包吗
1、首先新建一个android项目,里面只有一个MainActivity,而且主界面只会显示一个字符串:你好。
2、接着,切换到这个项目生成的apk文件所在的目录,可以看到有一个hellodemo.apk。
3、在命令行输入:apktool d -r hellodemo.apk。可以看到在当前目录下生成了一个hellodemo文件夹。
4、进入到hellodemo\smali\com\example\hello,打开MainActivity.smali。找到:
const-string v1, "\u4f60\u597d",
修改为:
const-string v1, "hello",
5、然后在命令行输入:apktool b hellodemo hellodemo1.apk。这回重新打包成hellodemo1.apk。
6、然后给新生成的apk进行签名。把这个apk拷贝到autosign的目录下面,然后切换过去,在命令行输入:java -jar signapk.jar testkey.x509.pem testkey.pk8 hellodemo1.apk hellodemo.apk。
7、把生成的hellodemo.apk安装到手机,可以看到主界面上已经显示的是hello,而不再是你好。说明反编译重新打包成功!
Ⅶ 用Reflector 反编译后的代码怎么让他运行起来
使用Reflector反编译exe或dll文件都可能无法进行编译(这里指已经对目的文件进行了脱壳处理),主要原因有以下几点:
1、如果对方使用了混淆技术,我们再反汇编会非常棘手,我常用的做法是把某个乱七八糟的名称使用自己的命名规范重新批量重命名,这样便于分析程序的结构。
2、Reflector对枚举类型的支持不是很好,它往往会把枚举当做整数进行处理,这个需要你手动更正过来。
3、对于自动属性,你需要把不符合编译语法的地方更正过来。自动属性的私有字段一般都含有<>等,需要手动更正一下。
4、对于Winform,你需要重新编译一下相关的资源文件,如果编译过程提示找不到资源的话。
5、对于静态变量或者静态类,这个你更要注意。举个例子:假如静态变量A,和B,而B又用到了A,这时候你要检查他们的初始化设置是否是先初始化的A,然后再初始化B,否则编译通不过。
Ⅷ android反编译apk的代码怎么运行起来
Android 是 .apk 文件 网上有反编译的软件 可以反编译成源代码,你可以去网上找找,我用的是 jd-gui-0.3.3 但是,一般来说 程序员在 开发完成后都会混淆打包,即使是反编译出来,也会有很多 abcdefg,,,, 表示的乱码 有的软件 没混淆 就可以得到源码,但是这样的软件 一般都能在网上找到开源的相关的代码 祝你成功 !
