Перейти к содержанию

partoftheworlD

Пользователи+
  • Постов

    2 687
  • Зарегистрирован

  • Посещение

  • Победитель дней

    172

Весь контент partoftheworlD

  1. Время для ночной статьи .Последнее время, я заинтересовался не просто поиском значение и созданием трейнера, а тем как работает функция, которую я нашел. В этой статье я расскажу, как сделать использование телепорта без перезарядки и изменение дальности прыжка при телепортации. Для поиска Перезарядка: F3 0F 11 81 ? ? ? ? F3 0F 10 48 ? 0F 2F C1 76 0D F3 0F 11 89 ? ? ? ? Дальность : D8 86 ? ? ? ? D9 9E ? ? ? ? D9 40 08 D9 9E ? ? ? ? D8 48 08 D8 86 ? ? ? ? D9 9E ? ? ? ? Сразу покажу коды.
  2. Почитай про условные переходы на ассемблере. Если не ошибаюсь, то должно выглядеть примерно так. Не силен в ассемблере) alloc(newmem,2048)label(returnhere)label(originalcode)label(check1)label(editvalue)label(exit)newmem:cmp ...je check1 //если значение равноcheck1:cmpjne editvalue //если значение не равноeditvalue:mov [eax+00], 1000
  3. Возможно, записываешь в экранное значение и из-за этого проблемы Или фильтр надо создать, чтобы другие функции работающие с этим адресом не крашились.
  4. Спасибо, попробую. Кстати если надо, чтобы игроки отрисованные glow не лежали на земле сделай проверку if (entity->isDormant()){ mem->WriteMem<bool>((GlowBase + ((entity->getGlowIndex() * 0x38) + 0x24)), false);}else{ mem->WriteMem<bool>((GlowBase + ((entity->getGlowIndex() * 0x38) + 0x24)), true);}Спасибо, помог откорректировать значения и будет прекрасно работать. +Rep обязательно
  5. По этому коду получается, что Ang будет всегда отрицательный и около нуля, анти-отдача будет работать, но тогда я не смогу двигать прицелом. Уже все что можно перепробовал, осталось только через центр экрана попробовать и с помощью CreateMove) Да Ang[2] всегда 0. Видел как в других читах работает, и как у меня, хотя код одинаковый, значения правильные, единственное где может быть ошибка это в записи Ang.
  6. Одно дело идеи, а другое ограничение со стороны сервера и VAC
  7. Админы, пожалуйста смените название игры в заголовке и посте с Darkness 2 на Darksiders 2. NullAlex: Изменено.
  8. Раз нашел экранные это уже хорошо, возможно они зашифрованные, помню видел видео по взлому ресурсов в героях меча и магии. Может быть твой случай. Раз вызовов много, то можешь внутри покопаться.
  9. Часть 1 К 4 утра нашлось все-таки свободное время int in_air(){ int fFlag; ReadProcessMemory(hProcess, (LPCVOID)(LocalBase + 0x350), &fFlag, 4, 0); return fFlag == 256 || fFlag == 258 || fFlag == 260 || fFlag == 262 || fFlag == 1280; } void Bunnyhop() { int on = 5; int off = 4; if (GetAsyncKeyState(VK_SPACE) & 0x8000 && !in_air) { WriteProcessMemory(hProcess, (LPCVOID)(ClientDLL + 0x4F3B3C), &on, 4, 0); //5 } else if (GetAsyncKeyState(VK_SPACE) & 0x8000 && in_air) { WriteProcessMemory(hProcess, (LPCVOID)(ClientDLL + 0x4F3B3C), &off, 4, 0); //4 WriteProcessMemory(hProcess, (LPCVOID)(ClientDLL + 0x4F3B3C), &on, 4, 0); // 5 WriteProcessMemory(hProcess, (LPCVOID)(ClientDLL + 0x4F3B3C), &off, 4, 0); //4 } else { WriteProcessMemory(hProcess, (LPCVOID)(ClientDLL + 0x4F3B3C), &off, 4, 0); //4 } }
  10. В этот раз статья будет состоять из 2 частей, постараюсь дописать сразу как появится свободное время. В первой у нас будет теория о том как работает анти-чит и как можно его обмануть, во второй напишем простейший Bunnyhop. Часть 1. Теория. Немного теории о том как работает SMAC анти-чит на примере Bunnyhop.Ссылка на репозиторий анти-чита. SMAC это довольно не плохой анти-чит и к тому-же c исходным кодом.Как же анти-чит вычисляет читера? Ниже под спойлером функция обнаружения использования Bhop.
  11. Спасибо, дальше думаю написать статью про создание Bunnyhop с обходом SMAC
  12. Надеюсь кому-нибудь это поможет. Несколько лет назад я делал RapidFire для Darksiders 2. и выкладывал таблицу под ником Alexander-mx. Но искал я очень долго значение, отвечающее за время между выстрелами, искал способом изменилось/не изменилось и тогда мне очень повезло, потому что повторить это я не смог. Сегодня решил восстановить функцию выстрела для этой игры.Не полностью восстановленная функция, но для создания RapidFire этого хватит. Остается только найти WeaponBase через патроны. int *__thiscall m_Shoot(void *this, float Shot_Time){ int WeaponBase; // esi@1 int ReturnIdWeapon; // edi@1 DWORD IDKBase; // ecx@4 int ShootingState; // eax@6 unsigned int Recoil; // eax@9 int *result; // eax@12 bool BulletCountEqual_0; // zf@20 bool BulletCountLess_0; // sf@20 int v10; // eax@20 void *IDWeapon; // [sp+10h] [bp-14h]@1 int SetShootingState; // [sp+17h] [bp-Dh]@17 int v13; // [sp+20h] [bp-4h]@16 WeaponBase = this; ReturnIdWeapon = *sub_460D85(&IDWeapon); if ( IDWeapon ) sub_1017(IDWeapon); // //Проверка кончился выстрел или нет. Если кончился предыдущий выстрел (значение WeaponBase + 0x420 будет равно 0), то можно делать следующий if ( *(WeaponBase + 0x420) > 0.0 // IDKBase + 0xD8 типа bool, при значении 1 стрельба немного быстрее, чем при 0. Возможно при значении 1 функция игнорирует остальные проверки || (IDKBase = *(WeaponBase + 0x438), !*(IDKBase + 0xD8)) && flt_1177D60 < *(WeaponBase + 0x41C) || (ShootingState = *(IDKBase + 0xD4), ShootingState != -1) && *(WeaponBase + 0x418) >= ShootingState || *(IDKBase + 0x2C) > *(WeaponBase + 0x43C) // v6 не понятно что делает,значение типа int которое меняется при стрельбе побитовым сдвигом вправо на 6, максимальное значение которого 31 с включенным rapidfire и 27 при стандартной стрельбе || (Recoil = *(WeaponBase + 0x444), (*(WeaponBase + 0x444) >> 6) & 1) ) { result = *(WeaponBase + 0x438); if ( *(result + 0x30) && *(WeaponBase + 0x3F4) > -1 ) result = sub_35C641(*(*(WeaponBase + 0x400) + 32)); } else { *(WeaponBase + 0x43C) = 0.0; if ( *(ReturnIdWeapon + 0x384) && *(WeaponBase + 0x340) <= 0 ) { result = (Recoil >> 9); if ( result & 1 ) { if ( *(WeaponBase + 0x3F4) > -1 ) result = sub_35C641(*(*(WeaponBase + 0x400) + 0x54)); } } else { if ( !(v157A220 & 1) ) { v157A220 |= 1u; v13 = 0; sub_96CB1(&unk_121C4D4, 0); sub_9B886C(&unk_114544D); v13 = -1; } // Result Возможно зашифрованное значние result = sub_35BD87(WeaponBase, 0x157A218, &Shot_Time, &SetShootingState, 0); if ( !result ) LOBYTE(SetShootingState) = 1; if ( SetShootingState ) { BulletCountEqual_0 = *(WeaponBase + 0x418) == 0; BulletCountLess_0 = *(WeaponBase + 0x418) < 0; v10 = *(WeaponBase + 0x438); Shot_Time = *(v10 + 36); *(WeaponBase + 0x420) = Shot_Time; if ( !BulletCountLess_0 && !BulletCountEqual_0 ) // Установить значение 0 для времени между выстрелами [WeaponBase + 0x420] // v10 + 40 количество выстрелов *(WeaponBase + 0x420) = *(v10 + 40) * Shot_Time; (*(*WeaponBase + 0x30C))(WeaponBase); result = sub_361811(WeaponBase); } } } return result;}
  13. Может сделать ограничение по размеру загружаемых картинок?
  14. Раньше вроде тема была про баги сайта. не смог найти её Длинные картинки не правильно отображаются, если браузер запущен в небольшом окне.
  15. Перед началом поиска прописываем в параметры запуска " -insecure". void NoFlash() { DWORD LocalBase; float disable = 0; ReadProcessMemory(hProcess, (LPCVOID)(Client.dll + 0x4C6708), &LocalBase, sizeof(LocalBase), 0); WriteProcessMemory(hProcess, (LPCVOID)(LocalBase + 0x1450), &disable, sizeof(disable), 0); Sleep(1); }
  16. (Впервые пишу статью, так что критика приветствуется. Многие наверное знают этот способ.) Итак, для начала нам нужно зайти в свойства игры в Steam Параметры запуска и прописать –insecure. «-insecure» отключает VAC, и мы можем спокойно начинать взлом, не боясь, что нас забанят. Не забудьте удалить это иначе не пустит на сервера. В поиске мы должны будем найти игроков, которые отражаются на карте в момент приближения к ним. Искать лучше тип «Byte» 1 видим противника на радаре, 0 не видим. У меня нашелся 1 адрес. Выделяем адрес и нажимаем F5 или ПКМ по адресу и Find out what accesses this address. Вызывается всего одна инструкция. Что же она делает? Она записывает в 8 битный регистр AL значение 1 или 0 в зависимости от того виден ли противник на радаре или нет. Так же видим регистры EDI и ESI.ESI используется как адрес источника. Значит это базовый адрес. EDI- адрес назначения в этой инструкции и по его значению видим, что это ID игрока. Структура инструкции выглядит следующим образом [Базовый адрес + ID игрока + 0xD8D] и пишется в нее значение типа BYTE. Что с этим можно сделать? Например запустить цикл с перебором всех игроков. void DrawingPlayers() { DWORD esi; bool enable = true; ReadProcessMemory(hProcess, (LPVOID)(ClientDll + 0x4CC068), &esi, sizeof(DWORD), 0); for (int index = 0; index < 64; ++index) { WriteProcessMemory(hProcess, (LPVOID)(esi + index + 0xD8D), &enable, sizeof(bool), 0); } }
  17. Нашел свои старые проекты и решил закончить.Проблема заключается в том, что прицел опускается слишком быстро. Вдруг кто-нибудь делал и может подсказать в чем дело? Вроде все по туторам и должно работать прекрасно. void RCS(){ float Punch[3],Ang[3]; if (GetAsyncKeyState(0x01) & 0x8000 && local_player->getShotsFired() > 1) { Punch[0] = local_player->getPunch()[0]; Punch[1] = local_player->getPunch()[1]; Punch[2] = 0; Ang[0] = local_player->getAngles()[0]; Ang[1] = local_player->getAngles()[1]; Ang[2] = local_player->getAngles()[2]; Ang[0] -= Punch[0] * 2; //* 2 компенсация отдачи Ang[1] -= Punch[1] * 2; Ang[2] -= Punch[2] * 2; engine->clampAngles(Ang); local_player->setAngles(Ang); }}
  18. http://www.unknowncheats.me/forum/other-fps-games/162802-insurgency-glow.html Поиск обычно производится по консольным командам. Ищешь команду, смотришь какую функцию она вызывает и восстанавливаешь её в своем коде. (Не знаю как тут добавлять файлы)Книжки по реверсингу в IDA: https://mega.nz/#!kgkkQAJZ!StrY11r9vJiRNrMOwOPHSr2cx5bYa8PI3F0os42r-i0 Для восстановления кода может помочь "Valve SDK 2013" на гитхабе есть, glow_outline_effect.h и .cpp файлы которые тебе нужны.
  19. Скорее всего, я останусь на этом профиле. Теперь тот гугло-профиль заблокирован гуглом. Просто не понимаю, почему не мог зайти со старым паролем. Все равно спасибо за помощь.
  20. Проще найти CBaseCombatCharacter::UpdateGlowEffect, зареверсить функцию. Тебе останется лишь найти и подставить Localbase,Glowbase офсеты и включить :UpdateGlowEffect через RegisterGlowObject .Код займет около 10-15 строк. [spoiler=Результат]
  21. Не знаю в какую ветку написать.Решил зайти на форум, но пароль не подходит, а при восстановлении пишет, что пользователя не существует.
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.