首页
社区
课程
招聘
关于反编译工具的概述
发表于: 2015-10-17 19:54 10488

关于反编译工具的概述

2015-10-17 19:54
10488

本文主要是对反编译工具的说明,这些工具大部分是开源的。

一、dex反编译
主要有jadx、dad和jeb。
jadx
有进行控制流分析,反编译效果还不错,强烈推荐。
dad
是androguard自带的,虽然也有进行控制流分析,但反编译效果好像不太好,不推荐。
jeb
不开源,听说要1000刀,好贵,都可以买ida了,粗略看了下1.5版本,感觉反编译效果不是很好。尽管它有导出api供使用,还是觉得太贵了,2.0版本反编译效果未知。好像有很多人推荐使用。

二、java反编译
这个工具就多了,这里主要对jd-gui、procyon和cfr进行说明。
jd-gui
不开源,但由于它只是进行模式匹配,并没有进行控制流分析,对dex2jar转化而成的jar就悲剧了,因为dex基本块的前驱块不一定在前面,同理后继块不一定在后面。而且它处理异常时有问题,还有分析连续两个以上的相同类型的static变量也有问题,所以它经常在有异常的函数和cinit构造函数反编译出错,也没有进行类型推断,还不支持java8特性,所以对dex2jar转化而成的jar不推荐使用jd-gui。
procyon
应该是最好的反编译工具了,有进行控制流分析,有进行类型推断,也支持java8特性,但由于它有大量的类封装,反编译速度比较慢,占用内存也多,它对变量分析有些问题,强烈推荐。
cfr
还不错,感觉比procyon差点。注意虽然它没有开源,但它也没有进行混淆,可以反编译出源码。

三、lua反编译
反编译工具有unluac和luadec。
unluac
当程序有调试符号时,它是最好的选择,但它并没有进行变量分析,反编译没有调试符号的程序有问题。
luadec
有进行变量分析,但少了很多模式匹配,很容易出错,最好和unluac结合使用。

四、luajit反编译
反编译工具为ljd,未测试。

五、javascript反编译
javascript有v8、javascript-core、spidermonkey三种开源实现。v8没有使用字节码,好像不用反编译,javascript-core未发现反编译工具,spidermonkey早期版本官方自带反编译,新版本未提供。

六、python反编译
主要是uncompyle2,支持2.5-2.7版本。

七、c#反编译
工具也很多,这里对Reflector和ilspy进行说明。
Reflector
使用最为普及,非常强大,还支持插件,不开源。推荐使用。
ilspy
还不错,procyon就是基于它改写而成。

八、其它语言
比如erlang、php、ruby、perl、actionscript等,未关注。


[峰会]看雪.第八届安全开发者峰会10月23日上海龙之梦大酒店举办!

收藏
免费 3
支持
分享
最新回复 (3)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
谢谢分享,有些工具没用过,可以试一下!!
2015-10-19 10:36
0
雪    币: 449
活跃值: (233)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢楼主分享。
2016-12-14 12:10
0
雪    币: 5
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
纠正一下,jd-gui是开源的。
2020-11-19 16:58
0
游客
登录 | 注册 方可回帖
返回
//