距离上次发帖一个月了,最近把 apk 和 dex 也支持了。
有些人问为啥叫"garlic", 这个名字来自郭德纲的相声:喝咖啡高雅,吃大蒜低俗,java 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
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.