Гайд Some stuff for client.dll reversing cs2

Участник
Статус
Оффлайн
Регистрация
6 Апр 2021
Сообщения
338
Реакции[?]
207
Поинты[?]
113K
Код:
// for the guys who are interesed in revesing client.dll from cs2

sub_180B69770 = set_memory_values
sub_180B90C90 = sse_search
sub_1806C8490 = find_matching_entry
sub_1806685D0 = insert_value_at_index
sub_1800C1290 = find_and_insert_element_in_array
sub_180B90B90 = find_value_and_return_corresponding
sub_1807D50F0 = find_index_and_insert_value
sub_1800D23A0 = find_integers
sub_180B6D530 = initialize_CMAA2_context
sub_180B7E520 = performMathComputation (personally thats how i named it, i think using that you might find diff effects offsets/etc so you can force them when u kill or etc )
sub_1808289D0 = get_offset_value
sub_180CC50A0 = CCompositeMaterialManager
sub_180ED8AA0 = set_page_table_entry
sub_180EDDEA0 = check_pointer
sub_180ECFD20 = find_offset_in_structure

// thats how i named a few stuff, i will release more soon
i also translated a few function to c++, note that them can be wrong, i translated them directly in notepad

Код:
// insert_value_at_index
unsigned long long sub_1806685D0(__m128i *a1, unsigned int a2, long long a3)
{
    __m128i v4 = _mm_shuffle_epi32(_mm_cvtsi32_si128(a2), 0);
    unsigned int v7 = 0;
    __m128i *v8 = a1;

    while (true)
    {
        int v9 = _mm_movemask_ps((__m128)_mm_cmpeq_epi32(v4, *v8));

        if (v9 != 0)
            break;

        v7++;
        v8++;

        if (v7 >= 4)
            goto LABEL_4;
    }

    unsigned long long result = (unsigned int)dword_1814C64E0[v9];
    unsigned int v15 = result + 4 * v7;

    if (v15 < 0x10)
    {
        a1[4].m128i_i64[v15] = a3;
        return result;
    }

LABEL_4:
    __m128i *v10 = (__m128i *)a1[12].m128i_i64[1];
    result = (unsigned long long)v10;

    if (v10)
    {
        while (true)
        {
            unsigned int v12 = 0;
            __m128i *v13 = (__m128i *)(result + 16);

            while (true)
            {
                int v14 = _mm_movemask_ps((__m128)_mm_cmpeq_epi32(v4, *v13));

                if (v14 != 0)
                    break;

                v12++;
                v13++;

                if (v12 >= 4)
                    goto LABEL_12;
            }

            int v16 = dword_1814C64E0[v14] + 4 * v12;

            if ((unsigned int)v16 < 0x10)
            {
                *(_QWORD *)(result + 8 * (v16 + 10i64)) = a3;
                return result;
            }

        LABEL_12:
            result = *(_QWORD *)result;

            if (result == 0)
                break;
        }
    }

    unsigned int v17 = 0;
    __m128i *v18 = a1;

    while (true)
    {
        int v19 = _mm_movemask_ps((__m128)_mm_cmpeq_epi32((__m128i)0i64, *v18));

        if (v19 != 0)
            break;

        v17++;
        v18++;

        if (v17 >= 4)
            goto LABEL_16;
    }

    int v23 = dword_1814C64E0[v19] + 4 * v17;

    if ((unsigned int)v23 < 0x10)
    {
        result = v23;
        unsigned int *v24 = (unsigned int *)a1 + v23;
        long long *v25 = &a1[4].m128i_i64[v23];
        goto LABEL_32;
    }
}
Код:
// performMathComputation
// local variable allocation has failed, the output may be wrong!
__int64 sub_180B7E520(__int64 a1, unsigned long long *a2, __int64 a3, double a4, unsigned int a5)
{
    __m128 v7 = _mm_shuffle_ps(_mm_set1_ps(a4), _mm_set1_ps(a4), 0);
    __m128 v8 = _mm_shuffle_ps(_mm_cvtsi32_si128(a5), _mm_cvtsi32_si128(a5), 0);
    if (v7.m128_f32[0] <= 0.0f && v8.m128_f32[0] <= 0.0f)
        return a3;
    __int64 v10 = *a2;
    __int64 v11 = (*(__int64(__fastcall **)(__int64, const char *, __int64 *, unsigned long long))(*(__int64 *)v10 + 672i64))(v10, "postprocess_target", &a3, 0i64);
    if (v7.m128_f32[0] > 0.0f)
    {
        _BOOL8 v27 = a3 != -1;
        __int64 v13 = (*(__int64(__fastcall **)(unsigned long long, const char *, unsigned long long *, __int64, _BOOL8 *, char))(*(__int64 *)*a2 + 80i64))(*a2, "Health Boost Effect", a2 + 2, 0i64, &v27, 0);
        __m128i *v14 = (__m128i *)v13;
        *(_QWORD *)(v13 + 72) |= 0x400400ui64;
        if (v11 != -1)
        {
            __m128 v21;
            (*(void(__fastcall **)(unsigned long long, __m128 *, __int64))(**(_QWORD **)(v13 + 1696) + 336i64))(*(_QWORD *)(v13 + 1696), &v21, v11);
            __int64 v15 = v14[106].m128i_i64[0];
            __int64 v23 = v21.m128i_i64[0];
            unsigned int v36 = -1;
            (*(void(__fastcall **)(__int64, __int64 *, unsigned int *, __int64 *))(*(__int64 *)v15 + 720i64))(v15, &v23, &v36, &v23);
        }
    }
    return a3;
}
Код:
//update_texture_data
std::int64_t sub_180B9BB70(std::int64_t a1, std::uint32_t a2, std::int64_t a3, std::int64_t a4, std::uint32_t a5) {
  std::int64_t result; // rax
  std::int64_t v7; // rcx
  std::int64_t v10; // [rsp+28h] [rbp-20h] BYREF
  std::int64_t v12; // [rsp+38h] [rbp-10h] BYREF
  std::uint32_t v13; // [rsp+60h] [rbp+18h] BYREF
  int v9 = 0; // [rsp+20h] [rbp-28h] BYREF
  int v11 = -1; // [rsp+30h] [rbp-18h]

  if (a3 != -1) {
    (*(void (__fastcall **)(_QWORD, std::int64_t *))(**(_QWORD **)(a1 + 1696) + 336i64))(*(_QWORD *)(a1 + 1696), &v12);
    v7 = *(_QWORD *)(a1 + 1696);
    v13 = -1;
    v10 = v12;
    (*(void (__fastcall **)(std::int64_t, std::int64_t *, std::uint32_t *, int *))(*(_QWORD *)v7 + 720i64))(v7, &v10, &v13, &v9);
    v10 = ((std::int64_t)a5 << 32) | v13;
    sub_1806685D0(a1 + 1216, a2, ((std::int64_t)a5 << 32) | v13);
    v10 = v12;
    return sub_1800C1290(a1 + 608, a2, &v10);
  }

  return result;
}
 
Участник
Статус
Оффлайн
Регистрация
6 Апр 2021
Сообщения
338
Реакции[?]
207
Поинты[?]
113K
C++:
// more
sub_180ECFEA0 = search_table
sub_180ECFD90 = find_element_by_id
sub_180EDDF50 = updateFlagValue
sub_180CD5480 = parse_and_convert_value
sub_180CD5B40 = handle_entity_key_error
sub_1801677B0 = UtlMemory_AllocateAndAppend
sub_18068F050 = create_data_structure
sub_1800B1B80 = update_event_listener
 
Сверху Снизу