Начинающий
Начинающий
- Статус
- Оффлайн
- Регистрация
- 13 Ноя 2022
- Сообщения
- 132
- Реакции
- 3
я делаю с нуля external (первый раз) и у меня проблема с декриптом i2cpp get hendl можете сказать как получить декрипт (вот код с ида)
Код:
void *__fastcall il2cpp_gchandle_free_0(unsigned int a1)
{
void *result; // rax
__int64 v2; // rdx
__int64 v3; // rbx
char *v4; // rdi
__int64 v5; // rbp
__int64 v6; // r8
int v7; // ecx
__int64 v8; // rax
_QWORD *v9; // rdx
result = &ill2cppgethandle_18C18B5D0;
v2 = (a1 & 7) - 1;
v3 = a1 >> 3;
v4 = (char *)&ill2cppgethandle_18C18B5D0 + 0x28 * v2;
if ( (unsigned int)v2 <= 3 )
{
result = (void *)il2cpp_baselib::Baselib_Thread_GetCurrentThreadId((il2cpp_baselib *)(5 * v2));
v5 = (__int64)result;
if ( result == (void *)qword_18C18F9B8 )
{
v6 = (unsigned int)++dword_18C18F9C0;
}
else
{
if ( _InterlockedExchangeAdd(&dword_18C18F978, 0xFFFFFFFF) <= 0 )
result = (void *)il2cpp_baselib::Baselib_SystemSemaphore_Acquire(qword_18C18F970);
qword_18C18F9B8 = v5;
v6 = 1i64;
dword_18C18F9C0 = 1;
}
if ( (unsigned int)v3 < *((_DWORD *)v4 + 4) )
{
result = *(void **)v4;
v7 = *(_DWORD *)(*(_QWORD *)v4 + 4 * ((unsigned __int64)(unsigned int)v3 >> 5));
if ( _bittest(&v7, v3 & 0x1F) )
{
v8 = *((_QWORD *)v4 + 1);
v9 = (_QWORD *)(v8 + 8 * v3);
if ( (unsigned __int8)v4[20] > 1u )
{
*v9 = 0i64;
}
else if ( *v9 )
{
sub_180722B50(v8 + 8 * v3, v9, v6);
}
result = *(void **)v4;
*(_DWORD *)(4 * ((unsigned __int64)(unsigned int)v3 >> 5) + *(_QWORD *)v4) = *(_DWORD *)(*(_QWORD *)v4
+ 4
* ((unsigned __int64)(unsigned int)v3 >> 5)) & ~(1 << (v3 & 0x1F));
LODWORD(v6) = dword_18C18F9C0;
}
}
if ( (int)v6 > 0 )
{
if ( (_DWORD)v6 == 1 )
{
qword_18C18F9B8 = 0i64;
dword_18C18F9C0 = 0;
return (void *)sub_18067DDA0(&qword_18C18F970);
}
else
{
dword_18C18F9C0 = v6 - 1;
}
}
}
return result;
}