Начинающий
Начинающий
- Статус
- Оффлайн
- Регистрация
- 19 Окт 2025
- Сообщения
- 34
- Реакции
- 1
Короче, решил делать софт на раст, если оффсеты нашел, то декрипт не нашел, я решил искать его по этому гайду -
и получается, я ввел свой hex + get_imagebase(), получил адресс, перешел по сабу, нажал ф5 и меня перекинуло в псевдокод (пусть будет А)
вот если надо
я перешел по сабу который был в переменной v1 ( v1 = sub_180C106E0(*(_QWORD *)(*(_QWORD *)(v0 + 184) + 8i64), qword_18D04CA58); ) и перешел в другой псевдокод (будем называть псевдокод-б) и что-же нам теперь делать? в этом гайде написано что это и есть ваш декрипт, но я чет нихуя не понял, кто из них мой декрипт и как его сделать, кстати для чего этот декрипт ваще нужен, для чего его юзают и самое главное - как?
вот если надо псевдокод-б
Пожалуйста, авторизуйтесь для просмотра ссылки.
(noad)и получается, я ввел свой hex + get_imagebase(), получил адресс, перешел по сабу, нажал ф5 и меня перекинуло в псевдокод (пусть будет А)
вот если надо
__int64 sub_180BF4590()
{
__int64 v0; // rax
__int64 v1; // rax
int v2; // ebx
__int64 v3; // rdi
__int64 result; // rax
__int64 v5; // rcx
__int64 v6; // rdi
__int64 v7; // rbx
__int64 v8; // rcx
__int64 v9; // rax
__int64 v10; // rdx
__int64 v11; // rbx
unsigned __int8 v12; // al
bool v13; // al
signed __int32 v14[10]; // [rsp+0h] [rbp-58h] BYREF
__int128 v15; // [rsp+28h] [rbp-30h] BYREF
__int64 v16[4]; // [rsp+38h] [rbp-20h] BYREF
if ( !byte_18D32D893 )
{
sub_18060F100(&qword_18D0683C0);
_InterlockedOr(v14, 0);
sub_18060F100(&qword_18D04CA70);
_InterlockedOr(v14, 0);
sub_18060F100(&qword_18D04CA58);
_InterlockedOr(v14, 0);
sub_18060F100(&basenetwork);
_InterlockedOr(v14, 0);
sub_18060F100(&unk_18D04CAC8);
_InterlockedOr(v14, 0);
sub_18060F100(&qword_18D04CA38);
_InterlockedOr(v14, 0);
sub_18060F100(&qword_18D04CA48);
_InterlockedOr(v14, 0);
byte_18D32D893 = 1;
}
v15 = 0i64;
v0 = basenetwork;
if ( !*(_DWORD *)(basenetwork + 224) )
{
il2cpp_runtime_class_init_0(basenetwork);
v0 = basenetwork;
}
v1 = sub_180C106E0(*(_QWORD *)(*(_QWORD *)(v0 + 184) + 8i64), qword_18D04CA58);
if ( !v1 )
sub_1805A5350();
v15 = *(_OWORD *)sub_184462100(v16, v1, 0i64);
v16[0] = 0i64;
v16[1] = (__int64)&v15;
while ( 1 )
{
v2 = ++DWORD2(v15);
v3 = v15;
if ( !(_QWORD)v15 )
sub_1805A5350();
result = qword_18D04CA38;
v5 = *(_QWORD *)(qword_18D04CA38 + 32);
if ( (*(_BYTE *)(v5 + 309) & 1) == 0 )
result = sub_180647F30(v5);
if ( v2 >= *(_DWORD *)(v3 + 24) )
break;
v6 = v15;
v7 = SDWORD2(v15);
if ( !(_QWORD)v15 )
sub_1805A5350();
v8 = *(_QWORD *)(qword_18D04CA48 + 32);
if ( (*(_BYTE *)(v8 + 309) & 1) == 0 )
sub_180647F30(v8);
v9 = *(_QWORD *)(v6 + 16);
if ( !v9 )
sub_1805A5350();
if ( (unsigned int)v7 >= *(_DWORD *)(v9 + 24) )
sub_1805A5360();
v10 = *(_QWORD *)(v9 + 8 * v7 + 32);
if ( v10 )
{
v12 = *(_BYTE *)(qword_18D04CA70 + 304);
v13 = *(_BYTE *)(*(_QWORD *)v10 + 304i64) >= v12
&& *(_QWORD *)(*(_QWORD *)(*(_QWORD *)v10 + 200i64) + 8i64 * v12 - 8) == qword_18D04CA70;
v11 = 0i64;
if ( v13 )
v11 = v10;
}
else
{
v11 = 0i64;
}
if ( !*(_DWORD *)(qword_18D0683C0 + 224) )
il2cpp_runtime_class_init_0(qword_18D0683C0);
if ( !byte_18D36A248 )
{
sub_18060F100(&qword_18D0683C0);
_InterlockedOr(v14, 0);
byte_18D36A248 = 1;
}
if ( !*(_DWORD *)(qword_18D0683C0 + 224) )
il2cpp_runtime_class_init_0(qword_18D0683C0);
if ( !byte_18D36A1DA )
{
sub_18060F100(&qword_18D0683C0);
_InterlockedOr(v14, 0);
byte_18D36A1DA = 1;
}
if ( !v11 )
sub_1805A5350();
if ( !*(_DWORD *)(qword_18D0683C0 + 224) )
il2cpp_runtime_class_init_0(qword_18D0683C0);
if ( !*(_QWORD *)(v11 + 16) )
sub_180BF4F10(v11, 0i64);
}
return result;
}
{
__int64 v0; // rax
__int64 v1; // rax
int v2; // ebx
__int64 v3; // rdi
__int64 result; // rax
__int64 v5; // rcx
__int64 v6; // rdi
__int64 v7; // rbx
__int64 v8; // rcx
__int64 v9; // rax
__int64 v10; // rdx
__int64 v11; // rbx
unsigned __int8 v12; // al
bool v13; // al
signed __int32 v14[10]; // [rsp+0h] [rbp-58h] BYREF
__int128 v15; // [rsp+28h] [rbp-30h] BYREF
__int64 v16[4]; // [rsp+38h] [rbp-20h] BYREF
if ( !byte_18D32D893 )
{
sub_18060F100(&qword_18D0683C0);
_InterlockedOr(v14, 0);
sub_18060F100(&qword_18D04CA70);
_InterlockedOr(v14, 0);
sub_18060F100(&qword_18D04CA58);
_InterlockedOr(v14, 0);
sub_18060F100(&basenetwork);
_InterlockedOr(v14, 0);
sub_18060F100(&unk_18D04CAC8);
_InterlockedOr(v14, 0);
sub_18060F100(&qword_18D04CA38);
_InterlockedOr(v14, 0);
sub_18060F100(&qword_18D04CA48);
_InterlockedOr(v14, 0);
byte_18D32D893 = 1;
}
v15 = 0i64;
v0 = basenetwork;
if ( !*(_DWORD *)(basenetwork + 224) )
{
il2cpp_runtime_class_init_0(basenetwork);
v0 = basenetwork;
}
v1 = sub_180C106E0(*(_QWORD *)(*(_QWORD *)(v0 + 184) + 8i64), qword_18D04CA58);
if ( !v1 )
sub_1805A5350();
v15 = *(_OWORD *)sub_184462100(v16, v1, 0i64);
v16[0] = 0i64;
v16[1] = (__int64)&v15;
while ( 1 )
{
v2 = ++DWORD2(v15);
v3 = v15;
if ( !(_QWORD)v15 )
sub_1805A5350();
result = qword_18D04CA38;
v5 = *(_QWORD *)(qword_18D04CA38 + 32);
if ( (*(_BYTE *)(v5 + 309) & 1) == 0 )
result = sub_180647F30(v5);
if ( v2 >= *(_DWORD *)(v3 + 24) )
break;
v6 = v15;
v7 = SDWORD2(v15);
if ( !(_QWORD)v15 )
sub_1805A5350();
v8 = *(_QWORD *)(qword_18D04CA48 + 32);
if ( (*(_BYTE *)(v8 + 309) & 1) == 0 )
sub_180647F30(v8);
v9 = *(_QWORD *)(v6 + 16);
if ( !v9 )
sub_1805A5350();
if ( (unsigned int)v7 >= *(_DWORD *)(v9 + 24) )
sub_1805A5360();
v10 = *(_QWORD *)(v9 + 8 * v7 + 32);
if ( v10 )
{
v12 = *(_BYTE *)(qword_18D04CA70 + 304);
v13 = *(_BYTE *)(*(_QWORD *)v10 + 304i64) >= v12
&& *(_QWORD *)(*(_QWORD *)(*(_QWORD *)v10 + 200i64) + 8i64 * v12 - 8) == qword_18D04CA70;
v11 = 0i64;
if ( v13 )
v11 = v10;
}
else
{
v11 = 0i64;
}
if ( !*(_DWORD *)(qword_18D0683C0 + 224) )
il2cpp_runtime_class_init_0(qword_18D0683C0);
if ( !byte_18D36A248 )
{
sub_18060F100(&qword_18D0683C0);
_InterlockedOr(v14, 0);
byte_18D36A248 = 1;
}
if ( !*(_DWORD *)(qword_18D0683C0 + 224) )
il2cpp_runtime_class_init_0(qword_18D0683C0);
if ( !byte_18D36A1DA )
{
sub_18060F100(&qword_18D0683C0);
_InterlockedOr(v14, 0);
byte_18D36A1DA = 1;
}
if ( !v11 )
sub_1805A5350();
if ( !*(_DWORD *)(qword_18D0683C0 + 224) )
il2cpp_runtime_class_init_0(qword_18D0683C0);
if ( !*(_QWORD *)(v11 + 16) )
sub_180BF4F10(v11, 0i64);
}
return result;
}
я перешел по сабу который был в переменной v1 ( v1 = sub_180C106E0(*(_QWORD *)(*(_QWORD *)(v0 + 184) + 8i64), qword_18D04CA58); ) и перешел в другой псевдокод (будем называть псевдокод-б) и что-же нам теперь делать? в этом гайде написано что это и есть ваш декрипт, но я чет нихуя не понял, кто из них мой декрипт и как его сделать, кстати для чего этот декрипт ваще нужен, для чего его юзают и самое главное - как?
вот если надо псевдокод-б
__int64 __fastcall sub_180C106E0(__int64 a1, __int64 a2)
{
__int64 *v4; // rdx
int v5; // r8d
int v6; // eax
__int64 v7; // rcx
__int64 target_0; // rax
__int64 v9; // rcx
__int64 v10; // rbp
__int64 v11; // rbx
__int64 v12; // rsi
int v13; // eax
__int64 v14; // rax
signed __int64 v15; // rcx
__int64 v16; // rbx
__int64 v18; // rax
__int64 v19; // rbx
__int64 v20; // rax
__int64 v21; // rax
__int64 v22; // [rsp+20h] [rbp-28h] BYREF
signed __int64 v23; // [rsp+50h] [rbp+8h] BYREF
if ( !*(_QWORD *)(a2 + 56) )
sub_180647FB0(a2);
if ( !a1 )
sub_1805A5350();
if ( *(_BYTE *)(a1 + 16) )
{
v4 = &v22;
v22 = *(_QWORD *)(a1 + 24);
v5 = 2;
do
{
v6 = *(_DWORD *)v4;
v4 = (__int64 *)((char *)v4 + 4);
*((_DWORD *)v4 - 1) = (((v6 + 783275142) << 23) | ((unsigned int)(v6 + 783275142) >> 9)) + 300813965;
--v5;
}
while ( v5 );
v7 = v22;
}
else
{
v7 = 0i64;
}
v23 = v7;
if ( !v7 )
return 0i64;
target_0 = il2cpp_gchandle_get_target_0();
v9 = *(_QWORD *)(a2 + 56);
v10 = target_0;
v11 = *(_QWORD *)(v9 + 8);
if ( (*(_BYTE *)(v11 + 309) & 1) == 0 )
v11 = sub_180647F30(*(_QWORD *)(v9 + 8));
if ( v10 )
{
v12 = sub_180595E10(v10, v11);
if ( !v12 )
sub_1805A5AC0(v10, v11);
}
else
{
v12 = 0i64;
}
v13 = *(_DWORD *)(a1 + 32) + 1;
*(_DWORD *)(a1 + 32) = v13;
if ( v13 >= 1000 )
{
*(_DWORD *)(a1 + 32) = 0;
v14 = sub_1884DAE90(v12, 2i64, 0i64);
v15 = v23;
v16 = v14;
if ( !v23 || _InterlockedCompareExchange64(&v23, 0i64, v23) != v15 )
{
v18 = sub_1805A4F30(&qword_18D04C048);
v19 = sub_1805A5300(v18);
v20 = sub_1805A4F30(&qword_18D0141C0);
sub_188620870(v19, v20, 0i64);
v21 = sub_1805A4F30(aJ);
sub_1805A5310(v19, v21);
}
il2cpp_gchandle_free_0();
HIDWORD(v22) = HIDWORD(v16);
LODWORD(v22) = ((((_DWORD)v16 - 300813965) << 9) | ((unsigned int)(v16 - 300813965) >> 23)) - 783275142;
HIDWORD(v22) = (((HIDWORD(v22) - 300813965) << 9) | ((unsigned int)(HIDWORD(v22) - 300813965) >> 23)) - 783275142;
*(_QWORD *)(a1 + 24) = v22;
}
return v12;
}
{
__int64 *v4; // rdx
int v5; // r8d
int v6; // eax
__int64 v7; // rcx
__int64 target_0; // rax
__int64 v9; // rcx
__int64 v10; // rbp
__int64 v11; // rbx
__int64 v12; // rsi
int v13; // eax
__int64 v14; // rax
signed __int64 v15; // rcx
__int64 v16; // rbx
__int64 v18; // rax
__int64 v19; // rbx
__int64 v20; // rax
__int64 v21; // rax
__int64 v22; // [rsp+20h] [rbp-28h] BYREF
signed __int64 v23; // [rsp+50h] [rbp+8h] BYREF
if ( !*(_QWORD *)(a2 + 56) )
sub_180647FB0(a2);
if ( !a1 )
sub_1805A5350();
if ( *(_BYTE *)(a1 + 16) )
{
v4 = &v22;
v22 = *(_QWORD *)(a1 + 24);
v5 = 2;
do
{
v6 = *(_DWORD *)v4;
v4 = (__int64 *)((char *)v4 + 4);
*((_DWORD *)v4 - 1) = (((v6 + 783275142) << 23) | ((unsigned int)(v6 + 783275142) >> 9)) + 300813965;
--v5;
}
while ( v5 );
v7 = v22;
}
else
{
v7 = 0i64;
}
v23 = v7;
if ( !v7 )
return 0i64;
target_0 = il2cpp_gchandle_get_target_0();
v9 = *(_QWORD *)(a2 + 56);
v10 = target_0;
v11 = *(_QWORD *)(v9 + 8);
if ( (*(_BYTE *)(v11 + 309) & 1) == 0 )
v11 = sub_180647F30(*(_QWORD *)(v9 + 8));
if ( v10 )
{
v12 = sub_180595E10(v10, v11);
if ( !v12 )
sub_1805A5AC0(v10, v11);
}
else
{
v12 = 0i64;
}
v13 = *(_DWORD *)(a1 + 32) + 1;
*(_DWORD *)(a1 + 32) = v13;
if ( v13 >= 1000 )
{
*(_DWORD *)(a1 + 32) = 0;
v14 = sub_1884DAE90(v12, 2i64, 0i64);
v15 = v23;
v16 = v14;
if ( !v23 || _InterlockedCompareExchange64(&v23, 0i64, v23) != v15 )
{
v18 = sub_1805A4F30(&qword_18D04C048);
v19 = sub_1805A5300(v18);
v20 = sub_1805A4F30(&qword_18D0141C0);
sub_188620870(v19, v20, 0i64);
v21 = sub_1805A4F30(aJ);
sub_1805A5310(v19, v21);
}
il2cpp_gchandle_free_0();
HIDWORD(v22) = HIDWORD(v16);
LODWORD(v22) = ((((_DWORD)v16 - 300813965) << 9) | ((unsigned int)(v16 - 300813965) >> 23)) - 783275142;
HIDWORD(v22) = (((HIDWORD(v22) - 300813965) << 9) | ((unsigned int)(HIDWORD(v22) - 300813965) >> 23)) - 783275142;
*(_QWORD *)(a1 + 24) = v22;
}
return v12;
}