文档章节

win32asm FS段寄器

M
 Mok
发布于 2016/06/20 09:39
字数 286
阅读 66
收藏 0

3 月,跳不动了?>>>

.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基址

 

© 著作权归作者所有

M

Mok

粉丝 5
博文 313
码字总数 165627
作品 0
武汉
技术主管
私信 提问
加载中

评论(0)

常见反调试手段及其规避方法(一)-IsDebuggerPresent

软件中会使用各种手段防止Craker调试程序,为此我们必须了解常见的反调试技术的原理及规避方法。 调试器:OllyDbg 环境:win7 64位真机 首先我们打开这个程序,是可以正常打开的 使用OD载入目...

simpower
2019/05/06
64
0
windows内存分段

1.3.2 Windows的内存管理 在这一节中,读者可以解决初学Win32汇编的两个大疑问: ● Win32汇编中,每个程序都可以用4 GB的内存吗? ● Win32汇编源代码中为什么看不到CS,DS,ES和SS等段寄存器的...

zray4u
2016/06/15
73
0
long mode 下的段寄存器

DS ES SS 在长模式里直接装载空选择子即可!LDS LES POP ES POP DS这些类型的指令在长模式里 被废除,装填DS ES SS 只能用mov ds,ax 、ret、iret等指令。 xor eax,eax mov ds,ax mov es,...

lgj1107
2017/08/11
31
0
opencv学习 --- FileStorage类使用注意事项

FileStorage类是OpenCV中用来进行文件操作的封装类,可以对XML,YAML,txt甚至doc文件进行读写操作。在使用opencv时经常需要对特征数据等进行保存,这时候通常会选择XML文件或者YAML文件。xml...

hairuiJY
昨天
0
0
中国科技大学网络视频课程软件设计模式(自主模式)

中国科技大学网络视频课程软件设计模式(自主模式) 课程简介 本课程为中国科学技术大学软件学院软件工程专业选修课,学分为3;预修课程有《软件工程》/《UML建模语言》/《Java编程语言》/《...

dragonscroll
2018/01/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

为什么只能在头文件中实现模板? - Why can templates only be implemented in the header file?

问题: Quote from The C++ standard library: a tutorial and handbook : 引用来自C ++标准库:教程和手册 : The only portable way of using templates at the moment is to implement t......

javail
31分钟前
9
0
Gradle 6 针对已有的构建如何创建一个构建扫描

有关构建扫描的定义为: 构建扫描(build scan)是一个中心化并且可以共享的构建记录。这个构建记录通常能够告诉在构建中发生了什么并且为什么会发生。 通过应用构建扫描插件到你的项目中,你...

honeymoose
32分钟前
11
0
C语言动态内存分配:(一)malloc/free的实现及malloc实际分配/释放的内存

一、malloc/free概述 malloc是在C语言中用于在程序运行时在堆中进行动态内存分配的库函数。free是进行内存释放的库函数。 1、函数原型 #include <stdlib.h> void *malloc( size_t size ); v...

shzwork
今天
17
0
什么是JavaBean? - What is a JavaBean exactly?

问题: I understood, I think, that a "Bean" is a Java class with properties and getters/setters. 我认为,“ Bean”是具有属性和getter / setter的Java类。 As much as I understand,......

技术盛宴
今天
27
0
深圳援鄂最后一批工作人员归来,88万元关爱金发放至85人

中国公益在线3月31日深圳讯 深圳援鄂最后一批工作人员归来......深圳市民政局、深圳市卫健委和深圳市慈善会发起了“深爱战疫天使基金”项目,联合龙华区慈善会和 永贤慈善基金会,进行第二次...

传承天下融媒体中心
今天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部