最新消息:20210917 已从crifan.com换到crifan.org

【已解决】用jadx把安卓dex文件转换提取出jar包和java源代码

Java crifan 1199浏览 0评论
折腾:
【未解决】从不同版本的小花生apk中反编译出包含业务逻辑代码的dex和jar包源码
期间,打算对于之前用:
sh d2j-dex2jar.sh -f com.huili.readingclub8725900.dex
但是输出很多错误,(导致)最终的jar包的java代码中出现很多:
throw new VerifyError("bad dex opcode")
从而无法看到真正的代码。
此处,打算换用其他工具,看看是否能解决此问题:
skylot/jadx: Dex to Java decompiler
Release v0.9.0 · skylot/jadx
-》
jadx-0.9.0.zip
下载后:
参考:
* jadx – command line version
* jadx-gui – graphical version
切换到bin目录下去运行:
➜  bin ll
total 48
-rwxr-xr-x@ 1 crifan  staff   5.5K  2 12 09:26 jadx
-rwxr-xr-x@ 1 crifan  staff   6.0K  2 12 09:26 jadx-gui
-rwxr-xr-x@ 1 crifan  staff   3.1K  2 12 09:26 jadx-gui.bat
-rwxr-xr-x@ 1 crifan  staff   2.5K  2 12 09:26 jadx.bat
➜  bin ./jadx-gui
双击 jadx-gui后即可打开界面:
选择之前要转换的dex文件
然后:
结果是类似的:
同样的地方,也是解析出错,无法解析:
        public ViewHolder(com.huili.readingclub.adapter.BookListAdapter r1, android.view.View r2) {
            /*
            // Can't load method instructions: Load method exception: bogus opcode: 00f7 in method: com.huili.readingclub.adapter.BookListAdapter.ViewHolder.<init>(com.huili.readingclub.adapter.BookListAdapter, android.view.View):void, dex: 
            */
            throw new UnsupportedOperationException("Method not decompiled: com.huili.readingclub.adapter.BookListAdapter$ViewHolder.<init>(com.huili.readingclub.adapter.BookListAdapter, android.view.View):void");
        }
不过树状的显示效果,很明显是很方便查看,是很好用的。
->后来发现,jd-gui打开jar包后导出的源码,也有同样树状目录结构:
所以这点不算优点了。
不过缺点更明显:
(1)dex2jar能正确解析的,此处却无法解析:
(2)由于是实时反编译dex生成jar的java源码:
导致CPU占用率奇高无比:
导致mac卡死,无法正常使用。
-》放弃。
【后记20190402】
后来又去试试打开v3.4.8的apk:
效果是:
其中有:
  • com.qihoo.util
  • com.qihoo360.replugin
  • com.stub
-》感觉是奇虎360的加密?
-》但是之前研究结果记得是腾讯乐固legu啊
不过也去直接打开其他版本,比如v3.6.9的apk试试
-》可以看出:
v3.6.9有:
  • com.tencent.StubShell
  • com.tencent.bugly
    • legu
      • crashreport
      • proguard
->就可以确定是腾讯的乐固legu加密了。
再去打开旧版本v1.5试试:
-》
此apk:
  • v1.5:没有加固
  • v3.4.8:加固方式 奇虎360
  • v3.6.9:加固方式 腾讯乐固legu
然后再去:
【已解决】mac中用jadx命令行CLI从apk中导出java源码
再去用JadxGUI去打开另外一个dex文件
(该dex是jd-gui,CRF,Procyon等工具可以反编译的)
效果:
-》也是很好的,没有报错,可以正确显示源代码的。
-》解析的正确性,貌似和Procyon有的一拼,都没有报错,都很完美,只是代码逻辑虽然一样,但是代码写法和结构略有不同。
去导出代码:
导出速度也挺快,几十秒就好了
用VSCode打开后的效果:
【后记20190403】
【部分解决】尝试把jadx和jadx-gui放到Mac中应用程序中便于点击启动Jadx
【后记20190429】
【未解决】用jadx命令行从dex文件转换出java源代码

转载请注明:在路上 » 【已解决】用jadx把安卓dex文件转换提取出jar包和java源代码

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
92 queries in 0.193 seconds, using 23.45MB memory