android逆向面试一般问什么意思,[原创]逆向汇编面试常问知识点

本文介绍了汇编语言的基础概念,包括基本单位如位、字节等,寄存器的作用及分类,标志寄存器的功能,栈操作的过程,以及常见的汇编指令如call/ret、cmp等的使用方法。此外还探讨了函数调用约定及其重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.单元、位和字节

bit,byte,word,dword

2.寄存器

常用寄存器

EBP质指针寄存器

ESP:栈指针寄存器

EIP:指令指针寄存器,控制着指令执行的位置

8个通用寄存器:EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP

3.EFALGS

PUSHFD;将EFLAGS寄存器的值压入栈

POPFD;从栈中弹出值存入EFLAGS寄存器

4.常用标志寄存器

z:(零标志)

O:(溢出标志)

C:进位标志

IV:段偏移

栈操作:push:先修改对应的栈指针esp减,然后再存放数据,相当于sub esp,4    ;

mov  [esp],eax             pop:先取出对应的数据,然后esp增加,相当于mov eax,[esp]; add esp,4

5.指令

windows中大多数数据都是小端序存储格式。

常问的指令

5.1 call/ret指令的执行过程

ret指令,可以将ret指令理解为pop ip; retf 指令理解为 pop ip ,pop cs

call指令,将下一条指令所在的地址压入栈,然后转移

5.2指令 cmp(比较),比较指令会影响标志位

5.3DEC自减

5.4DIV 除指令

756f4ee4c91ab124c533a1c3e44c2815.png

5.5 MUL 乘法

f782b5bef34f706a954389d4ee721b46.png

5.6inc:自加

5.7 int 指令是调用程序对硬件控制,不同的值对应不同的功能。

5.8常用的跳转指令

ja,jb,jbe,jc,je,jl,jle,jmp,jz,,je jne,jg,jge,jl,jle,jne,等

5.9 nop(无操作)

5.10 or(逻辑或)

5.11 rep,repe,repz,repne,repne

5.12 TEST

test 操作符、操作符

执行与and指令相同的功能,但是不存储操作数.

5.13 xor (异或)

6.    函数调用约定

函数调用约定,就是对函数调用的一个约定和规范,描述了函数参数是怎么传递的和谁清理堆栈的。决定了函数参数的压栈顺序,2)由调用者还是被调用者清理堆栈,3)以及产生的函数名的清理方法。

总结如下:

f7c85ccd26ee4ce4c2cbbbbae0a34f1d.png

7.    函数调用初始化操作

除了push ebp mov ebp,esp;之外还会对变量进行初始化操作

8.目前想到的是这些,以后面试问到再补充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值