求大神,怎么把java文件回编译成classes.dex文件?

求大神,怎么把java文件回编译成classes.dex文件?,第1张

jdk
50默认就会到当前工作目录,以及jdk的lib目录中寻找java程序。所以如果java程序是在这两个目录中,则不必设置classpath变量也可以找得到,将来如果java程序不是放置在这两个目录时,则可以按上述设置classpath。
需要javac源文件,需要在java文件的当前目录
win7在java文件当前窗口中
按住shift右键选择-->在此处打开命令窗口
然后执行javac
java
即可

工具/原料
eclipse、ADT、android的SDK
反编译类文件用dex2jar、jdgui
1
打开apk2java目录下的dex2jar-0099文件夹,内含apk反编译成java源码工具dex2jar,以及源码查看工具jdgui。
apk反编译工具dex2jar,是将apk中的classesdex转化成jar文件源码。查看工具jdgui,是一个反编译工具,可以直接查看反编译后的jar包源代码
2首先将需要反编译的apk文件后缀改为zip并解压,得到其中的classesdex,它就是java文件编译再通过dx工具打包而成的,将classesdex复制到dex2jarbat所在目录dex2jar-0099文件夹。在命令行下定位到dex2jarbat所在目录,运行
dex2jarbat classesdex
目录文件夹就会生成
classes_dex2jarjar
3然后,进入jdgui文件夹双击jd-guiexe,打开上面生成的jar包classes_dex2jarjar,即可看到源代码了。

第一步,下载并安装jdk
第二步,安装成功之后可以进行配置,右键我的计算机-属性-高级系统选项
第三步,点开环境变量选项卡
新建变量
1变量名:JAVA_HOME 值:C:\Program Files\Java\jdk170 (以你安装目录为准,确认里面有bin和lib,jre等多个文件夹)
2变量名:classpath 值:;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dtjar;(千万别漏了开头的小点)
如果变量目录下没有PATH这个变量,还需要新建一个
3变量名:PATH 值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
如果已经存在PATH,就在值前面加上面的一段路径就可以了,末尾有;隔开。

打开Androidfby中的Android反编译工具,开始直接反编译,选中你要反编译的apk,反编译即可,这样就可以得到软件中,xml,dex文件,或者直接用解压文件解压,但是不能保证xml正常显示,所以我们最好是结合一起用

打开反编译之后的文件夹,找到classesdex,将其复制到dex2jar的文件夹目录下面,与dex2jarbat在同一目录即可。打开命令提示符,一直打开到dex2jar目录,执行以下命令dex2jarbat classesdex

这时会在dex2jar目录下生成一个classes_dex2jarjar文件,这时运行jd-gui目录下的jd-guiexe,选择File-----》Openfile------》classes_dex2jarjar,即可查看java代码了

一、dexdump方法
dexdump是emulator自带提供的查看dex文件的工具,可使用类似这样的命令将dex文件dump到txt文件中:
D:/Program Files/android-sdk-windows-16_r1/platforms/android-16/tools>dexdumpexe -d classesdex > spkdumptxt
得到的文件内容,描述了类的信息,但实在是不好读啊~~~~

二、dex2jar + XJad 方法

该方法是使用dex2jarjar包,将classesdex文件解包成jar,在通过XJad(或者其他class反编译工具)进行java反编译。如:
1、dex2jarbat d:/play/classesdex
默认的输出路径同classesdex,生成的文件名为classesdexdex2jarjar
2、使用XJad反编译该jar包
之后的使用方法,大家都懂的:)

该方法的好处在于,通过XJad反编译后,大家可直接开到java源文件,缺点在于只能反编译出开发时的java文件,而开发时使用的lib包不能反编译出来。

三、AXMLPrinter2jar + baksmalijar + smalijar 方法

这个方法就强大了,AXMLPrinter2是还原AndroidManifestxml和mainxml的工具,直接打开这两个xml文件是乱码,而通过还原之后,可以很明白的看到里面的内容(我猜测还是使用了字节异或的方式加的密)。
baksmalijar是反解析dex的工具,smalijar则是再还原成dex的工具
*** 作方式如下:

1、java -jar AXMLPrinter2jar D:/play/AndroidManifestxml > AndroidManifesttxt
2、java -jar AXMLPrinter2jar D:/play/res/layout/mainxml > maintxt
3、java -jar baksmali-125jar -o classout/ d:/play/classesdex


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

原文地址: http://outofmemory.cn/yw/13221455.html

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

发表评论

登录后才能评论

评论列表(0条)

保存