安卓逆向基础

Dalvik VM的原理
*
jvm运行的是java字节码 ,DVM运行的是Dalvik字节码
*
Dalvik可执行文件(.dex)体积更小
*
虚拟机架构不同,JVM基于栈,DVM基于寄存器

安卓逆向基础_第1张图片

寄存器
*
DVM寄存器都是32bit 与名称无关
*
J.D类型 需要相邻2个寄存器
*
对象类型:Ljava/lang/String; = java.lang.String
*
数组 [l=int[]] [[l=int[]]

主要的反编译器
*
BakSmali
*
Dedexer

编译smali文件
java -jar smali.jar -o classes.dex HelloWorld.smali

执行程序
上传到手机:adb push classes.dex /data/local/
执行程序: adb shell dalvikvm -cp /data/local/classes.dex HelloWorld

1、这句代码(compl-float v0,v2,v2)表达的是什么指令?

比较指令
跳转指令
数据转换指令
数据运算指令
A
2、代码中(new-instance v1,Ljava/lang/stringBuilder;)操作指令的表达的是?

new一个v1
new一个ljava
new一个lang/stringBuilder放到v1
new一个stringBuilder放到v1
C?
3、反编译smali文件里面(.registers)函数表达的意思是?

数组
寄存器
参数为空
C

1、看以下Dalvik字节码表达正确的有 Hello.foo:(II)I add-int v0,v3,v4 sub-int v1,v3,v4 mul-int/2addr v0,v1 return v0

A Hello.foo:(II)I是表示定义字符型命名
B sub-int v1,v3,v4 v1,v3相减的结果存在v4里面
C mul-int/2addr v0,v1 mul把v0和v1里面的内容做了一个int类型乘法
D Hello.foo:(II)I (II)I括号里面参数都是int类型的I返回值也是int类型
BC?

2、(Android系统中,)java代码反编译之后那种字节码方便于读取

Java字节码
jvm字节码
Dalvik字节码
.class字节码

C
3、下列属于DVM与JVM的区别的是____(多选)。

字节码
执行文件体积
架构
执行文件格式
ABCD

1、使用哪款反编译工具查看jar文件内容?

Java Decompiler
ApkToolKit
jdk
smali.jar
D
2、ApkToolKit工具可以把dex转换成jar包?



A

3、smali.jar编译工具哪个命令可以编译smali为dex文件?

java -jar smali.jar -o HelloWorld.smali classes.dex
java -jar smali.jar -o classes.dex HelloWorld.smali
java -jar -o classes.dex HelloWorld.smali
java -jar -export classes.dex HelloWorld.smali

B

你可能感兴趣的:(视频学习,学习笔记,网络安全,逆向工程)