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

partoftheworlD

Помогаторы
  • Публикаций

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

  • Посещение

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

    168

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

  1. Скажу глупость скорее всего, но вроде как тебе надо сделать проверку по ESP. в него записываются 4 байта которые и есть адрес возврата, если условие проверки не выполнится, то сделать переход или что-нибудь вывести. Наверное будет проще написать на C++ программу которая проверяет исключения и выводит адрес и текущее значение, а потом уже подходящие значения добавить в СЕ.
  2. Вот нашел, передача аргументов через стек наиболее часто используется для передачи аргументов при вызове процедур. Суть этого способа заключается в том, что вызывающая процедура самостоятельно заносит в стек передаваемые данные, после чего передает управление вызываемой процедуре. При передаче управления процедуре микропроцессор автоматически записывает в вершину стека 4 байта. Эти байты являются адресом возврата в вызывающую программу. Если перед передачей управления процедуре командой call в стек были записаны переданные процедуре данные или указатели на них, то они окажутся под адресом возврата. Стек обслуживается тремя регистрами: ESS - указатель дна стека (начала сегмента стека);ESP - указатель вершины стека;EBP - указатель базы.
  3. 2-й пример написан на C++ и это обработчик ошибок. Вроде твой случай тык.
  4. partoftheworlD

    Won day of defeat

    Не нашел в гугле эту игру.Но предположу, эта та которая на соурс движке игра?
  5. Время для ночной статьи .Последнее время, я заинтересовался не просто поиском значение и созданием трейнера, а тем как работает функция, которую я нашел. В этой статье я расскажу, как сделать использование телепорта без перезарядки и изменение дальности прыжка при телепортации. Для поиска Перезарядка: 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 ? ? ? ? Сразу покажу коды.
  6. partoftheworlD

    Pool Live Pro (соц.сети)бильярд.

    Почитай про условные переходы на ассемблере. Если не ошибаюсь, то должно выглядеть примерно так. Не силен в ассемблере) 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
  7. Возможно, записываешь в экранное значение и из-за этого проблемы Или фильтр надо создать, чтобы другие функции работающие с этим адресом не крашились.
  8. partoftheworlD

    RCS (Recoil Control System)

    Спасибо, попробую. Кстати если надо, чтобы игроки отрисованные glow не лежали на земле сделай проверку if (entity->isDormant()){ mem->WriteMem<bool>((GlowBase + ((entity->getGlowIndex() * 0x38) + 0x24)), false);}else{ mem->WriteMem<bool>((GlowBase + ((entity->getGlowIndex() * 0x38) + 0x24)), true);}Спасибо, помог откорректировать значения и будет прекрасно работать. +Rep обязательно
  9. partoftheworlD

    RCS (Recoil Control System)

    Нашел свои старые проекты и решил закончить.Проблема заключается в том, что прицел опускается слишком быстро. Вдруг кто-нибудь делал и может подсказать в чем дело? Вроде все по туторам и должно работать прекрасно. 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); }}
  10. partoftheworlD

    RCS (Recoil Control System)

    По этому коду получается, что Ang будет всегда отрицательный и около нуля, анти-отдача будет работать, но тогда я не смогу двигать прицелом. Уже все что можно перепробовал, осталось только через центр экрана попробовать и с помощью CreateMove) Да Ang[2] всегда 0. Видел как в других читах работает, и как у меня, хотя код одинаковый, значения правильные, единственное где может быть ошибка это в записи Ang.
  11. Одно дело идеи, а другое ограничение со стороны сервера и VAC
  12. partoftheworlD

    Reverse Engineering функции выстрела в Darksiders 2

    Админы, пожалуйста смените название игры в заголовке и посте с Darkness 2 на Darksiders 2. NullAlex: Изменено.
  13. Надеюсь кому-нибудь это поможет. Несколько лет назад я делал 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;}
  14. Раз нашел экранные это уже хорошо, возможно они зашифрованные, помню видел видео по взлому ресурсов в героях меча и магии. Может быть твой случай. Раз вызовов много, то можешь внутри покопаться.
  15. В этот раз статья будет состоять из 2 частей, постараюсь дописать сразу как появится свободное время. В первой у нас будет теория о том как работает анти-чит и как можно его обмануть, во второй напишем простейший Bunnyhop. Часть 1. Теория. Немного теории о том как работает SMAC анти-чит на примере Bunnyhop.Ссылка на репозиторий анти-чита. SMAC это довольно не плохой анти-чит и к тому-же c исходным кодом.Как же анти-чит вычисляет читера? Ниже под спойлером функция обнаружения использования Bhop.
  16. Спасибо, дальше думаю написать статью про создание Bunnyhop с обходом SMAC
  17. partoftheworlD

    Reverse Engineering функции выстрела в Darksiders 2

    Упс...спасибо надо будет исправить
  18. Может сделать ограничение по размеру загружаемых картинок?
  19. Перед началом поиска прописываем в параметры запуска " -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); }
  20. partoftheworlD

    Insurgency

    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 файлы которые тебе нужны.
  21. partoftheworlD

    Не могу зайти со своего старого профиля

    Скорее всего, я останусь на этом профиле. Теперь тот гугло-профиль заблокирован гуглом. Просто не понимаю, почему не мог зайти со старым паролем. Все равно спасибо за помощь.
  22. Не знаю в какую ветку написать.Решил зайти на форум, но пароль не подходит, а при восстановлении пишет, что пользователя не существует.
  23. partoftheworlD

    Не могу зайти со своего старого профиля

    Спасибо. Буду ждать сообщения.
  24. partoftheworlD

    Insurgency

    Проще найти CBaseCombatCharacter::UpdateGlowEffect, зареверсить функцию. Тебе останется лишь найти и подставить Localbase,Glowbase офсеты и включить :UpdateGlowEffect через RegisterGlowObject .Код займет около 10-15 строк. [spoiler=Результат]
  25. partoftheworlD

    Не могу зайти со своего старого профиля

    Тогда я ничего не понимаю.
×

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

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