初识 android 反/回编译

2021-02-17  本文已影响0人  MickCaptain
[toc]

Android 反编译

Android 反编译环境准备

  1. 配置JAVA JDK 环境变量
  2. 安装android killer
  3. 配置android killer jdk 和 sdk 目录
  4. 反编译和回编译 异常以及解决办法
Exception in thread "main" java.lang.NoClassDefFoundError

回编译失败如上检查apk tool 版本, 以及jdk 版本, 版本不对下载最新的apktool 和 jdk 版本


image.png image.png
apk tool 下载链接 :
https://ibotpeaches.github.io/Apktool/

Android 反编译实践

Android apk 结构
image.png
smail 文件介绍

举例

.class public Lcom/example/myapplication/MainActivity;
.super Landroidx/appcompat/app/AppCompatActivity;
.source "MainActivity.java"


# direct methods
.method public constructor <init>()V
    .locals 0

    .line 7
    invoke-direct {p0}, Landroidx/appcompat/app/AppCompatActivity;-><init>()V

    return-void
.end method


# virtual methods
.method protected onCreate(Landroid/os/Bundle;)V
    .locals 1
    .param p1, "savedInstanceState"    # Landroid/os/Bundle;

    .line 11
    invoke-super {p0, p1}, Landroidx/appcompat/app/AppCompatActivity;->onCreate(Landroid/os/Bundle;)V

    .line 12
    const v0, 0x7f0b001c

    invoke-virtual {p0, v0}, Lcom/example/myapplication/MainActivity;->setContentView(I)V

    .line 13
    return-void
.end method

当前类的信息
.class 单签类相对路径
.super 父类
.source 文件名称

变量
.field

方法
.method 方法开始
.line 行数
.param p1 第一个参数
.local 局部变量使用的寄存器数量
.prologue 正式开始的位置
invoke-direct 成员方法
invoke-virtual 映射方法,虚方法
invoke-super 父类方法
.end method 方法结束

注解
.annotation

接口
.implement

Android 反编译总结

该文档用于apk 简单反编译分析

上一篇下一篇

猜你喜欢

热点阅读