不白不白 发表于 2011-8-6 08:48:22

关于过TP的Debugport的问题

最近好多朋友研究TP,但编译出的结果令人不满意。。。本人愚钝,在文章这里的函数得到的结果错误,原文作者用了自定义函数如下:
//////////////////////////////////////////////////////////////////////
//名称:MyEnumKernelModule
//功能:枚举内核模块
//参数:str:内核模块名称
//      moduleadd:该模块地址[传出]
//      modulesie:该模块大小[传出]
//返回:
//////////////////////////////////////////////////////////////////////
NTSTATUS MyEnumKernelModule(IN CHAR* str,OUT ULONG *moduleadd,OUT ULONG *modulesie)
{
NTSTATUS status = STATUS_SUCCESS;
ULONG   n       = 0;
ULONG   i       = 0;
PSYSTEM_MODULE_INFORMATION_ENTRY   module = NULL;
PVOID   pbuftmp = NULL;
ANSI_STRING    ModuleName1,ModuleName2;
BOOLEANtlgstst= FALSE;//如果找到了指定模块则设置为TRUE

//利用11号功能枚举内核模块
status = ZwQuerySystemInformation(11, &n, 0, &n);

//申请内存
pbuftmp = ExAllocatePool(NonPagedPool, n);

//再次执行,将枚举结果放到指定的内存区域
status = ZwQuerySystemInformation(11, pbuftmp, n, NULL);

module = (PSYSTEM_MODULE_INFORMATION_ENTRY)((PULONG )pbuftmp + 1 );

//初始化字符串
RtlInitAnsiString(&ModuleName1,str);
//
n       = *((PULONG)pbuftmp );
for ( i = 0; i < n; i++ )
{
    RtlInitAnsiString(&ModuleName2,&module.ImageName);
    //DbgPrint("%d\t0x%08X 0x%08X %s\n",module.LoadOrderIndex,module.Base,module.Size,module.ImageName);

    if (RtlCompareString(&ModuleName1,&ModuleName2,TRUE) == 0)
    {
      DbgPrint("MyEnumKernelModule:%s:%0X \n",ModuleName2.Buffer,module.Base);
      *moduleadd= module.Base;
      *modulesie= module.Size;
      tlgstst = TRUE;
      break;
    }
}
ExFreePool(pbuftmp);
if tlgstst == FALSE)
{
    returnFAILED_TO_OBTAIN_FUNCTION_ADDRESSES;
}
return status;
}
但返回结果有错误。。。有可能是系统函数 ZwQuerySystemInformation被HOOK了吧。。。。为此,我只能用其他方法了。。
得到驱动的信息方法很多。。。我用的是遍历链表的方法,只要TP不断链表就一直有用。。。但在找很多文章里得到的结果依然错误。。。。。我就自己修改了部分。。终于OK了。。。至于特征码部分我并没有试验。。。我最不喜欢DNF的幼稚游戏。。。。也就没有TP,以下是新的 枚举内核模块 函数代码(遍历双向链表,学过c语言的人都会):**** Hidden Message *****
。。。。。。。。。。。。。。。。。。。。。。
本文参照了其他的一些代码。。如有误。。清大家指正。。。。

bjchang888 发表于 2011-10-31 10:10:10

支持看流星社区

hapi 发表于 2011-11-1 02:53:11

回复 1# 不白不白


    嗯,这个还像

xiaoli 发表于 2011-11-19 20:40:11

感谢楼主的无私奉献

botao1995 发表于 2020-2-24 10:34:58

看看。。。。
页: [1]
查看完整版本: 关于过TP的Debugport的问题