老魔头,快来帮助哥们把V14干掉
void __fastcall sub_140120AB0(_DWORD *a1){
__int64 v2; // rax
__int64 v3; // rbx
__int64 v4; // r14
__int64 v5; // r8
int v6; // ebx
_OWORD *v7; // rax
__int64 v8; // r8
__int64 v9; // rbx
__int64 v10; // rcx
_QWORD *v11; // r15
unsigned int v12; // ebx
unsigned int v13; // er14
const wchar_t *v14; // rdx
const wchar_t *v15; // rdx
__int64 v16; // rbx
char v17; // BYREF
__int128 v18; // BYREF
__int128 *v19; //
_OWORD *v20; //
char v21; // BYREF
__int64 v22; //
char v23; // BYREF
__int64 v24; //
_QWORD *v25; //
const wchar_t *v26; // BYREF
char v27; // BYREF
char v28; // BYREF
char v29; // BYREF
__int128 v30; // BYREF
__int64 v31; // BYREF
__m128i v32; //
__int128 v33; // BYREF
__int128 v34; // BYREF
v34 = 0i64;
v2 = (*(__int64 (__fastcall **)(__int64 *, char *))(qword_1403843A8 + 48))(&qword_1403843A8, v21);
TEXTFUNCLIB::CreatePatternMatcher(&v34, 2i64, 0i64, v2);
v3 = v22;
if ( v22 )
{
if ( _InterlockedExchangeAdd((volatile signed __int32 *)sub_140003A60(v22 + 8), 0xFFFFFFFF) == 1 )
{
(*(void (__fastcall **)(__int64))(*(_QWORD *)v3 + 8i64))(v3);
if ( _InterlockedExchangeAdd((volatile signed __int32 *)sub_140003A60(v3 + 12), 0xFFFFFFFF) == 1 )
(*(void (__fastcall **)(__int64))(*(_QWORD *)v3 + 16i64))(v3);
}
}
ATL::CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t>>>::CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t>>>(v29);
ATL::CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t>>>::CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t>>>(v27);
ATL::CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t>>>::CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t>>>(&v26);
ATL::CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t>>>::CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t>>>(v28);
if ( CWnd::UpdateData((CWnd *)a1, 1) )
{
v4 = 0i64;
v31 = 0i64;
v32 = _mm_load_si128((const __m128i *)&xmmword_140279B60);
CWnd::GetWindowTextW(a1 + 2826, v29);
CWnd::GetWindowTextW(a1 + 3986, v27);
v18 = 0i64;
LOBYTE(v5) = a1 != 0;
v6 = (*(__int64 (__fastcall **)(_QWORD, char *, __int64, __int64, char, __int128 *, char *, _QWORD))(*(_QWORD *)v34 + 16i64))(
v34,
v29,
v5,
1i64,
1,
v18,
v28,
0i64);
sub_14005C4A0(v18);
if ( v6 < 0 )
{
ATL::CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t>>>::operator=(&v26, v28);
goto LABEL_25;
}
v33 = 0i64;
v7 = operator new(0x50ui64);
v20 = v7;
if ( v7 )
{
*v7 = 0i64;
v7 = 0i64;
v7 = 0i64;
v7 = 0i64;
v7 = 0i64;
v4 = sub_14007FA00(v7, v27, 1i64);
}
sub_140082710(&v33, v4);
if ( (*(unsigned int (__fastcall **)(_QWORD, __int128 *))(*(_QWORD *)v34 + 8i64))(v34, &v33) )
{
if ( qword_140384770 )
{
v15 = (const wchar_t *)(*(__int64 (__fastcall **)(__int64, __int64))(*(_QWORD *)qword_140384770 + 88i64))(
qword_140384770,
247i64);
goto LABEL_22;
}
}
else
{
if ( (*(unsigned __int8 (__fastcall **)(_QWORD))(*(_QWORD *)v33 + 48i64))(v33) )
{
LOBYTE(v8) = 1;
v9 = *(_QWORD *)(*(__int64 (__fastcall **)(_QWORD, char *, __int64))(*(_QWORD *)v33 + 56i64))(v33, v23, v8);
v24 = v9;
sub_1400805E0(v23);
v30 = 0i64;
v25 = *(_QWORD **)(v9 + 8);
v19 = &v30;
*(_QWORD *)&v30 = *v25;
v10 = v25;
*((_QWORD *)&v30 + 1) = v10;
if ( v10 )
_InterlockedExchangeAdd((volatile signed __int32 *)sub_140003A60(v10 + 8), 1u);
v11 = (_QWORD *)ATL::CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t>>>::Mid(v27, v17);
v12 = *(_DWORD *)(v30 + 12);
v13 = *(_DWORD *)(v30 + 8);
if ( qword_140384770 )
v14 = (const wchar_t *)(*(__int64 (__fastcall **)(__int64, __int64))(*(_QWORD *)qword_140384770 + 88i64))(
qword_140384770,
245i64);
else
v14= L"<no language>";
ATL::CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t>>>::Format(&v26, v14 , v13, v12, *v11);
ATL::CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t>>>::~CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t>>>(v17);
sub_140084120(&v30);
goto LABEL_23;
}
if ( qword_140384770 )
{
v15 = (const wchar_t *)(*(__int64 (__fastcall **)(__int64, __int64))(*(_QWORD *)qword_140384770 + 88i64))(
qword_140384770,
246i64);
LABEL_22:
ATL::CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t>>>::operator=(&v26, v15);
LABEL_23:
sub_140080820(&v33);
LABEL_25:
CWnd::SetWindowTextW((CWnd *)(a1 + 1666), v26);
CWnd::SetFocus((CWnd *)(a1 + 3986));
sub_140004730(&v31);
goto LABEL_26;
}
}
v15 = L"<no language>";
goto LABEL_22;
}
LABEL_26:
ATL::CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t>>>::~CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t>>>(v28);
ATL::CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t>>>::~CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t>>>(&v26);
ATL::CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t>>>::~CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t>>>(v27);
ATL::CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t>>>::~CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t>>>(v29);
v16 = *((_QWORD *)&v34 + 1);
if ( *((_QWORD *)&v34 + 1)
&& _InterlockedExchangeAdd((volatile signed __int32 *)sub_140003A60(*((_QWORD *)&v34 + 1) + 8i64), 0xFFFFFFFF) == 1 )
{
(*(void (__fastcall **)(__int64))(*(_QWORD *)v16 + 8i64))(v16);
if ( _InterlockedExchangeAdd((volatile signed __int32 *)sub_140003A60(v16 + 12), 0xFFFFFFFF) == 1 )
(*(void (__fastcall **)(__int64))(*(_QWORD *)v16 + 16i64))(v16);
}
} 哪位大神看得懂IDA?
这句话不明白。
又看到你了,老哥,可惜我看不懂这代码…… 看不懂的 骚操作{:1_893:} c++ 运算符重载,一般是上面那个哥们说的,v26=v25,为什么跳到哪里我们也不清楚,你都是老手了,前面那一堆模板初始化不需要看, 冥界3大法王 发表于 2022-2-3 19:09
哪位大神看得懂IDA?
这句话不明白。
看不懂就直接IDA动调就好了{:1_907:}
页:
[1]