Android逆向反编译之工具介绍

  • 傻瓜式操作图形化工具

    • Smali2JavaUI
      smali2java是一个将smali代码反编译成java代码的工具.什么是smali?smali是将Android字节码用可阅读的字符串形式表现出来的一种语言,可以称之为Android字节码的反汇编语言.使用baksmali或apktool可以将Android应用程序包(apk或jar)反编译为smali代码.smali2java工具基于apktool v1.5.0(baksmali v1.3.4)生成的smali文件,依赖于smali文件中的代码行数(.line关键字)和变量别名(.local关键字)等信息,可以最大程度还原原始的java代码.还原出的java代码将具有原始的变量命名,代码的顺序也与原始的java代码保持一致
    • 这里写图片描述

    • 使用方法简单,只需要点击文件,打开一个apk文件 或 一个smali文件即可

      这里写图片描述

    • 对于市面上一些没有混淆加固的APP,可以轻松的查看源码

      这里写图片描述

  • Android逆向助手

    • 像 Smali2JavaUI 一样操作简单,但功能更加强大

      这里写图片描述

    • 通过反编译apk,可以得到assets/res下的资源文件,查看布局文件,通过AndroidManifest.xml文件查找程序入口,从而进行逆向之静态分析和动态调试方法

      这里写图片描述

    • 还可通过提取dex文件,并转换成jar文件,再用jd工具打开jar包,像Smali2JavaUI可查看源码,相比之步骤多一点点

      这里写图片描述

    • 初次外还有其他一些重新签名等使用方法不一一介绍。

    • ApkToolkit

      主要功能跟Android逆向助手差不多

      这里写图片描述

  • 高级工具

  • APKToolKit APK改之理

    • 主要功能:
    • 可视化操作,全自动的反编译、编译、签名Apk。
    • 以树目录管理全部反编译得到的Apk资源文件,方便操作。
    • 内置代码编辑器,支持语法高亮显示,根据文件格式自动匹配相应语法;支持多文档同时编辑;也支持使用系统编辑器来编辑代码文件。
    • 内置基于文件内容的关键字或多行代码段的搜索、替换引擎,一键搜索替换,搜索结果以标签的形式分门别类;允许在指定搜索范围(整个工程或选中的文件或文件夹内搜索),支持正则表达式搜索和替换。搜索功能是Apk修改的一个重要工具,从此你不必借助其它第三方搜索工具。
    • 内置Google在线翻译引擎,支持实时翻译,支持所有Google支持的几十国语言对译,汉化更轻松。
    • 支持使用自己的keystore文件签名。
    • 自动识别图像资源,并提供该类资源的快捷替换功能,方便修改这类图片资源。
    • 内嵌Unicode、AscII互转工具,以方便硬编码的文字(如汉字)的搜索和汉化类修改。
    • 内置类似于系统cmd.exe的命令窗口,高手也可以手动直接输入各种命令来手动操作。
    • 所有操作步骤、操作结果都以良好的阅读格式输出在日志窗口,方便查看修改的历史记录。
    • 内置adb功能,包括使用adb向设备(或模拟器)安装、卸载修改后的apk进行测试,并嵌入adb log、ddms等功能监测修改apk的运行状况,以便于分析和查找错误。
    • 强大ADB LOG监视,ADB SHELL,CMD命令

      这里写图片描述

  • JEB工具

    • 可以检查交叉引用,重命名的方法,字段,类,代码和数据之间导航,做笔记,添加注释,以及更多。
    • 检查解压缩的资源和资产,证书,字符串和常量等。

      这里写图片描述

  • IDA Pro

    IDA是一种递归下降反汇编器。但是,为了提高递归下降过程的效率,IDA的开发者付出了巨大的努力,来为这个过程开发逻辑。为了克服递归下降的一个最大的缺点,IDA在区分数据与代码的同时,还设法确定这些数据的类型。虽然你在IDA中看到的是汇编语言形式的代码,但IDA的主要目标之一,在于呈现尽可能接近源代码的代码。此外,IDA不仅使用数据类型信息,而且通过派生的变量和函数名称来尽其所能地注释生成的反汇编代码。这些注释将原始十六进制代码的数量减到最少,并显著增加了向用户提供的符号化信息的数量。

    这里写图片描述


版权声明:本文为Sjim_原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。