1. 游客, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

Любая версия Ограничиваем debug для GM

本贴由 int 32014-08-18 发布. 版块名称: PW Документация

  1. TopicStarter Overlay

    int 3 Программист Пользователи Open Source Contributor

    注册日期:
    2014-05-12
    帖子:
    342
    支持:
    531
    性别:
    Репутация:
    10
    Страна:
    Russian Federation Russian Federation
    Мне потребовалось: IDA + Hex Rays, хекс редактор, Cheat Engine и немного знаний асма.
    Ахтунг! Все числа в статье - в 16-ричной системе счисления. Где-то есть 0x, где-то нет.

    Статья будет состоять из трёх частей:

    Материал можно копировать и использовать на своё усмотрение, но указание автора (int 3) приветствуется.

    Если есть вопросы - задавайте, с радостью отвечу.
    Последнее редактирование: 2021-01-15
    已获得bublik))), DjonnyCeep, dpakon1另外14人的支持.
  2. Тыщ Группа анонимных алкоголиков Art Old school Пользователи

    注册日期:
    2010-07-06
    帖子:
    1,573
    支持:
    812
    性别:
    Репутация:
    2
    Описывай предь,пожалуйста до "ввода" своих таблиц и тд и указывай версию,на которой делал,ибо тестил на 1.5.0 :
    0x0811c8DA
    0x08122523 konec
    [​IMG]
    811c8e1 Вышло после того как отнял,
    5c42 адрес в создании ф-и
    d48da - замены
    jz+5c42 Эт ок.6A7A2B35633432
    [​IMG]- А это не нагуглил
    [​IMG]
    Схоронил,дальше мир вылетает при вводе дебаг-команды.лол
    http://screenshot.ru/ef8d0336c9fbfc351ec0e616e8d6992d.mp4
    Прикладываю ГС ЧИСТЫЙ:
    https://yadi.sk/d/FuoPgNYFZuEe2
    Если будет возможность-разьясни что с ним да как
    При сравнении понял что ошибся немного адресом,надо было выше вводить,сделал по-другому
    [​IMG]
    Тот же вылет ГС,а значит причина в неправильной ф-ии.
    Выяснил что "Одновременный вход в игру , учетная запись заблокирована" из-за деливери,лол
    Последнее редактирование: 2014-08-18
    已获得thisDjonnyCeepГильберт的支持.
  3. alexdnepro Эксперт AngeliCore Пользователи Open Source Contributor White List

    注册日期:
    2010-04-02
    帖子:
    754
    支持:
    1,313
    性别:
    Репутация:
    6
    Для редактирования asm кода, рекомендую использовать http://hte.sourceforge.net/
    Она заменит сразу и CheatEngine и Hex редактор. По поводу вырезки "лишнего" кода, лучше делать по другому: в нужном месте вставляем jmp на свободное место (в gs верочно можно затирать функцию Elementdataman::save), там вставляем часть кода, которую мы затерли джампом, после чего пишем свой код в конце которого делаем jmp назад в изменяемую функцию. Таким образом не потеряем исходный код и получим немало места для своих проверок.
    已获得int 3DjonnyCeepJoslian的支持.
  4. TopicStarter Overlay

    int 3 Программист Пользователи Open Source Contributor

    注册日期:
    2014-05-12
    帖子:
    342
    支持:
    531
    性别:
    Репутация:
    10
    Страна:
    Russian Federation Russian Federation
    По поводу таблиц - у меня подредактированы только аргументы функции, это не должно влиять на смысл. Функция в любом случае есть (GLog::log()), её можно затереть. Версия 1.5.1, забыл дописать.

    Это адрес строчки вызова функции, сама функция находится в
    [​IMG]
    (0x811C8C4 - 0x811C8E1)

    Это вычислено верно.

    Заходим в функцию GMCommandHandler и огорчаемся:
    [​IMG]
    Смещение стало не 0x48, а 0x44 (пкм - hexadecimal), поэтому 6-й байт в коде изменится с 48 на 44.

    D48C4 - стираем 30 байт.
    Дописываем байты, вычисляем разность (у меня получилась 0x5C52). Результат:
    [​IMG]
    Сохраняем и для надежности/проверки суём в иду. (Проанализировалось не до конца)
    [​IMG]
    Зеленым указаны начальные команды, которые были перед/после затираемой функции (они не изменились, значит мы ничего не сломали), между ними наш код. Прыжок переходит на верный адрес.
    https://yadi.sk/d/BnY5l5qjZwF7f - пофикшенное ядро

    Спасибо, попробую.

    Я практиковал такой способ, когда редактировал клиент, но тут функция была мелкая, а джампом всё равно пришлось бы затереть 5 байт. Когда-нибудь опишу в гайдах и такой вариант.
    已获得JoslianMerfyТыщ的支持.
  5. Гильберт Пользователи

    注册日期:
    2012-11-22
    帖子:
    56
    支持:
    15
    性别:
    Репутация:
    0
    Добрый день. У меня вот такой вопрос: Можно ли например дебаг привязать не ко всем GM, а к персонажу с отдельным идом, или к отдельному аккаунту. Как это вот можно реализовать, где копать, и как примерно должна выглядеть функция ?
    Заранее спасибо.
  6. TopicStarter Overlay

    int 3 Программист Пользователи Open Source Contributor

    注册日期:
    2014-05-12
    帖子:
    342
    支持:
    531
    性别:
    Репутация:
    10
    Страна:
    Russian Federation Russian Federation
    Можно привязать хоть по айпи/лвлу/клану/полу. Но тут уже не обойтись без непосредственной отладки сервера для нахождения параметров, по которым привязываем. И, конечно же, нужно знать ассемблер. Привязка по айди: находим смещение до айди перса (отладка/изучение функций в иде), меняем код на
    mov eax, [ebp+8]
    cmp [eax+123], 456
    (где 123 - смещение, 456 - айди)
    jne %выход%
    已获得Гильберт的支持.
  7. pilad Команда форума Модератор Пользователи

    注册日期:
    2010-05-11
    帖子:
    1,741
    支持:
    482
    性别:
    Репутация:
    1
    Команда:
    Freeman
    А можно для ленивых сразу для 1024 выложить ядро ? С дебаг символами :D
  8. Гильберт Пользователи

    注册日期:
    2012-11-22
    帖子:
    56
    支持:
    15
    性别:
    Репутация:
    0
    Спасибо большое, вы очень помогли.
  9. TopicStarter Overlay

    int 3 Программист Пользователи Open Source Contributor

    注册日期:
    2014-05-12
    帖子:
    342
    支持:
    531
    性别:
    Репутация:
    10
    Страна:
    Russian Federation Russian Federation
    Жирно будет, пусть люди учат асм :D
    已获得UnixDonato FerranteNEO的支持.
  10. Unix Пользователи

    注册日期:
    2012-11-24
    帖子:
    1,028
    支持:
    331
    性别:
    Репутация:
    6
    Страна:
    Ukraine Ukraine
    Помню начал учить асм, и понял что суицид действительно выход (с)Ацкой.
    已获得ZoolMr.Fleks的支持.
  11. Wrechid Пользователи

    注册日期:
    2017-12-27
    帖子:
    10
    支持:
    2
    Репутация:
    0
    Команда:
    other
    Страна:
    United States United States
    sorry for my English,
    How do I translate "jz +6646" to "0F 84 46 66 00 00" bytes...?
  12. TopicStarter Overlay

    int 3 Программист Пользователи Open Source Contributor

    注册日期:
    2014-05-12
    帖子:
    342
    支持:
    531
    性别:
    Репутация:
    10
    Страна:
    Russian Federation Russian Federation
    I prefer to use my own assembler to opcode compiler, but you can check this service (remember to replace 6646 with 0x6646).
Черновик сохранён Черновик удалён
Similar Threads
  1. Fituchini
    回复:
    31
    浏览:
    11,300
  2. Overload

    Любая версия debug команды

    回复:
    22
    浏览:
    35,185
  3. Tails
    回复:
    4
    浏览:
    1,897
  4. int 3
    回复:
    14
    浏览:
    5,169
  5. Tails
    回复:
    4
    浏览:
    2,186
正在加载...

分享此页面