Android反编译及二次打包操作方法

Android反编译及二次打包基础操作

目录

前言

基本概念

用到的工具

工具下载

工具使用


前言

最近遇到一个NFC的项目, 因为网上的相关资料实在是太少, 手上的最有效资料只有一个厂家的apk, 只好尝试进行反编译; 自己操作的时候整理记录了反编译的简单操作方法, 本文将一些基本的概念和操作分享出来.

基本概念

  • Dalvik VM

    Google 专门为 Android 平台设计的一套虚拟机

    区别于标准 Java 虚拟机 JVM 的 class 文件格式, Dalvik VM 拥有专属的 DEX 可执行文件格式和指令集代码

  • Smali

    Smali是用于Dalvik的反汇编程序实现,汇编工具(将Smali代码汇编为dex文件)为smali.jar, 与之对应的baksmali.jar则是反汇编程序(下载地址

    Smali 的优势在于, 提供反汇编功能的同时, 也提供了打包反汇编代码重新生成 dex 的功能, 因此 Smali被广泛地用于 APP 广告注入, 汉化和破解, ROM 定制等方面

    语法规范参考: Smali基础知识

    Smali文件也可转成java文件, 点击下载 smali2java

用到的工具

  • apktool

    反编译, 重新打包工具;

    Smali文件, 布局文件, 资源文件均可通过此工具获得

  • dex2jar-2.0

    源码反编译工具, 顾名思义, 将classes.dex反编译成jar文件

  • jd-gui-windows-1.1.0

    查看源码的工具, 可打开jar文件查看代码

工具使用

  • 使用 apktool 反编译;

    进入相关目录, 执行命令

    apktool.bat d -f [name.apk] -o [输出目录]

    如我在项目中执行了如下命令:

    apktool.bat d -f app-releaseNFC_ClientV1.apk -o app-releaseNFC_ClientV1

    之后解析结果如下

       

  • 使用 apktool 重新打包;

    执行命令

    apktool.bat b [文件目录]

    如我在项目中执行了如下命令:

    apktool.bat b app-releaseNFC_ClientV1

  • 使用dex2jar-2.0 获取源码

    将文件后缀改成压缩文件格式(.zip .rar等)进行解压, 得到文件如下

    classes.dex由源码编译打包而成, 同时也是我们所需要的源码包, 下面我们先使用工具获取到jar包

    • 将该文件复制到dex2jar工具的文件夹下

           

    • 执行该命令编译出jar包

      dex2jar.bat classes.dex

              

  • 使用jd-gui-windows-1.1.0 查看源码

    直接使用jd-gui打开该jar包即可查看源码

      

注意, 如果需要对源码做简单的修改重新打包, 在class文件中找到要修改的部分以后, 到smali中修改再打包即可

猜你喜欢

转载自blog.csdn.net/smile_shaco/article/details/83211779