开源反编译器支持 dex/apk

4 天前
 neocanable

距离上次发帖一个月了,最近把 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

421 次点击
所在节点   科技
1 条回复
ice000
4 天前
666 ,小工具很方便呀

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1142640

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX