求教 DKOM出了点问题
本帖最后由 HoviDelphic 于 2010-7-20 22:15 编辑最近用PB写了个DKOM 读写内存用FsWalker写的驱动里面的
编译运行后在XP sp2/3运行正常
在Windows Server 2003 Enterprise Edition运行蓝屏。。。偏移量已经动态获取了啊
后来尝试改0x00这个偏移是通用的吧。。。。他还蓝 请问为什么呢
代码在下面
btw:TA在这里都当上版主了 恭喜呵呵 偶然发现这个论坛的
【最后修改:本版版主;修改原因:删除某个已经过时的名字】 Windows 2003 EPROCESS结构在各个SP都是不同的,你可以到这里查询:
http://www.msuiche.net/msdn/
另外修改EPROCESS+0x0的保护方式是最不稳定的,蓝屏很正常。 个人认为动态获得PID的偏移并修改PID值是比较稳定的方法。
动态获取PID偏移的代码在网上有不少。 呵呵 谢谢TA了 我回去改改让他兼容Win7 回复 5# 倒霉蛋儿
现在没必要用DKOM了吧,随便HOOK点什么函数不是很随便的事? hook很费事。。。。要hook openprocesse/thread duphandle。。。。而且很容易被结束 修改线程类型为“系统线程”最没有副作用的,“系统线程”的值是0x10。 饿 请问下把&H10改成什么值呢? 回复 9# 倒霉蛋儿
无语。。。
是把ETHREAD + CROSS_THREAD_FLAGS的值甚至为0x10。。。
CROSS_THREAD_FLAGS在XP下的偏移是0x248,其他系统各不相同,但可以动态获取。。。 本帖最后由 Tesla.Angela 于 2010-7-21 12:25 编辑
好人做到底,连代码一起给您找来了:
//Get CROSS_THREAD_FLAGS
ULONG GetThreadFlagsOffset()
{
UCHAR *cPtr, *pOpcode;
ULONG Length;
USHORT Offset;
for (cPtr = (PUCHAR)PsTerminateSystemThread; cPtr < (PUCHAR)PsTerminateSystemThread + 0x100; cPtr += Length)
{
Length = SizeOfCode(cPtr, &pOpcode);
if (!Length) break;
if (*(USHORT *)pOpcode == 0x80F6) //f6804802000010 test byte ptr ,10h
{
Offset=*(USHORT *)((ULONG)pOpcode+2);
return Offset;//break;
}
}
return 0;
}
需要LDasm反汇编引擎。 饿懂了跟炉子那个killme一样呗? 本帖最后由 Tesla.Angela 于 2010-7-21 13:35 编辑
是的。。。
不过要你动态确定CROSS_THREAD_FLAGS而已。
另外,没有记错的话,XP下修改线程类型为系统线程没有任何副作用,WIN7下修改线程类型为系统线程会导致无法创建新进程。
如果修改PID、TID,副作用就很大了,最大的副作用的蓝屏。。。 Zzzians(syf)以前还提出过修改ProcessLock、ThreadLock,你自己试试看。。。 另外说一句,“本网站最菜的人”就是Zzzians(syf)。 看神仙们聊天......... 回复 17# 马大哈
汗,俺还没有死呢。 回复 18# HoviDelphic
;P
页:
[1]