环境安装

安装Win10虚拟机

直接拷虚拟机即可
所需软件 :
vs、wdk、MSVRC、x64dbg
在安装vs时需要安装SDK及MSVC,
参考文献 Windows驱动开发之入门篇(一).

X64基础(主要应用X64dbg)

64位机的通用寄存器与虚拟地址空间
驱动学习 day1
x64dbg运行示例
和OD类似
驱动学习 day1

优先使用32位扩展(因为对32位寄存器的写操作(包括运算结果),会对相应的64位寄存器的高32位清0或置1)

如 rax= ffff000012345678,
mov eax,1
则rax=0000000000000001

xor eax, eax 与xor rax, rax效果是一样的,但是xor eax, eax比xor rax,rax指令多占了一个字节(48)
驱动学习 day1图中第一个是mov rax,-1机器自动生成的,第二个是 自己改变机器码达到同样的效果,可以明显看到字节较长
驱动学习 day1
注意 : 对eax进行写操作,会将高32位自动清零,但如果是ax,al进行操作则不影响高32位; 在使用立即数时,机器会优先选择指令较短的(在不涉及到高32 位的情况下,即立即数不超过32位)

寻址优先使用相对偏移寻址

各种jmp指令

IDA的错误之CS/DS
IDA反汇编时,计算偏移会使用当前代码段的相对偏移,即CS,但这是错误的,应是相对DS段的偏移

EB 是short jmp 后面加一字节的相对偏移,范围是-128 ~127
EBFE机器码 死循环
E9 后面是四字节的相对偏移,是上下2GB的范围(2GB也不算大,在64位机中也经常不够用)
FF25 01 23 45 67 是跳转到 [ 下条指令地址 + 0x67452301]
FF 24 25 01 02 03 04 跳转到 [04 03 02 01] 但是这个指令有点废

相关文章:

  • 2022-12-23
  • 2021-07-22
  • 2021-08-25
  • 2021-10-31
  • 2021-05-14
  • 2021-07-24
  • 2021-07-20
  • 2021-11-27
猜你喜欢
  • 2021-09-08
  • 2021-11-20
  • 2021-12-03
  • 2021-12-03
  • 2021-04-05
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案