干掉N卡截图
char __fastcall sub_18003BB90(__int64 a1, __int64 a2, char a3)
{
unsigned int v3; // edi
__int64 v5; // rcx
_BYTE *v7; // rdx
int v8; // eax
__int64 v9; // rax
__int64 v10; // rax
unsigned __int64 v11; // rcx
__int64 v12; // rcx
__int64 v13; // rax
__int64 v14; // rdi
__int64 v15; // rcx
int v16; // eax
__int64 v17; // rdx
__int64 v18; // r8
unsigned int v19; // ecx
int v20; // eax
_BYTE *v21; // rax
__int64 v22; // rcx
__int64 v24; // rcx
_QWORD v25[3]; // [rsp+20h] [rbp-48h] BYREF
int v26; // [rsp+38h] [rbp-30h]
__int64 v27; // [rsp+3Ch] [rbp-2Ch]
__int64 v28; // [rsp+44h] [rbp-24h]
int v29; // [rsp+4Ch] [rbp-1Ch]
__int64 v30; // [rsp+50h] [rbp-18h]
__int64 v31; // [rsp+58h] [rbp-10h]
v3 = 0;
v25[0] = 131136LL;
v27 = 0LL;
v5 = *(_QWORD *)(a1 + 24);
v28 = 0LL;
v30 = 0LL;
if ( !v5 || !*(_QWORD *)(a1 + 16) )
{
sub_180001C21(v5);
sub_180008F6C(7LL, "CSPCaptureScreenShot::CaptureScreenShot: Invalid m_D3DResInfo");
return 0;
}
v7 = *(_BYTE **)a1;
v25[2] = *(_QWORD *)(a1 + 16);
v8 = *(_DWORD *)(a1 + 36);
v25[1] = v5;
LOBYTE(v5) = 0;
v26 = v8;
v29 = *(_DWORD *)(a1 + 48);
if ( *v7 )
{
v9 = *((_QWORD *)v7 + 2);
if ( !v9 )
goto LABEL_9;
}
else
{
v9 = *((_QWORD *)v7 + 1);
if ( !v9 )
{
LABEL_40:
sub_180001C21(v5);
sub_180008F6C(7LL, "CSPCaptureScreenShot::CaptureScreenShot: MMF GetSize() Failed %d", v3);
return 0;
}
}
v10 = *(_QWORD *)(v9 + 8);
if ( v10 )
{
v3 = *(_DWORD *)(v10 + 16);
LOBYTE(v5) = v3 != 0;
}
LABEL_9:
if ( !(_BYTE)v5 )
goto LABEL_40;
v11 = (unsigned int)(*(_DWORD *)(a1 + 60) * *(_DWORD *)(a1 + 64) * *(_DWORD *)(a1 + 68)) + 163LL;
if ( v3 < v11 )
{
sub_180001C21(v11);
sub_180008F6C(7LL, "CSPCaptureScreenShot::CaptureScreenShot: MMF Invalid MMF or MMF size ");
return 0;
}
if ( *v7 )
{
v12 = *((_QWORD *)v7 + 2);
if ( v12 )
{
v13 = sub_180005524(v12, 0LL, 0LL);
goto LABEL_16;
}
LABEL_38:
sub_180001C21(v12);
sub_180008F6C(7LL, "CSPCaptureScreenShot::CaptureScreenShot: Screenshot MMFLocked data pointer failed %d", 0);
return 0;
}
v12 = *((_QWORD *)v7 + 1);
if ( !v12 )
goto LABEL_38;
v13 = sub_180003E22(v12, 0LL, 0LL);
LABEL_16:
v14 = v13;
if ( !v13 )
goto LABEL_38;
v15 = *(_QWORD *)(a1 + 8);
v31 = v13 + 160;
v16 = (*(__int64 (__fastcall **)(__int64, _QWORD *))(*(_QWORD *)v15 + 8LL))(v15, v25);
if ( v16 )
{
dword_1802BFF70 = 7;
if ( dword_1802C00AC <= 7 )
sub_18000A1D7(
&off_1802BFF60,
"CSPCaptureScreenShot::CaptureScreenShot: Screenshot Capture Frame Failed(0x%X)",
v16);
if ( *(_QWORD *)a1 )
{
sub_180009CC3(a1);
return 0;
}
return 0;
}
v19 = *(_DWORD *)(a1 + 32);
if ( v19 == 9 )
{
v20 = v30;
if ( (_DWORD)v30 == 113 )
{
LODWORD(v30) = 10;
}
else
{
v17 = 87LL;
if ( (_DWORD)v30 == 21 )
v20 = 87;
LODWORD(v30) = v20;
}
}
*(_DWORD *)(v14 + 24) = v19;
*(_DWORD *)(v14 + 20) = v29;
*(_DWORD *)(v14 + 8) = HIDWORD(v27);
*(_QWORD *)(v14 + 12) = v28;
*(_DWORD *)(v14 + 28) = v30;
if ( v19 >= 0xC0 && (((v19 & 0xFFFFFFF0) + 0x80000000) & 0xEFFFFFFF) != 0 )
{
if ( a3 )
{
v21 = *(_BYTE **)a1;
if ( **(_BYTE **)a1 )
{
v22 = *((_QWORD *)v21 + 2);
if ( v22 )
{
sub_180006280(v22, v17, v18);
return 1;
}
}
else
{
v24 = *((_QWORD *)v21 + 1);
if ( v24 )
{
sub_18000B780(v24, v17, v18);
return 1;
}
}
}
}
else
{
sub_180009CC3(a1);
}
return 1;
}
关键
.text:000000018003BCA4 call qword ptr [rax+8]
当然也可以替换自己的截图 v13 v14为共享内存的buffer