Сейчас на форуме: _MBK_, Adler (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Помощь в трассировке кода игры (есть видео с примером)
Посл.ответ Сообщение

Ранг: 1.5 (гость), 1thx
Активность: 0.010
Статус: Участник

Создано: 13 июня 2011 08:57 · Поправил: Telo
· Личное сообщение · #1

Всем привет.
Больше для интереса я уже вторые выходные подряд пытаюсь найти способ изменить кое-что в игре.

Записал видео с подробным описанием что я хочу и на каком этапе мне нужна помощь
http://www.youtube.com/watch?v=CWPnBa8knrI

Если вкратце,то в игре есть система перков. Каждый перк имеет свои бонусы. Один из перков позволяет видеть количество жизней над противниками. Я хочу найти способ, чтобы эта функция была включена на всех перках. У меня есть косвенные данные, по которым можно добраться до искомой функции - я нашёл определенную переменную, доступ к которой идёт только при вызове функции прорисовки этих healthbar'ов над монстрами.

Всё делается через cheat engine. Я ставлю брейкпоинт по доступу к этому значению и как только я включаю нужный перк и запускается происовка healthbar'ов, игра останавливается и в дебаггере я вижу участок кода, который пытался прочитать значение. Дальше поидее нужно через дебаггер пошагово добраться до самой функции прорисовки а затем и до механизма, который взависимости от выбранного перка решает вызывать эту функцию или нет. У меня есть исходник на C++, он поможет сориентироваться в анализе кода через дебаггер.

Но я не силен в реверс инжинерии - нужно понять и проанализировать в дебаггере откуда пришёл запрос, вычислить эту функцию прорисовки Healthbarов, вычислить где происходит анализ перка и вызов этой функции, сделать патч, который вызывал бы эту функцию для всех перков.
---
Так как игра весит около 3х гб. Мне бы хотелось через скайп или TeamViewer или через VNC или через удобную вам софтину, чтобы я расшарил экран и вы полностью могли контроллировать процесс дебага, параллельно можно поддерживать связь через скайп или асю.

в общем нужен специалист в реверс инжинерии, т.к. я до чего знал - добрался, а вот в дебаггере реально не хватает навыков и знаний разобраться.

посмотрите видео и прошу хотябы попробовать мне помочь.



Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 13 июня 2011 10:02
· Личное сообщение · #2

Вот когда ты вышел после двух RET'ов в внешний цикл, надо искать либо чуть выше по коду проверку которая прыгает на этот цикл, либо выходить из этой процедуры и смотреть откуда вызывается, скорей всего именно там проверка идет, а эта процедура с циклом всего лишь проверяет дистанцию и отрисовывает



Ранг: 65.4 (постоянный), 10thx
Активность: 0.020
Статус: Участник

Создано: 13 июня 2011 10:54 · Поправил: V0ldemAr
· Личное сообщение · #3

Засунь файл в ИДУ и посмотри откуда идут вызовы той функции где ты остановился ( 0x10127С69 - похоже что это какая-то ДЛЛка )
Скорей всего там универсальная функция в которую передается указатель на обьект где читаются поля обьекта и эта функция на прорисовку всех обьектов а не только хелсбаров.



Ранг: 1.5 (гость), 1thx
Активность: 0.010
Статус: Участник

Создано: 13 июня 2011 10:59 · Поправил: Telo
· Личное сообщение · #4

Может найдется время посмотреть мой экран через какуюнибудь программу?
teammviewer или http://www.ammyy.com/ru/
icq 411141181 skype dave_scream jabber davescream@ya.ru



Ранг: 1.5 (гость), 1thx
Активность: 0.010
Статус: Участник

Создано: 14 июня 2011 12:01 · Поправил: Telo
· Личное сообщение · #5

V0ldemAr пишет:
Засунь файл в ИДУ и посмотри откуда идут вызовы той функции где ты остановился ( 0x10127С69 - похоже что это какая-то ДЛЛка )
Скорей всего там универсальная функция в которую передается указатель на обьект где читаются поля обьекта и эта функция на прорисовку всех обьектов а не только хелсбаров.

Я тут посмотрел про какую же ИДУ вы говорите, и наткнулся на скриншот http://www.hex-rays.com/idapro/pix/idalarge.gif - очень крутое окошко wingraph - действительно наверно гораздо легче будет понять откуда был вызов функции.

А там можно так же как и в CE подключиться к уже работающей игре и поставить брейкпоинт по условию?




Ранг: 324.3 (мудрец), 221thx
Активность: 0.480.37
Статус: Участник

Создано: 14 июня 2011 14:39
· Личное сообщение · #6

Telo пишет:
А там можно так же как и в CE подключиться к уже работающей игре и поставить брейкпоинт по условию?

Эта функция называется аттач(Attach)

-----
IZ.RU




Ранг: 65.4 (постоянный), 10thx
Активность: 0.020
Статус: Участник

Создано: 14 июня 2011 15:11
· Личное сообщение · #7

Telo
Если чесно то времени нету да и особого желания к кому-то на комп коннектится и смотреть что делает игра. Не ленись а разберись как работать с IDA ( для анализа ) и OllyDbg ( для отладки как в CE ). Сам когда-то начинал реверсировать с того что писал трейнеры для игр лет 10 назад.



Ранг: 1.5 (гость), 1thx
Активность: 0.010
Статус: Участник

Создано: 14 июня 2011 18:19
· Личное сообщение · #8

V0ldemAr пишет:
Telo
Если чесно то времени нету да и особого желания к кому-то на комп коннектится и смотреть что делает игра. Не ленись а разберись как работать с IDA ( для анализа ) и OllyDbg ( для отладки как в CE ). Сам когда-то начинал реверсировать с того что писал трейнеры для игр лет 10 назад.

Значит общедоступная IDA 5.5, как подсказали выше, attach делать не может? только дебагить в офлайне так сказать... а в реалтайме надо юзать OllyDbg... но чем он лучше/удобней CE ? там есть функция постройки гарфиков как в IDA на рисунке выше?

приду домой буду пробовать)))



Ранг: 106.6 (ветеран), 7thx
Активность: 0.040.02
Статус: Участник

Создано: 14 июня 2011 18:27
· Личное сообщение · #9

Telo
Почти все IDA может. И attach тоже. На приложениях без говнопротов скорее вопрос привычки, что использовать.



Ранг: 65.4 (постоянный), 10thx
Активность: 0.020
Статус: Участник

Создано: 14 июня 2011 18:42
· Личное сообщение · #10

Telo пишет:
там есть функция постройки гарфиков как в IDA на рисунке выше?

Нету, но реально удобней отлажевать в Олли.

ПС: Графы для хиппи



Ранг: 1.5 (гость), 1thx
Активность: 0.010
Статус: Участник

Создано: 14 июня 2011 20:37
· Личное сообщение · #11

Поставил ИДУ, приаттачил её к процессу игры. но не вдуплю как тут чего делать. у меня есть адрес значения переменной, есть адрес кода, который получает доступ к этой переменной..

подключитесь по скайпу плиз хоть ктонить дайте быстрого пинка чтоб с идой научился работать. пару ваших кликов в иде и я уже буду знать как нужно с ней работать.

блин почему такой способ обучения нигде не практикуется через скрин-шаринг ведь это удобно для обучающегося



Ранг: 10.1 (новичок), 5thx
Активность: 0.010
Статус: Участник

Создано: 14 июня 2011 21:40
· Личное сообщение · #12

Telo пишет:
ктонить дайте быстрого пинка


Наиболее быстрый пинок - почитать книгу(хотя бы избранные главы). Быстрее никак. Вернее толку не будет.


 eXeL@B —› Вопросы новичков —› Помощь в трассировке кода игры (есть видео с примером)
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати