
距离上次发帖一个月了,最近把 apk 和 dex 也支持了。
有些人问为啥叫"garlic", 这个名字来自郭德纲的相声:喝咖啡高雅,吃大蒜低俗,jaa class 文件以 CAFEBABE 开始,所以起了一个恶搞的名字garlic, 咖啡就着大蒜,高雅又低俗。
经过一个月的开发,garlic反编译器支持了 apk 和 dex 。apk 的 Manifest 和资源文件没有解析,只反编译了里面的代码。
顺带写了些其它的东西:
我测试过的 apk (豌豆荚下载的最新版):
速度方面,抖音的体量最大,差不多有 44w 个 class ,处理完需要 30 秒,我的机器是 macmini m4
~/workspace/clang/decompiler-garlic/build $ time -v ./garlic ~/workspace/java/bytecode/apks/douyin.apk [Garlic] APK file analysis File : /Users/xxx/workspace/java/bytecode/apks/douyin.apk Save to : /Users/xxx/workspace/java/bytecode/apks/douyin_apk Thread : 4 Progress : 446075 (446075) [Done] Command being timed: "./garlic /Users/xxx/workspace/java/bytecode/apks/douyin.apk" User time (seconds): 84.91 System time (seconds): 27.90 Percent of CPU this job got: 372% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:30.28 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 1725728 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 3 Minor (reclaiming a frame) page faults: 156943 Voluntary context switches: 25062 Involuntary context switches: 708980 Swaps: 0 File system inputs: 0 File system outputs: 0 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 16384 Exit status: 0 有朋友问我到底想搞一个什么样的东西出来,我总吹牛逼说我要搞一个 c 语言写的jeb出来。
后来看了好多 apk ,又想支持 lua ,又想支持 C#,我现在想吹牛逼我想搞个大而全的东西出来,能反编译所有 apk 。
回过头看写出来的东西,一堆一堆待解决的问题和完全未知的领域,真他娘的不知天高地厚了。
还是欢迎大家试用,欢迎大家提意见,欢迎 PR ,欢迎提 bug