-
-
[已解决]NtUserCallOneParam函数挂钩问题
-
发表于:
2010-1-15 03:29
7889
-
[已解决]NtUserCallOneParam函数挂钩问题
CCOUNTED_UNICODE_STRING "KeAttachProcess", uniFuncName, 4
invoke MmGetSystemRoutineAddress, addr uniFuncName
mov pKeAttachProcess,eax
请高人赐教,这3行可否获得KeAttachProcess 的地址 ?
还有下面这段代码 ,帮忙分析下有些地方我不懂
ULONG GetShadowTableAddress()
{
ULONG dwordatbyte,i;
PUCHAR p = (PUCHAR) KeAddSystemServiceTable;
for(i = 0; i < PAGE_SIZE; i++, p++)// 往下找一页 指针递增1
{
__try
{
dwordatbyte = *(PULONG)p;
}
__except(EXCEPTION_EXECUTE_HANDLER)
{
return FALSE;
}
if(MmIsAddressValid((PVOID)dwordatbyte))
{
if(memcmp((PVOID)dwordatbyte, KeServiceDescriptorTable, 16) == 0)//对比前16字节 相同则找到
{
if((PVOID)dwordatbyte == KeServiceDescriptorTable)//排除自己
{
continue;
}
return dwordatbyte;
}
}
}
return FALSE;
}
ULONG GetSSDTCurAddr(IN ULONG Index,BOOL IsShadow)
{
ULONG ServiceCount,BaseAddr;
if (KeServiceDescriptorTableShadow!=NULL)
{
ServiceCount=KeServiceDescriptorTableShadow[IsShadow?1:0].NumberOfServices;
BaseAddr = (ULONG)KeServiceDescriptorTableShadow[IsShadow?1:0].ServiceTableBase;
if (Index>=ServiceCount) return FALSE;
return *(PULONG)(BaseAddr+Index * 4);
}
return FALSE;
}
//......
//调用
//处理SSDT/SSSDT函数
NtUserShowWindow=(PVOID)GetSSDTCurAddr(NtUserShowWindow_Index,TRUE);
其中 __try 和__except(EXCEPTION_EXECUTE_HANDLER) 这2句代码什么意思?用汇编怎么表示?
小弟刚弄驱动,大侠们见笑了
[课程]Android-CTF解题方法汇总!