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

keng

Ветераны
  • Постов

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

  • Посещение

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

    55

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

  1. Код для поиска по сигнатуре в том же ассемблере занимает строчек пять. Или я что-то не так понял? О_о
  2. Адреса лучше вынести в const, VAM - тоже, инициализируя его в конструкторе (зачем каждый раз новый объект создавать?), а то не очень удобно стороннему разработчику будет в коде разбираться. А так - неплохо. PS: Обработчик исключений тоже не помешал бы.
  3. Скорость реально 20, трейс идёт в пределах нормы, без подвисаний. Подвисает исключительно на создании\редактировании постов и лс, остальное шустро - открывает темы, листает страницы, качает вложения и т.п. Фиг с ним, в общем, переживу.
  4. На лису у меня аллергия, а на опере та же ситуация.
  5. При отправке постов (особенно лс) движок форума секунд на 5-7 задумывается о вечном, проще говоря - подвисает. Та же фигня при редактировании постов - сначала жмём кнопку, потом выскакивает табличка "Загрузка", затем - затуп на несколько секунд. Не уверен, что на 20 мбит\сек оптике это косяк с моей стороны, конфа: Google Chrome stable последней версии Win7 SP1 x32
  6. Что именно не получается? Как пробовал делать?
  7. №3, тоже действенный способ, согласен. No recoil (скачущий прицел) обычно ставится сразу же после выстрела, так что можно или потрассировать чуть пониже или есть способ потупее: Берём два оружия с разной отдачей, ищем неизвестное значение, просто переключаясь между ними - значение отдачи часто хранится в структуре оружия, далее ставим бряк и смотрим что туда пишет. Ещё один способ - находим угол, на который крутится мышь (часто лежит рядом с координатами самого игрока) по вертикали, ставим бряк туда, стреляем. Ещё один - просто ищем "неизвестное->увеличилось->уменьшилось", но с одним и тем же оружием - главное успевать ставить паузу.
  8. В общем, как я очень надеюсь, есть решение попроще - в Olly 2.00+ версии есть логгирование бряков (в том числе и бряков на память), а вот для версии 1.10 есть плагин, позволяющий писать скрипты. Завёл сначала посмотреть на логгирование - довольно уныло, голый лог-файл и больше ничего, так что сейчас пишу скрипт - там всё уже веселее. :]
  9. Ребята, обращаюсь к тем, кто имел\имеет опыт написания своего отладчика или работы с бряками. Представим себе ситуацию: В гипотетической игре у игрока есть оружие, стреляющее с интервалом в 0.5 сек. Разработчики этот интервал знают, а вот кто-то посторонний - нет. Как чаще всего ищется значение этого таймера? Что-то типа: 1. Находим адрес патронов 2. Ставим на него бряк 3. Трассируем вверх, пока не найдём нужное значение таймера Я подумал, что это как-то слишком долго, так что возникла идея автоматизировать процесс. Конкретно - делаем всё то же самое, но программно: 1. Скармливаем проге адрес патронов 2. Прога ставит на адрес int3 3. Включает у себя таймер 4. Шлёт игре несколько LMouseClick-событий, заставляя её пострелять. Или за неё это делает юзер. 5. Замеряет таймером время между int3-срабатываниями Собственно, если у кого-нибудь есть сорцы по установке int3 - поделитесь, а?
  10. Да, я уже тоже заметил (на других-то опкодах работало). Всё, спасибо, топик закрывать можно. PS: А мне - побольше высыпаться.
  11. Ты потренируйся на других играх, для начала. Поймёшь, как этот механизм работает в принципе - применишь и для BF2. Не стоит отчаиваться.
  12. Сработала конструкция вида: val db 12h db 12h db 12h Но появилась проблема с записью. Продемонстрирую: Оригинальная инструкция: Пишем трейнером значение "90909090" (4 байта): Пишем оригинальные 4 байта назад (D8622420) и получаем вот это: Ясное дело, игра крашится. Внимание, вопрос: У меня настолько кривые руки, что три инструкции под fasm и tasm работают аки часы, а под masm работать отказываются?..
  13. №3, до этого я уже догадался, но если сделать таким образом - WriteProcessMemory прекрасно этот ноль кушает и пытается записать. Т.е. пишет не "D8 62 24 20" (4 байта), а "0D 86 22 42". №4, LUA - это круто, но я скриптовые языки не перевариваю, да и раз уже есть готовый движок на масме - тем более. Буду дальше в документации копаться, не может это вот так внезапно перестать работать. Явно где-то ошибся. Самое смешное, что в fasm всё работает как часы, но masm мне просто привычнее. ):
  14. Самое смешное, что даже хайлайтер этого форума разными цветами подсвечивает "20h" и "d8h". Видимо, я что-то очень не так делаю, но раньше-то не было такого! ._.
  15. Товарищи, я уже обгуглился, или просто очень хочу спать, но тем не менее. Делаю я, скажем, вот так: val1_on db 90h,90h,90h,90h Это ок. Теперь хочу сделать вот так: val1_off db d8h,62h,24h,20h ...и при попытке скомпилировать это месье компилятор принимает "d8h" не за безобидный байт, а за нечто непонятное - illegal instruction, как бы - и компилировать отказывается. Обнаружилось сие в WinAsm studio, попробовал с голым MASM 10 - то же самое, попрбовал на ХР (а не на 7) - то же самое. Что делать? Застрелиться? Выспаться?
  16. M4K, какими судьбами! Мы знакомы? :)

  17. "Структурный паук", она же - "Structure spider" - функция для сравнения структур. В кратце, вот пример: Нашёл ты, скажем, адрес здоровья игрока. Во многих случаях (особенно это касается FPS-шутеров) данные об игроке представляют собой структуру вида "базовый адрес игрока" + оффсет0 (здоровье) + оффсет1 (патроны) и так далее. Два варианта - правой кнопкой на найденном адресе, пункт "Browse this memory region" ("Посмотреть этот регион памяти") - на нижнем окне правой кнопкой - "Представление данных" - "4 байта" (или тот тип, что и тип найденного адреса). Дальше - делать что-то в игре и внимательно смотреть на цифры, пытаясь понять нафига они. Второй вариант - скопировать найденный адрес, открыть из меню "Dissect Data\Structures" - ввести там адрес, задать размер структуры и тип вывода данных (тот же, что и у найденного адреса) - нажать "Scan". Если это, собственно, структура, то "Structure spider" иногда полезен для их сравнения - если нужно найти конкретное изменение в одном адресе или сравнить две похожие структуры по разным адресам (скажем, двух разных монстров).
  18. Да, об этом скрипте я и говорил. Можно поменять интервал таймера (строка "timer_setInterval(t,10)") на 500 или 1000 мсек - тормозить будет меньше. PS: Извиняюсь за задержку - не знал, что для зарегистрированных юзеров включена премодерация.
  19. На официальном форуме Cheat Engine обсуждали эту проблему, но у меня указанный способ почему-то не сработал. Возможно, это какой-то защитный механизм игры - не помню, чтобы она себя так вела. Одно из решений - написать трейнер, по таймеру переподключающийся к процессу и переписывающий нужные адреса\опкоды.
×
×
  • Создать...

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

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