zoukankan      html  css  js  c++  java
  • win32asm FS段寄器

    .386
      .model  flat,stdcall
      option  casemap  :none

      include    e:\masm32\include\windows.inc
      include    e:\masm32\include\user32.inc
      includelib  e:\masm32\lib\user32.lib
      include    e:\masm32\include\kernel32.inc
      includelib  e:\masm32\lib\kernel32.lib
      .const

      .data
        szT    db  'Title',0
        szY    db  'You Are Passed',0
        szN    db  'I Find U',0
      .code
    start:
      assume fs:Nothing
      Mov eax,fs:18h;teb地址
      mov eax,[eax+30h];peb地址
      mov eax,[eax+68h];peb结构里的GlobalFlag
      .if eax!=0
     invoke MessageBox,NULL,addr szN,addr szT,MB_OK
      .else
     invoke MessageBox,NULL,addr szY,addr szT,MB_OK
      .endif
     
      invoke  ExitProcess,0
      
    end  start

     

    FS寄存器指向当前活动线程的TEB结构(线程结构)
    偏移 说明
    000 指向SEH链指针
    004 线程堆栈顶部
    008 线程堆栈底部
    00C SubSystemTib
    010 FiberData
    014 ArbitraryUserPointer
    018 FS段寄存器在内存中的镜像地址
    020 进程PID
    024 线程ID
    02C 指向线程局部存储指针
    030 PEB结构地址(进程结构)
    034 上个错误号


    得到KERNEL32.DLL基址的方法
    assume fs:nothing ;打开FS寄存器
    mov eax,fs:[30h] ;得到PEB结构地址
    mov eax,[eax + 0ch] ;得到PEB_LDR_DATA结构地址
    mov esi,[eax + 1ch] ;InInitializationOrderModuleList
    lodsd ;得到KERNEL32.DLL所在LDR_MODULE结构的InInitializationOrderModuleList地址
    mov edx,[eax + 8h] ;得到BaseAddress,既Kernel32.dll基址

     

  • 相关阅读:
    C#操作Windows控制面板
    WPF打印控件内容
    LINQ函数
    通过实现System.IComparable接口的CompareTo方法对两个类进行比较
    泛型和约束
    CSS样式基础总结
    C#调用百度高精度IP定位API通过IP获取地址
    软件下载路径
    RNN学习资料
    mysql 不能插入中文记录
  • 原文地址:https://www.cnblogs.com/mokliu/p/2138863.html
Copyright © 2011-2022 走看看