Пользователь
Пользователь
- Статус
- Оффлайн
- Регистрация
- 26 Окт 2017
- Сообщения
- 531
- Реакции
- 96
Может кому то захочется потупитить без пота.
Нужные букавы тут
Пожалуйста, авторизуйтесь для просмотра ссылки.

Нужные букавы тут
C++:
typedef void(__fastcall* SurvivalSkill_t)(__int64 pAbility);
typedef bool(__fastcall* SurvivalSkill2_t)(__int64 pAbility);
typedef bool(__fastcall* ChangeAbilitys_t)(__int64 a1,bool a2);
cDetour<SurvivalSkill_t>* oSurvivalSkill_t;
cDetour<SurvivalSkill2_t>* oSurvivalSkill2_t;
cDetour<SurvivalSkill_t>* oSurvivalSkill3_t;
cDetour<ChangeAbilitys_t>* oChangeAbilitys_t;
void ChangeCount(__int64 a1)
{
if (a1)
{
auto v4 = *(DWORD64*)(*(DWORD64*)(a1 + 0x318) + 0x190);
if (v4)
{
*(int*)(v4 + 0x188) += 2;
}
}
}
void CooldownAbility(__int64 pAbility)
{
if (pAbility)
*(float*)(pAbility + 0x48) = 0.01f;
}
void __fastcall hkSurvivalSkill(__int64 pAbility)
{
oSurvivalSkill_t->GetTrampoline()(pAbility);
CooldownAbility(pAbility);
}
bool __fastcall hkChangeAbilitys(__int64 a1, bool a2)
{
ChangeCount(a1);
auto ret_val = oChangeAbilitys_t->GetTrampoline()(a1, a2);
return ret_val;
}
void __fastcall hkSurvivalSkill3(__int64 pAbility)
{
oSurvivalSkill3_t->GetTrampoline()(pAbility);
CooldownAbility(pAbility);
}
bool __fastcall hkSurvivalSkill2(__int64 pAbility)
{
auto ret_val = oSurvivalSkill2_t->GetTrampoline()(pAbility);
CooldownAbility(pAbility);
return ret_val;
}
void MemesLoad()
{
{
auto ptrSurvivalChangeCountFn = occurence("client.dll", "40 55 53 48 8D 6C 24 ? 48 81 EC ? ? ? ? 48 8B D9 84 D2 74 15 E8 ? ? ? ? 84 C0 75 30 B0 01 48 81 C4 ? ? ? ? 5B 5D C3 48 8B 81 ? ? ? ? 48 8B 88 ? ? ? ? 8B 81 ? ? ? ? 85 C0 0F 8E ? ? ? ? FF C8 89 81 ? ? ? ? 48 8B 83");
if (ptrSurvivalChangeCountFn)
{
Detour.ApplyDetour<ChangeAbilitys_t>((ChangeAbilitys_t)ptrSurvivalChangeCountFn, reinterpret_cast<ChangeAbilitys_t>(hkChangeAbilitys), &oChangeAbilitys_t);
}
}
{
auto ptrSurvivalFn = occurence("client.dll", "40 53 48 83 EC 20 48 8B 01 48 8B D9 FF 50 48 F3 0F 11 43 ? C6 43 4C 00 48 83 C4 20 5B C3");
if (ptrSurvivalFn)
{
Detour.ApplyDetour<SurvivalSkill_t>((SurvivalSkill_t)ptrSurvivalFn, reinterpret_cast<SurvivalSkill_t>(hkSurvivalSkill), &oSurvivalSkill_t);
}
}
{
auto ptrSurvivalFn = occurence("client.dll", "48 8B C4 57 48 83 EC 50 48 83 79 ? ? 48 8B F9 0F 84 ? ? ? ? 48 83 79 ? ? 0F 84 ? ? ? ? 48 89 58 08 48 8D 50 C8 48 89 68 10 48 89 70 18 4C 89 70 F0 4C 89 78 E8 45 33 FF 4C 89 78 D0 4C 89 78 D8 44 89 78 C8 E8 ? ? ? ? 48 8B 74 24 ? 48 63 44 24 ? 48 8B DE 85 C0 41 0F 95 C6 48 8D 2C C6 48 3B F5 74 1B 0F 1F 80");
if (ptrSurvivalFn)
{
Detour.ApplyDetour<SurvivalSkill2_t>((SurvivalSkill2_t)ptrSurvivalFn, reinterpret_cast<SurvivalSkill2_t>(hkSurvivalSkill2), &oSurvivalSkill2_t);
}
}
{
auto ptrSurvivalFn = occurence("client.dll", "48 8B C4 53 56 57 48 83 EC 60 F3 0F 10 41 ? 48 8D 50 10 0F 29 70 C8 48 8B F9 0F 29 78 B8 48 8D 48 08 0F 28 F9 48 89 68 18 F3 0F 5C C7 C7 40 ? ? ? ? ? 0F 57 F6 F3 0F 11 40 ? E8 ? ? ? ? 0F 2F F0 F3 0F 11 47 ? 72 51 80 7F 4C 00 75 4B 48 8B 07 48 8B CF FF 50 70 84 C0 74 3E 0F 2F 77 48 72 04 C6 47 4C 01 48 8B 07 48 8D 54 24 ? 48 8B 58 78 48 8B 47 08");
if (ptrSurvivalFn)
{
Detour.ApplyDetour<SurvivalSkill_t>((SurvivalSkill_t)ptrSurvivalFn, reinterpret_cast<SurvivalSkill_t>(hkSurvivalSkill3), &oSurvivalSkill3_t);
}
}
}
void MemesUnload()
{
if (oChangeAbilitys_t)
{
oChangeAbilitys_t->Remove();
}
if (oSurvivalSkill_t)
{
oSurvivalSkill_t->Remove();
}
if (oSurvivalSkill2_t)
{
oSurvivalSkill2_t->Remove();
}
if (oSurvivalSkill3_t)
{
oSurvivalSkill2_t->Remove();
}
}
Последнее редактирование: