首页
社区
课程
招聘
[旧帖] 怎么通过FS寄存器找到TEB 0.00雪花
发表于: 2014-5-18 02:42 1861

[旧帖] 怎么通过FS寄存器找到TEB 0.00雪花

2014-5-18 02:42
1861
我在OD命令行输入"dd FS:[0]" 观察数据窗口,里面存放的是SEH结构,FS:[18]指向TIB结构,OD右上角看FS的虚拟地址也是7EFDD000,而这个地址也是指向TIB结构。但我查资料这个FS应该指向TEB才对,怎么好像是指向TIB的呢?

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 1443
活跃值: (96)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
TEB的开头部分就是TIB。
2014-5-18 04:47
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
TEB第一个字段指向TIB结构的首地址我知道的,现在的问题是FS指向的也是TIB结构首地址,而不是指向TIB首地址的指针,怎么找到TEB结构首地址呢?
2014-5-18 11:22
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
哦,TIB好像是在TEB里直接展开的,不是指针形式保存在TEB第一个字段
2014-5-18 11:54
0
雪    币: 30
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5

typedef struct _TEB {
NT_TIB Tib;
PVOID EnvironmentPointer;
CLIENT_ID Cid;
PVOID ActiveRpcInfo;
PVOID ThreadLocalStoragePointer;
PPEB Peb;
//...
}

typedef struct _NT_TIB
{
PEXCEPTION_REGISTRATION_RECORD ExceptionList;
PVOID StackBase;
PVOID StackLimit;
PVOID SubSystemTib;
union
{
PVOID FiberData;
ULONG Version;
};
PVOID ArbitraryUserPointer;
PNT_TIB Self;
} NT_TIB, *PNT_TIB;


個人理解如下:
FS:[0] = *(Address of FS Segment + 0)
       = *PEXCEPTION_REGISTRATION_RECORD
       = EXCEPTION_REGISTRATION_RECORD (即是 SEH Frame)
2014-5-19 21:41
0
游客
登录 | 注册 方可回帖
返回
//