冥界3大法王 发表于 2022-2-3 18:45

老魔头,快来帮助哥们把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);
}
}

冥界3大法王 发表于 2022-2-3 19:09

哪位大神看得懂IDA?
这句话不明白。

大大泡泡糖121 发表于 2022-2-4 09:44

又看到你了,老哥,可惜我看不懂这代码……

李杨 发表于 2022-2-4 14:22

看不懂的 骚操作{:1_893:}

yzitcast843 发表于 2022-2-4 19:08

c++ 运算符重载,一般是上面那个哥们说的,v26=v25,为什么跳到哪里我们也不清楚,你都是老手了,前面那一堆模板初始化不需要看,

QAQ~QL 发表于 2022-2-4 21:40

冥界3大法王 发表于 2022-2-3 19:09
哪位大神看得懂IDA?
这句话不明白。

看不懂就直接IDA动调就好了{:1_907:}
页: [1]
查看完整版本: 老魔头,快来帮助哥们把V14干掉