欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]逆向汇编面试常问知识点

[原创]逆向汇编面试常问知识点

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 除指令

5.5 MUL 乘法

    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)以及产生的函数名的清理方法。

总结如下:

7.    函数调用初始化操作

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

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

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功