博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android反编译后代码阅读
阅读量:5060 次
发布时间:2019-06-12

本文共 1233 字,大约阅读时间需要 4 分钟。

1.反编译

可以查看,这里不做介绍,这篇主要介绍如何阅读反编译后的java代码, 反编译出的java代码以smali的形式存在,这是一种类似于汇编的语言。android目前使用的是dalvik虚拟机,所以下面的叙述都是基于dalvik虚拟机字节码。

2. 正文

2.1 类型

dalvik字节码只有两种基本类型,即原始数据类型和引用类型。数组(Array)和对象(object)是引用类型,其余都是原始数据类型

2.1.1 原始数据类型可以用一个字符表示它们的类型,下面是它们的对应表

字母 类型
V void - can only be used for return types
Z boolean
B byte
S short
C char
I int
J long (64 bits)
F float
D double (64 bits)

2.1.2 对象类型

格式 Lpackage/name/ObjectName;

字段 意义
L object
package/name/ 表示包名
ObjectName 类型名
结束

举例说明(在java中的对应关系)

Ljava/lang/String; ---> java.lang.String

2.1.3 数组

格式 [I

字段 意义
[I int类型的一维数组
[[I int类型的二维数组

以此类推,几个[表示几维数组

举例说明(在java中的对应关系)

[I ---> int []

2.2 方法

格式.method [public] [static] methodName(param_list)return_type.end method注意:[]表是可以选,比如static可以没有,public可以是private举例:.method public CheckNetWorking()I.end method解析:以下是java代码public int CheckNetWorking(){}

2.3 Fields表示类的成员变量

举例:.field private static appid:Ljava/lang/String;解析:以下是java代码private static String appid;

2.4 寄存器(Registers)

寄存器包含本地变量和参数,本地变量从v0~v4一共5个,参数从p0~p2三个参数

Local Param
v0 the first local register
v1 the second local register
v2 p0 the first parameter register
v3 p1 the second parameter register
v4 p2 the third parameter register

3.参考资料

转载于:https://www.cnblogs.com/zjzyh/p/6601204.html

你可能感兴趣的文章
51nod 1018排序
查看>>
sqlite的坑
查看>>
digitalocean --- How To Install Apache Tomcat 8 on Ubuntu 16.04
查看>>
linux swoole
查看>>
An Easy Problem?! - POJ 2826(求面积)
查看>>
【题解】[P4178 Tree]
查看>>
Jquery ui widget开发
查看>>
css3实现循环执行动画,且动画每次都有延迟
查看>>
更改git仓库地址
查看>>
有标号DAG计数 [容斥原理 子集反演 组合数学 fft]
查看>>
Recipe 1.4. Reversing a String by Words or Characters
查看>>
Rule 1: Make Fewer HTTP Requests(Chapter 1 of High performance Web Sites)
查看>>
sql注入
查看>>
「破解」Xposed强
查看>>
Linux 平台下 MySQL 5.5 安装 说明 与 示例
查看>>
src与href的区别
查看>>
ABAP工作区,内表,标题行的定义和区别
查看>>
《xxx重大需求征集系统的》可用性和可修改性战术分析
查看>>
Python 中 创建类方法为什么要加self
查看>>
关于indexOf的使用
查看>>