汇编的学习
- cpu工作的原理
cpu由总线调用位置寄存器中存储的内存的位置,并读取内存,识别内存中的代码与数据,执行代码,调用数据,以此完成程序的调用。
cpu指认被cs:ip指向的内存为代码
- 8086中的寄存器
ax bx cx dx 通用寄存器
cs ds es ss 代码段寄存器
ip 指令指针寄存器
cs:ip 组合可视作指令指示器 且要指向指令所属的首地址r
- 基本的命令
1.mov 传送指令,用于对通用寄存器的赋值
例如 mov ax,123 将123的值赋予ax通用寄存器
2.jmp 2AE3:3 将2AE3赋给cs 将3赋给ip 于是访问的内存位置就为2AE33H
修改ip的值 可用jmp + 某一合法寄存器 jum ax 即将ax的值赋给ip寄存器
3.add ax,bx 加法运算将ax+bx 的值赋给ax
4.sub 减法运算 sub ax,bx 将ax-bx 的值赋给ax
- pus
- DOS命令
查看内存的内容 D
查看修改CPU寄存器的内容 R
修改内存的内容 E
将内存中的内容解释为机器指令和对应的汇编指令 T
以汇编的形式向内存中写入指令 A
DS[address] ds寄存器用于储存要访问数据的段地址
mov ax(al) ,[] 可以用于传输某个内存位置的数据字(字节)
- 栈
出栈 PUSH
入栈 POP
ss 栈顶寄存器
sp 栈偏移记录
IDA权威指南
有了一些汇编的基础了smali
每一个smali文件头三行都包含
.class <访问权限> [修饰关键字]<类名>
.super <父类名>
.source<源文件名>
public private protected 访问权限