-
Автор темы
- #1
Короч. Если в крации, то просто я напишу куда именно надо заходить, и что именно надо изменить.
И так приступим.
----------------------------------------------------------------------------------------------------
Заходи в main.cpp найди там index и signatures, и замени на этот код.
g_ctx.signatures =
{
crypt_str("A1 ? ? ? ? 50 8B 08 FF 51 0C"),
crypt_str("B9 ?? ?? ?? ?? A1 ?? ?? ?? ?? FF 10 A1 ?? ?? ?? ?? B9"),
crypt_str("0F 11 05 ?? ?? ?? ?? 83 C8 01"),
crypt_str("8B 0D ?? ?? ?? ?? 8B 46 08 68"),
crypt_str("B9 ? ? ? ? F3 0F 11 04 24 FF 50 10"),
crypt_str("8B 3D ? ? ? ? 85 FF 0F 84 ? ? ? ? 81 C7"),
crypt_str("A1 ? ? ? ? 8B 0D ? ? ? ? 6A 00 68 ? ? ? ? C6"),
crypt_str("80 3D ? ? ? ? ? 53 56 57 0F 85"),
crypt_str("55 8B EC 83 E4 F8 83 EC 18 56 57 8B F9 89 7C 24 0C"),
crypt_str("80 3D ? ? ? ? ? 74 06 B8"),
crypt_str("55 8B EC 83 E4 F0 B8 D8"),
crypt_str("55 8B EC 83 E4 F8 81 EC ? ? ? ? 53 56 8B F1 57 89 74 24 1C"),
crypt_str("55 8B EC 83 E4 F0 B8 ? ? ? ? E8 ? ? ? ? 56 8B 75 08 57 8B F9 85 F6"),
crypt_str("55 8B EC 51 56 8B F1 80 BE ? ? ? ? ? 74 36"),
crypt_str("56 8B F1 8B 8E ? ? ? ? 83 F9 FF 74 23"),
crypt_str("55 8B EC 83 E4 F8 83 EC 70 56 57 8B F9 89 7C 24 14 83 7F 60"),
crypt_str("55 8B EC A1 ? ? ? ? 83 EC 10 56 8B F1 B9"),
crypt_str("57 8B F9 8B 07 8B 80 ? ? ? ? FF D0 84 C0 75 02"),
crypt_str("55 8B EC 81 EC ? ? ? ? 53 8B D9 89 5D F8"),
crypt_str("53 0F B7 1D ? ? ? ? 56"),
crypt_str("8B 0D ? ? ? ? 8D 95 ? ? ? ? 6A 00 C6"),
crypt_str("8B 35 ? ? ? ? FF 10 0F B7 C0")
};
g_ctx.indexes =
{
5,
33,
340,
219,
220,
34,
158,
75,
461,
483,
453,
484,
285,
224,
247,
27,
17,
123
};
2. Зайди в Memory.cpp и замени весь код на этот.
#include "Memory.h"
#include "..\utils\crypt_str.h"
template <typename T>
static constexpr auto relativeToAbsolute(int* address) noexcept
{
return reinterpret_cast<T>(reinterpret_cast<char*>(address + 1) + *address);
}
#define FIND_PATTERN(type, ...) \
reinterpret_cast<type>(findPattern(__VA_ARGS__))
void Memory::initialize() noexcept
{
auto temp = FIND_PATTERN(std::uintptr_t*, crypt_str("client"), crypt_str("\xB9????\xE8????\x8B\x5D\x08"), 1);
hud = *temp;
findHudElement = relativeToAbsolute<decltype(findHudElement)>(reinterpret_cast<int*>(reinterpret_cast<char*>(temp) + 5));
clearHudWeapon = FIND_PATTERN(decltype(clearHudWeapon), crypt_str("client"), crypt_str("\x55\x8B\xEC\x51\x53\x56\x8B\x75\x08\x8B\xD9\x57\x6B\xFE\x2C"));
itemSchema = relativeToAbsolute<decltype(itemSchema)>(FIND_PATTERN(int*, crypt_str("client"), crypt_str("\xE8????\x0F\xB7\x0F"), 1));
equipWearable = FIND_PATTERN(decltype(equipWearable), crypt_str("client"), crypt_str("\x55\x8B\xEC\x83\xEC\x10\x53\x8B\x5D\x08\x57\x8B\xF9"));
}
3. Зайди в CInput.hpp и замени тоже весь код на этот.
#pragma once
#include "../misc/CUserCmd.hpp"
#define MULTIPLAYER_BACKUP 150
class bf_write;
class bf_read;
class CInput
{
public:
char pad0[0xC]; // 0x0
bool m_fTrackIRAvailable; // 0xC
bool m_fMouseInitialized; // 0xD
bool m_fMouseActive; // 0xE
char pad1[0x9E]; // 0xF
bool m_fCameraInThirdPerson; // 0xAD
char pad2[0x2]; // 0xAE
Vector m_vecCameraOffset; // 0xB0
char pad3[0x38]; // 0xBC
CUserCmd* m_pCommands; // 0xF4
CVerifiedUserCmd* m_pVerifiedCommands; // 0xF8
CUserCmd* CInput::GetUserCmd(int sequence_number)
{
return &m_pCommands[sequence_number % MULTIPLAYER_BACKUP];
}
CUserCmd* CInput::GGetUserCmd(int slot, int sequence_number)
{
return &m_pCommands[slot, sequence_number % MULTIPLAYER_BACKUP];
}
CVerifiedUserCmd* GetVerifiedUserCmd(int sequence_number)
{
return &m_pVerifiedCommands[sequence_number % MULTIPLAYER_BACKUP];
}
/*
class CInput
{
public:
// 00000000 CInput struc; (sizeof = 0x10C, copyof_144)
char pad_0000[0xC];
bool m_fTrackIRAvailable;
bool m_fMouseInitialized;
bool m_fMouseActive;
bool m_fJoystickAdvancedInit;
char pad_0010[0x2c];
char* m_pKeys;
char pad_0040[0x30];
int32_t m_nCamCommand;
char pad_0074[0x4c];
bool m_fCameraInterceptingMouse;
bool m_fCameraInThirdPerson;
bool m_fCameraMovingWithMouse;
char pad_00C3[0x1];
Vector m_vecCameraOffset;
bool m_fCameraDistanceMove;
char pad_00D1[0x13];
bool m_CameraIsOrthographic;
bool m_CameraIsThirdPersonOverview;
char pad_00E6[0x2];
Vector* m_angPreviousViewAngles;
Vector* m_angPreviousViewAnglesTilt;
char pad_00F0[0x10];
float m_flLastForwardMove;
int32_t m_nClearInputState;
CUserCmd* m_pCommands; // 00000108
CVerifiedUserCmd* m_pVerifiedCommands; // 0000010C
CUserCmd* CInput::GetUserCmd(int sequence_number)
{
return &m_pCommands[sequence_number % MULTIPLAYER_BACKUP];
}
CUserCmd* CInput::GGetUserCmd(int slot, int sequence_number)
{
return &m_pCommands[slot, sequence_number % MULTIPLAYER_BACKUP];
}
CVerifiedUserCmd* GetVerifiedUserCmd(int sequence_number)
{
return &m_pVerifiedCommands[sequence_number % MULTIPLAYER_BACKUP];
}*/
};
Ну и по сути вроде всё. Так как вышла небольшая обнова, там не всё сломало.
И так приступим.
----------------------------------------------------------------------------------------------------
Заходи в main.cpp найди там index и signatures, и замени на этот код.
g_ctx.signatures =
{
crypt_str("A1 ? ? ? ? 50 8B 08 FF 51 0C"),
crypt_str("B9 ?? ?? ?? ?? A1 ?? ?? ?? ?? FF 10 A1 ?? ?? ?? ?? B9"),
crypt_str("0F 11 05 ?? ?? ?? ?? 83 C8 01"),
crypt_str("8B 0D ?? ?? ?? ?? 8B 46 08 68"),
crypt_str("B9 ? ? ? ? F3 0F 11 04 24 FF 50 10"),
crypt_str("8B 3D ? ? ? ? 85 FF 0F 84 ? ? ? ? 81 C7"),
crypt_str("A1 ? ? ? ? 8B 0D ? ? ? ? 6A 00 68 ? ? ? ? C6"),
crypt_str("80 3D ? ? ? ? ? 53 56 57 0F 85"),
crypt_str("55 8B EC 83 E4 F8 83 EC 18 56 57 8B F9 89 7C 24 0C"),
crypt_str("80 3D ? ? ? ? ? 74 06 B8"),
crypt_str("55 8B EC 83 E4 F0 B8 D8"),
crypt_str("55 8B EC 83 E4 F8 81 EC ? ? ? ? 53 56 8B F1 57 89 74 24 1C"),
crypt_str("55 8B EC 83 E4 F0 B8 ? ? ? ? E8 ? ? ? ? 56 8B 75 08 57 8B F9 85 F6"),
crypt_str("55 8B EC 51 56 8B F1 80 BE ? ? ? ? ? 74 36"),
crypt_str("56 8B F1 8B 8E ? ? ? ? 83 F9 FF 74 23"),
crypt_str("55 8B EC 83 E4 F8 83 EC 70 56 57 8B F9 89 7C 24 14 83 7F 60"),
crypt_str("55 8B EC A1 ? ? ? ? 83 EC 10 56 8B F1 B9"),
crypt_str("57 8B F9 8B 07 8B 80 ? ? ? ? FF D0 84 C0 75 02"),
crypt_str("55 8B EC 81 EC ? ? ? ? 53 8B D9 89 5D F8"),
crypt_str("53 0F B7 1D ? ? ? ? 56"),
crypt_str("8B 0D ? ? ? ? 8D 95 ? ? ? ? 6A 00 C6"),
crypt_str("8B 35 ? ? ? ? FF 10 0F B7 C0")
};
g_ctx.indexes =
{
5,
33,
340,
219,
220,
34,
158,
75,
461,
483,
453,
484,
285,
224,
247,
27,
17,
123
};
2. Зайди в Memory.cpp и замени весь код на этот.
#include "Memory.h"
#include "..\utils\crypt_str.h"
template <typename T>
static constexpr auto relativeToAbsolute(int* address) noexcept
{
return reinterpret_cast<T>(reinterpret_cast<char*>(address + 1) + *address);
}
#define FIND_PATTERN(type, ...) \
reinterpret_cast<type>(findPattern(__VA_ARGS__))
void Memory::initialize() noexcept
{
auto temp = FIND_PATTERN(std::uintptr_t*, crypt_str("client"), crypt_str("\xB9????\xE8????\x8B\x5D\x08"), 1);
hud = *temp;
findHudElement = relativeToAbsolute<decltype(findHudElement)>(reinterpret_cast<int*>(reinterpret_cast<char*>(temp) + 5));
clearHudWeapon = FIND_PATTERN(decltype(clearHudWeapon), crypt_str("client"), crypt_str("\x55\x8B\xEC\x51\x53\x56\x8B\x75\x08\x8B\xD9\x57\x6B\xFE\x2C"));
itemSchema = relativeToAbsolute<decltype(itemSchema)>(FIND_PATTERN(int*, crypt_str("client"), crypt_str("\xE8????\x0F\xB7\x0F"), 1));
equipWearable = FIND_PATTERN(decltype(equipWearable), crypt_str("client"), crypt_str("\x55\x8B\xEC\x83\xEC\x10\x53\x8B\x5D\x08\x57\x8B\xF9"));
}
3. Зайди в CInput.hpp и замени тоже весь код на этот.
#pragma once
#include "../misc/CUserCmd.hpp"
#define MULTIPLAYER_BACKUP 150
class bf_write;
class bf_read;
class CInput
{
public:
char pad0[0xC]; // 0x0
bool m_fTrackIRAvailable; // 0xC
bool m_fMouseInitialized; // 0xD
bool m_fMouseActive; // 0xE
char pad1[0x9E]; // 0xF
bool m_fCameraInThirdPerson; // 0xAD
char pad2[0x2]; // 0xAE
Vector m_vecCameraOffset; // 0xB0
char pad3[0x38]; // 0xBC
CUserCmd* m_pCommands; // 0xF4
CVerifiedUserCmd* m_pVerifiedCommands; // 0xF8
CUserCmd* CInput::GetUserCmd(int sequence_number)
{
return &m_pCommands[sequence_number % MULTIPLAYER_BACKUP];
}
CUserCmd* CInput::GGetUserCmd(int slot, int sequence_number)
{
return &m_pCommands[slot, sequence_number % MULTIPLAYER_BACKUP];
}
CVerifiedUserCmd* GetVerifiedUserCmd(int sequence_number)
{
return &m_pVerifiedCommands[sequence_number % MULTIPLAYER_BACKUP];
}
/*
class CInput
{
public:
// 00000000 CInput struc; (sizeof = 0x10C, copyof_144)
char pad_0000[0xC];
bool m_fTrackIRAvailable;
bool m_fMouseInitialized;
bool m_fMouseActive;
bool m_fJoystickAdvancedInit;
char pad_0010[0x2c];
char* m_pKeys;
char pad_0040[0x30];
int32_t m_nCamCommand;
char pad_0074[0x4c];
bool m_fCameraInterceptingMouse;
bool m_fCameraInThirdPerson;
bool m_fCameraMovingWithMouse;
char pad_00C3[0x1];
Vector m_vecCameraOffset;
bool m_fCameraDistanceMove;
char pad_00D1[0x13];
bool m_CameraIsOrthographic;
bool m_CameraIsThirdPersonOverview;
char pad_00E6[0x2];
Vector* m_angPreviousViewAngles;
Vector* m_angPreviousViewAnglesTilt;
char pad_00F0[0x10];
float m_flLastForwardMove;
int32_t m_nClearInputState;
CUserCmd* m_pCommands; // 00000108
CVerifiedUserCmd* m_pVerifiedCommands; // 0000010C
CUserCmd* CInput::GetUserCmd(int sequence_number)
{
return &m_pCommands[sequence_number % MULTIPLAYER_BACKUP];
}
CUserCmd* CInput::GGetUserCmd(int slot, int sequence_number)
{
return &m_pCommands[slot, sequence_number % MULTIPLAYER_BACKUP];
}
CVerifiedUserCmd* GetVerifiedUserCmd(int sequence_number)
{
return &m_pVerifiedCommands[sequence_number % MULTIPLAYER_BACKUP];
}*/
};
Ну и по сути вроде всё. Так как вышла небольшая обнова, там не всё сломало.