首页
社区
课程
招聘
求助]处理TP的debugpoint清零遇到的问题T T大牛快来帮帮我啊
发表于: 2012-5-23 11:41 5581

求助]处理TP的debugpoint清零遇到的问题T T大牛快来帮帮我啊

2012-5-23 11:41
5581
#ifndef PASSDEBGUPORT
#define PASSDEBGUPORT



PDRIVER_OBJECT QpDriverObject;

int GetTesSafeBassAddr()
{
	PLDR_DATA_TABLE_ENTRY pLE=(PLDR_DATA_TABLE_ENTRY)QpDriverObject->DriverSection; 
	PLIST_ENTRY p=pLE->InLoadOrderLinks.Blink;

	while(true)
	{
		PLDR_DATA_TABLE_ENTRY pStatusPLE=(PLDR_DATA_TABLE_ENTRY)p;

		if (pStatusPLE==pLE)
		{
			break;
		}

		p=pStatusPLE->InLoadOrderLinks.Blink;				

		if (pStatusPLE->DllBase!=0)
		{
			PWCH str[256];
			RtlMoveMemory(str,pStatusPLE->BaseDllName.Buffer,pStatusPLE->BaseDllName.Length);

			if (RtlCompareMemory(str,L"TesSafe.sys",pStatusPLE->BaseDllName.Length)==pStatusPLE->BaseDllName.Length)	
			{
				//DbgPrint("模块基址=%x\n",pStatusPLE->DllBase);
				return (int)pStatusPLE->DllBase;
			}

		}
	}

	return 0;
}

void DuiKangQingLing()
{
	int addr=GetTesSafeBassAddr();
	if (addr!=0)
	{
		DbgPrint("基地址==%x\n",addr);
	}

	char szDgbugProtFeature[10]={(char)0x8b,(char)0x40,(char)0x04,
								(char)0x8d,(char)0x77,(char)0xb8,
								(char)0x03,(char)0x06,(char)0x33,
								(char)0xc9};

	int nCallAddr;
	nCallAddr=SearchFeature(addr+0x4800,szDgbugProtFeature,10);
	if (nCallAddr)
	{
		nCallAddr-=14;
		DbgPrint("DgBugProt清零处==%X\n",nCallAddr);
		__asm
		{
			MOV EAX,nCallAddr
			MOV EAX,[EAX]
			MOV EAX,[EAX]
			MOV [EAX+4],0x70
		}
		DbgPrint("偏移==%X",nCallAddr);
	}
	else
	{
		DbgPrint("未找到DgBugProt清零处的特征码\n");
	}
}


#endif


已经能显示模块信息了,就是一进图或者一下断,游戏出现调试错误
win7 32位系统
大牛快来帮帮我啊

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 2291
活跃值: (2185)
能力值: (RANK:400 )
在线值:
发帖
回帖
粉丝
2
Hook 处理了?
2012-5-23 12:44
0
雪    币: 167
活跃值: (190)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
我知道哪里出问题了
2012-5-23 12:59
0
游客
登录 | 注册 方可回帖
返回
//