-
-
[旧帖]
[求助]在研究"堕落天才"2007年的一篇文章,遇到问题,求高人指点.
0.00雪花
-
发表于:
2014-4-22 15:44
1498
-
[旧帖] [求助]在研究"堕落天才"2007年的一篇文章,遇到问题,求高人指点.
0.00雪花
摘抄如下:
在windbg.exe中我们就看得比较清楚,KeServiceDescriptorTable中就只有第一项有数据,其他都是0。其中804e3d20就是
KeServiceDescriptorTable.ntoskrnel.ServiceTableBase,服务函数个数为0x11c个。我们再看看804e3d20地址里是什么东西:
lkd> dd 804e3d20
804e3d20 80587691 805716ef 8057ab71 80581b5c
804e3d30 80599ff7 80637b80 80639d05 80639d4e
804e3d40 8057741c 8064855b 80637347 80599539
804e3d50 8062f4ec 8057a98c 8059155e 8062661f
如上,80587691 805716ef 8057ab71 80581b5c 这些就是系统服务函数的地址了。比如当我们在ring3调用OpenProcess时,进入sysenter的ID是0x7A(XP SP2),然后系统查KeServiceDescriptorTable,大概是这样KeServiceDescriptorTable.ntoskrnel.ServiceTableBase(804e3d20) + 0x7A * 4 = 804E3F08,
然后804E3F08 ->8057559e 这个就是OpenProcess系统服务函数所在
问题在最后一句话(红色显示部分), 8057559e 这个值如何得到的呢?
[课程]FART 脱壳王!加量不加价!FART作者讲授!