初识 android 反/回编译
2021-02-17 本文已影响0人
MickCaptain
[toc]
Android 反编译
Android 反编译环境准备
- 配置JAVA JDK 环境变量
- 安装android killer
- 配置android killer jdk 和 sdk 目录
- 反编译和回编译 异常以及解决办法
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.pngsmail 文件介绍
举例
.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 简单反编译分析