法王遇到的问题平时也遇到过,作为小白,也想参与讨论一下心得,奈何不知道怎么在回帖的时候插入图片,所以另起一个帖子 。
遇到的这个问题,个人觉得其实是反编译软件对多dex的app支持的问题。具体问题是插件本身不支持,还是插件已经支持了,但软件本身没有更新不支持,因为知识储备不够,无法得出结论。
一.测试
androidkiller反编译结果:

1.jpg (88.67 KB, 下载次数: 0)
2018-1-20 19:43 上传

2.jpg (27.58 KB, 下载次数: 0)
2018-1-20 19:44 上传

3.jpg (17.83 KB, 下载次数: 0)
2018-1-20 19:45 上传
对于两个dex文件,均已反编译成了smali。但worksrc文件夹中,只把第一个dex复制过来就卡死了,所以JAVA源码不用演示了,肯定没有的。嗯,而且图标也丢了。
第一张图看着很多活动,包括入口都是灰色的,打不开,但这里其实是androidkiller软件对于smali2文件夹不支持,没有给出链接而已,其实smali文件夹都已经编译好了。入口在smali2里。

4.jpg (98.75 KB, 下载次数: 0)
2018-1-20 19:53 上传
自己找到这些灰色的smali,打开就好。上图是入口smali。所以,虽然没有反编译出java源码,但其实已经不影响分析修改了。
APKIDE(少月版。。。不算广告吧)反编译结果:

5.jpg (68.08 KB, 下载次数: 0)
2018-1-20 19:56 上传

6.jpg (144.52 KB, 下载次数: 0)
2018-1-20 19:58 上传

7.jpg (35.3 KB, 下载次数: 0)
2018-1-20 20:00 上传
这个结果要好一点,有图标了!玩笑玩笑,主要是第一个dex的JAVA给出了,我们看到worksrc文件夹底下,是对应第一个smali文件夹的目录,也的确可以打开,但第二个dex的JAVA源码是没有的。
二.分析
从apkide的反编译结果,很明显看出来,在worksrc该app的包名文件夹下,软件给出了第一个dex的class文件反编译目录,但没有对dex1和dex2进行区分,也就是说,根本就没有考虑第二个dex。我们理想中的目录应该是worksrc/com.yogafittime.tv.common/class1和worksrc/com.yogafittime.tv.common/class2,因为两个dex中目录有重名的,万一smali文件再有重名的。。。混不到一块去。
为了验证我们的想法,进行一下试验。

8.jpg (71.66 KB, 下载次数: 0)
2018-1-20 20:09 上传
把apk复制两份,第一个复制品11.apk删掉class2.dex,第二个复制品22.apk删掉class.dex,也就是分别保留一个dex,变成单dex的app了。注意,22.apk中,我们把class2.dex重命名为class.dex(因为2不认)。删的时候直接改成zip文件就好,删完之后也不用处理,直接拖进反编译软件。11.apk的反编译就不贴图了,因为完整版的app里,第一个dex的JAVA源码已经有了,我们要拿第二个dex的。
看反编译效果

9.jpg (39.61 KB, 下载次数: 0)
2018-1-20 20:18 上传

10.jpg (174.8 KB, 下载次数: 0)
2018-1-20 20:19 上传
入口的splashactivity的smali、JAVA码都有了,worksrc文件夹下也变成class2的JAVA源码了。看到这里就很明确了,所谓的无法反编译JAVA源码,就是蛋疼滴androidkiller和apkide不支持多dex而已。
@冥界3大法王 还考虑直接用工具从dex中提取JAVA源码,dex转jar没问题,jar转成文件夹找不到工具了。。。。。。其实jar就是class的打包文件,改名成.zip,解压出来就是了。。。当然没有工具。。。

12.jpg (48.99 KB, 下载次数: 0)
2018-1-20 20:27 上传

13.jpg (105.9 KB, 下载次数: 0)
2018-1-20 20:45 上传
以上两图中,classes.dex其实是22.apk解压出来的,原名是classes2.dex,我们改了名,别弄混了。
到这里,看到拿到两个dex的JAVA源码是很简单的,奈何androidkiller和apkide不认。。。
如何在worksrc文件夹同一个包名下把两个java源码文件夹认出来,@冥界3大法王 老兄继续努力
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232371.html原文链接:https://javaforall.net
