zoukankan      html  css  js  c++  java
  • fs寄存器

    1、fs寄存器在Ring0中指向一个称为KPCR的数据结构,即FS段的起点与KPCR结构对齐。

    2、对于Ring3的应用程序,fs:[0]的地址指向的是TEB结构,这个结构的开头是一个NT_TIB结构,NT_TIB结构的0x18偏移处是一个Self指针,指向这个结构自身,也就是指向TEB结构的开头。
    TEB结构的0x30偏移是一个指向PEB的指针。PEB又是一个结构,这个结构的0x2偏移处是一个UChar,名叫BeingDebugged,当进程被调试时,此值为1,未被调试时此值为0

    因此以下代码逐行执行后的结果:
    mov eax,dword ptr fs:[18h];eax=TEB的指针
    mov eax,dword ptr [eax+30h];eax=PEB的指针
    movzx eax,byte ptr [eax+2h];eax=PEB.BeingDebugged(byte扩展为dword)

    MASM中默认是fs:error,也就是默认不能使用fs段寄存器,因此要在masm中使用它时必须先assume fs:nothing
    fs是段寄存器,即保存段选择子,对应的地址通过GDT或LDT中的相应项目来决定其范围和使用权限等。

    最后回到IsDebuggerPresent,它就是通过检查PEB中的BeingDebugged字段来确定进程是否处于被调试状态的,因此修改此字段可以直接影响此API的返回值。

    /***********************************************

    看书看原版,原汁原味。

    不会英文?没关系,硬着头皮看下去慢慢熟练,才会有真正收获。

    没有原书,也要网上找PDF来看。

    网上的原版资料多了去了,下载东西也到原始下载点去看看。

    你会知其所以然,呵呵。

    ***********************************************/

  • 相关阅读:
    Kafka基本命令
    Vue右键菜单
    ES6
    display: table-cell;的妙用
    关于git的总结
    js 数组的增删改查
    es6 import export 引入导出变量方式
    关于electron的跨域问题,有本地的图片的地址,访问不了本地的图片
    input type= file 如何更改自定义的样式
    vue.js 常用语法总结(一)
  • 原文地址:https://www.cnblogs.com/dpblue/p/4850661.html
Copyright © 2011-2022 走看看