Bytecode Viewer-一款基于Java 8的Android APK逆向工具包

阅读量285071

|

发布时间 : 2016-07-21 16:46:43

x
译文声明

本文是翻译文章,文章来源:安全客

译文仅供参考,具体内容表达以及含义原文为准。

https://p4.ssl.qhimg.com/t018a6d795f57c8185f.png

ytecode Viewer是一个先进的轻量级Java字节码查看器,它是一款基于图形界面的Java反编译器,Java字节码编辑器,APK编辑器,Dex编辑器,APK反编译器,DEX反编译器,Procyon Java反编译器,CFR Java反编译器,以及FernFlower Java反编译器。不仅如此,它还是一款Hex查看器,代码搜索器和代码调试器。除此之外,它还具备Smali和Baksmali等汇编器的相关功能。

 

这款开源工具完全采用Java编程语言进行开发。这款工具由Konloch设计并开发,目前也主要是Konloch正在维护这一开源项目。

 

在这款工具中,还设计有一个插件系统,它可以允许你与加载的类文件进行交互。比如说,你可以写一个字符串的反混淆工具,恶意代码搜索器,或者其他的一些你所能想到的东西。

 

你不仅可以使用一个他人预先编写完成的插件,而且你也可以使用你自己写的插件。不仅如此,它还支持使用Groovy脚本,Python脚本,以及Ruby脚本。当插件状态被激活之后,它会将每一个单独的类文件加载进BCV中,这样一来,用户就可以使用ASM来控制这些加载的类文件了。

 

目前,这款开源工具已经使用了大量其他项目中的功能代码,包括但不仅限于下面列表中的项目:

J-RET-开发者为WaterWolf

JHexPane-开发者为Sam Koivu

RSynaxPane-开发者为Robert Futrell

Commons IO-开发者为Apache

ASM-开发者为OW2

FernFlower-开发者为Stiver

Procyon-开发者为Mstrobel

CFR-开发者为Lee Benfield

CFIDE-开发者为Bibl

Smali-开发者为JesusFreke

Dex2Jar-开发者为pxb1..?

Krakatau-开发者为Storyyeller

JD GUI/JD Core-开发者为The Java-Decompiler Team

Enjarify-开发者为Storyyeller


参与过该项目并贡献了代码的人:

Konloch

Bibl

Fluke

Righteous

sahitya-pavurala

priav03

Afffsdd

Szperak

Zooty

samczsun

如果您贡献过代码,而上面的这份名单中没有您的名字,请不要生气,请您立刻与我联系(@Konloch or konloch@gmail.com)。

 

项目参与指导/编码规范:

上传代码包的包名必须以the.bytecode.club.bytecodeviewer开头。 

如果你所编写的代码需要抛出异常,请使用the.bytecode.club.bytecodeviewer.ExceptionUI(exception, "authors@email.com")来处理抛出的异常。

所有的变量必须在每个类的开始处声明。

所有的括号必须在同一行中,比如说,public void main(String[] args) { not (String[] args) <NEWLINE_BREAK> {

官方网站: https://bytecodeviewer.com

项目源代码: https://github.com/konloch/bytecode-viewer

代码/示例文档: https://github.com/konloch/bytecode-viewer/releases

Java Docs: https://the.bytecode.club/docs/bytecode-viewer/

项目许可证: https://raw.githubusercontent.com/Konloch/bytecode-viewer/master/LICENSE

漏洞报告: https://github.com/Konloch/bytecode-viewer/issues

项目论坛: https://the.bytecode.club/forumdisplay.php?fid=69

 

主要特性:

1.在Bytecode Viewer的编译/反编译工具中集成了Krakatau。

2.集成了Smali/BakSmali-现在,你可以通过smali来编辑类文件和dex文件了。

3.支持APK/DEX-使用了Dex2Jar和Jar2Dex,可以轻松加载并保存APK文件。

4.Java反编译器-Bytecode Viewer的反编译工具中集成了FernFlower,Procyon和CFR。

5.字节码编译器-CFIED的修改版

6.十六进制查看器-由JHexPane驱动

7.每一个反编译器/编辑器/查看器都是可以进行切换的,你可以选择每一个操作面板上所显示的元素组件。

8.功能完整的搜索系统-可以搜索字符串,函数,以及变量等信息。

9.系统完全支持使用Groovy脚本。

 

除此之外,这款工具还有很多其他的特性,您可以在使用的过程中发现更多的功能。

 

命令行输入:

-help                         显示帮助菜单
-list                         显示可用的反编译器
-decompiler <decompiler>      选择要使用的编译器,系统默认为procyon
-i <input file>               选择输入的源文件 (系统将会自动识别Jar, Class, APK, ZIP,和DEX)
-o <output file>              选择输出文件 (Java源文件或者Java字节码文件)
-t <target classname>         必须提供完整的Java类文件名称,或者设置为“all”来反编译所有的类文件
-nowait                       无需等待用户读取CLI信息

你是一名Java逆向工程师吗?你想学习如何对Java程序进行逆向分析吗?

 

请立刻加入Bytecode俱乐部吧!

https://the.bytecode.club

 

更新日志(因篇幅有限,日志内容从2.9.0版本开始):

— 2.9.0 —:

02/11/2015 – 添加了ZStringArray字符串解码器(感谢Righteous)

02/20/2015 – 修复了Krakatau反编译器/反汇编器/汇编器中存在的资源泄漏问题

02/21/2015 – 修复了正则表达式搜索功能中的错误

02/21/2015 – 在Bytecode Viewer API中添加了编译/反编译示例

02/21/2015 – 优化了反编译器,每一个视图都运行在各自的反编译线程中

02/21/2015 – 新增Janino编译器,用户可以在BCV中编译或反编译源代码

02/21/2015 – 为所有的反编译工具和反汇编工具添加了可编辑选项

02/21/2015 – 新增自动缓存资源图标的功能

01/21/2015 – 将EZ-Injection更名为File-Run,但是插件名仍然保留为EZ-Injection.

02/21/2015 – 新增了读取图片文件和检测纯ASCII文件的功能

02/22/2015 – 在Java编译器中添加了错误控制台

02/22/2015 – 当BCV关闭后,确保Python/Krakatau进程被关闭

02/22/2015 – 优化了工具的操作界面,使其对新手更加友好

02/22/2015 – 修复了文件导航搜索功能

02/23/2015 – 添加了对APK资源的支持

02/23/2015 – 新增了APKTool.jar的解码功能

02/23/2015 – 在标签菜单中添加了“关闭其他标签”选项

02/23/2015 – 为BCV添加了_install.bat和_uninstall.bat

02/23/2015 – 新增了可在字节码反编译结果中添加注释的功能(再次感谢Bibl)

02/23/2015 – 添加了对Java 8的支持

— 2.9.1 —:

02/24/2015 – 修复了第三个操作窗口中无法显示搜索按钮的问题

02/24/2015 – 修复了编译器中存在的某些功能性问题

— 2.9.2 —:

02/24/2015 – 修复了编译器中存在的问题

— 2.9.3 —:

02/28/2015 – 新增了拖拽即可打开文件的功能

02/28/2015 – 新增了Ctrl + w 快速关闭当前标签的功能

02/28/2015 – 将CFR更新为0_97.jar

02/28/2015 – 修复了反编译器中的并发问题

02/28/2015 – 添加了可通过鼠标滚轮控制图片大小的功能

02/28/2015 – 新增资源刷新功能

03/20/2015 – 将Dex2Jar更新至2.0

03/20/2015 – 将CFR更新为0_98.jar

— 2.9.4 —:

04/19/2015 – 为Krakatau反编译器/反汇编器/汇编器添加-0参数(感谢Storyyeller)

04/19/2015 – 为Krakatau反编译器添加-skip参数(感谢Storyyeller)

04/19/2015 – 将针对Python的警告信息修改为“建议使用PyPy”(感谢Storyyeller)

04/21/2015 – 重做“视图界面”

04/21/2015 – 将CFR更新为0_100.jar

04/21/2015 – 新增了CTRL + R 快速运行的功能

04/21/2015 – 新增了CTRL + S 快速保存文件的功能

04/21/2015 – 新增了CTRL + T 进行快速编译的功能

04/21/2015 – 新增了Krakatau可选库

04/21/2015 – “关于”界面新增对日期的支持,将会提供更多的信息

04/21/2015 – 将“视图界面”更名为“视图”

— 2.9.5 —:

05/01/2015 – 更新了统计功能(可查看全球有多少用户正在使用BCV)

— 2.9.6 —:

05/05/2015 – 修复了“关于”界面中的小问题

05/28/2015 – 新增JD-GUI反编译工具(十分感谢JD-GUI的作者)

05/28/2015 – 新增了自动刷新并保存编译代码的功能

05/28/2015 – 重命名了“文件”菜单下的“另存为”选项,以提供更多的信息

06/24/2015 – 修复了方法搜索器中的逻辑错误

06/26/2015 – 将Procyon和CFR升级到了最新版本

— 2.9.7 —:

07/02/2015 – 新增了字体大小调节功能

07/05/2015 – 修改了工具的启动界面

07/06/2015 – 将字体大小调节功能移动到了“视图”菜单下

07/06/2015 – 修复了插件无法获取到当前类文件的错误

07/07/2015 – 将APK转换器更改为Enjarify,取代之前的Dex2Jar

07/09/2015 – 修复了Krakatau反编译器中的进程泄漏问题

07/09/2015 – 解决了JD-GUI中出现的语法异常问题

07/09/2015 – 修复了资源无法刷新的问题

07/09/2015 – 修复了因文件名过长而无法打开类文件的问题

07/09/2015 – 新增了对小屏幕的启动界面支持

— 2.9.8 —:

07/19/2015 – 修复了Enjarify中存在的漏洞

07/20/2015 – 默认支持解码APK源文件

07/20/2015 – 增强了安全管理器的安全性,使其没那么容易受到攻击

07/20/2015 – 启动页面增加了CLI

07/21/2015 – 新增了对离线模式的支持,防止用户因无法连接github而导致工具发生异常

07/21/2015 – 新增了fatjar选项

07/21/2015 – 重写了文件系统,现在可以显示工具所加载的jar文件路径

07/21/2015 – 现在可以查看反编译器是否处于可编辑模式

07/22/2015 – 修复了一个小错误(感谢affffsdsd)

07/22/2015 – 为文件导航按钮添加了图标

07/22/2015 – 将反编译器的默认图形界面修改为JD-GUI

07/22/2015 – 添加了对Python 3.X的支持

07/22/2015 – 在文件系统的更新中,修复了Krakatau的jar输出漏洞

07/22/2015 – 提升了Krakatau反编译器加载大型文件的速度

07/22/2015 – 在文件导航面板中按下回车键后,会自动打开类文件

07/22/2015 – 快速文件搜索功能会再次打开目标文件

07/24/2015 – 在“文件”菜单下新增了“加载资源”标签

07/26/2015 – 切换了查看器之后,视图面板会自动刷新

07/26/2015 – 修复了Krakatau反编译工具

07/30/2015 – Affssdd修复了文件导航面板中的快速搜索类文件的功能

07/30/2015 – 修复了Krakatau反编译工具中的进程泄漏问题

本文翻译自安全客 原文链接。如若转载请注明出处。
分享到:微信
+10赞
收藏
WisFree
分享到:微信

发表评论

内容需知
合作单位
  • 安全客
  • 安全客
Copyright © 北京奇虎科技有限公司 三六零数字安全科技集团有限公司 安全客 All Rights Reserved 京ICP备08010314号-66