能力值:
(RANK:15 )
|
-
-
2 楼
思路是对的,并且已经有厂在用了 https://bbs.pediy.com/thread-254276.htm
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
はつゆき
思路是对的,并且已经有厂在用了
https://bbs.pediy.com/thread-254276.htm 谢谢佬回复,这个帖我看过了,还是有点区别的,鹅厂是通过映射cr3来比较的,我这个并没有映射
最后于 2022-11-13 22:57
被yuyuaqwq编辑
,原因:
|
能力值:
( LV9,RANK:289 )
|
-
-
4 楼
char __fastcall LocatePteBase()
{
unsigned __int64 v0; // rax
__int64 v1; // krB8_8
__int64 i; // krA0_8
__int64 index; // rsi
__int64 v4; // r9
PHYSICAL_ADDRESS v5; // krA0_8
unsigned __int64 v6; // krD8_8
__int64 v7; // krE8_8
unsigned __int64 v8; // kr30_8
unsigned int v9; // eax
char v10; // cf
ULONG v11; // krB0_4
void *v14; // rax
__int64 v15; // r9
unsigned __int64 VA; // [rsp+44h] [rbp+8h]
v0 = __readcr3();
v1 = v0 & 0xFFFFFFFFFF000i64;
for ( i = 1i64; ; i = index + 1 )
{
VA = (i | ((i | ((i | (i << 9)) << 9)) << 9)) << 12;
index = i;
v5 = (*(PHYSICAL_ADDRESS (__stdcall **)(PVOID))pfnMmGetPhysicalAddress_0)((PVOID)VA);
v6 = VA;
v7 = v4;
if ( v5.QuadPart == v1 )
break;
if ( (unsigned __int64)(index + 1) >= 0x200 )
{
SelfAutoIndex = 0i64;
goto LABEL_11;
}
}
if ( (VA >> 47) & 1 != 0 )
v6 = VA | 0xFFFF000000000000ui64;
SelfAutoIndex = index;
if ( !v6
|| (PteBase = (index << 39) | 0xFFFF000000000000ui64,
PdeBase = (index << 30) | (index << 39) | 0xFFFF000000000000ui64,
PpeBase = (index << 21) | PdeBase,
PxeBase = (index << 21) | PdeBase | (index << 12),
PxeBase != v6) )
{
LABEL_11:
v11 = -536870756;
LABEL_12:
DbgPrintEx(6, v11, L"\n", v7);
return 0;
}
return 1;
} 来自vgk
|
能力值:
( LV9,RANK:280 )
|
-
-
5 楼
咋回事儿啊
char __fastcall LocatePteBase()
{
unsigned __int64& ...
vgk不是基本上全v了,这段咋找到的?
|
能力值:
( LV3,RANK:35 )
|
-
-
6 楼
MmPteBase 不是有这玩意吗
|
能力值:
(RANK:15 )
|
-
-
7 楼
|
能力值:
( LV9,RANK:289 )
|
-
-
8 楼
hzqst
vgk不是基本上全v了,这段咋找到的?
全程序vm还原 就像be
|
能力值:
( LV10,RANK:160 )
|
-
-
9 楼
mark
|
|
|