Open n0099 opened 1 year ago
ls -1 | shuf | sed 's/\.apk$//' | parallel -j 63 --eta --progress '../jadx/bin/jadx -ds {}/src -dr {}/res -j 1 --show-bad-code --fs-case-sensitive --comments-level debug --log-level error {}.apk 2>&1 > {}.log'
瓶颈是石头盘
建议直接
/dev/shm
内存盘
根据starry神 @Starry-OvO 此前于 https://github.com/HuanCheng65/TiebaLite/issues/150#issuecomment-1411606990 的最高指示精神
建议使用jadx
而不是缝合dex2jar
+jd-cli
来进行反编译流程:
jadx
一个程序内就能完成dex
(dalvik executable)转jar
(jvm bytecode,dex和jar同为给运行时eval的二进制格式)(也就是dex2jar
),然后jar
反编译回java代码(也就是jd
)的流程jadx
目前还有多人维护,这也使得他能更正确地还原kotlin等较新的jvm语言所编译的bytecode
dex2jar
的上游repo主pxb1988
19年后就鲜有commit,所以我使用的是ThexXTURBOXx
的forkjd
本身早已于19年死亡,jd-cli
也只是intoolswetrust
对其的cli封装jadx
比dex2jar
快得多并有一定的并行度,我只需要8分钟就能跑完一个庞大的12.x
版本apk,反观dex2jar
:https://github.com/ThexXTURBOXx/dex2jar/issues/30
下载某个历史版本贴吧客户端 apk(豌豆荚 apkpure 欢迎补充)并置于
path/to/apk
下下载最新版本dex-tools然后解压并
cd
进解压路径修改文件
d2j_invoke.bat
(win)/d2j-dex2jar.sh
(*nix)中的-Xms512m -Xmx2048m
为-Xmx3g -Xmx4g
(如果您有至少 4G 空闲内存,也可以使用2g, 3g
但会更频繁触发 GC 导致使用更多 cpu)以避免途中发生
至少需要设置 2G 左右的
java.lang.OutOfMemoryError: Java heap space
https://github.com/ThexXTURBOXx/dex2jar/issues/13-Xmx
,cpu 使用稳定单核,就像是在开大型 mcmod 整合包服务端 还建议通过更改文件中使用的java
路径以切换至graalvm执行并等待数十分钟
其中
path/to/jar
为您期望的输出 jar 文件路径下载jd-cli https://search.maven.org/artifact/com.github.kwart.jd/jd-cli https://github.com/intoolswetrust/jd-cli/issues/62#issuecomment-970156605
执行
路径
classes/jar文件名/tbclient
下便是 repo 的java
目录下的所有.class
文件使用本 repo 提供的
squareWireProtoBufJavaGeneratedClassesDecompiler.php
将这些.class
java 源码转换为.proto
文件