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

 eXeL@B —› Вопросы новичков —› Компиляция файла ассемблера, созданного декомпилятором
<< . 1 . 2 .
Посл.ответ Сообщение

Ранг: 9.7 (гость)
Активность: 0.020
Статус: Участник

Создано: 12 ноября 2011 16:01 · Поправил: Dim77
· Личное сообщение · #1

Нужно скомпилить ассемплеровский файл, созданный декомпилятором, в данном случае IDA 6.1. FASM не берет, пишет в процессе, что у него закончилась память, MASM ругается на некоторые строчки, говоря что: : error A2066: incompatible CPU mode and segment size.
В данном случае имеется в ввиду строка:

_text segment para public 'CODE' use32
assume cs:_text

Как лучше подойти к решению проблемы?

Файл ассемплера залил Discipl2.asm (32.28 MB)




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 03 декабря 2011 22:10
· Личное сообщение · #2

Dim77 пишет:
Хмм, так без подсказок в коде найти нужный sub_xxxxxxxxx неполучается.. )

зачем его искать? просто удалите тот exit_0 и пусть там будет банальный sub_xxxxxx который должен был быть если бы IDA туда не поставила свое "чудо"

Dim77 пишет:
Дык, я думаю оно все же быстрее инжектнуть, чем обратно реверсить. Вот народ и не заморачвается.

в пересчете на деньги это одно и тоже
насколько я могу судить - один инжект (найти, реализовать, затестить) около 500-1000$
при этом реверс все игрухи я думаю потянул бы ну на 2000$ с натяжкой
а инжектов бывает и по 10 в одной игре
да еще и отдельно для клиента и отдельно для сервера
так что денег у вас хоть лопатой грузи))



Ранг: 112.9 (ветеран), 186thx
Активность: 0.090.01
Статус: Участник

Создано: 03 декабря 2011 23:38 · Поправил: vden
· Личное сообщение · #3

reversecode пишет:
как то изучал игруху в которую раза три инжектился всякий доп код и раза два дописывались доп секции .data .text .... это кошмар))


Полностью согласен. Мне приходилось "дорабатывать" игры без исходников и это кошмар, особенно в плане дальнейшей поддержки.

подцепить dll
я имел в виду минимальный патчинг самого приложения. Т.е. новый функционал пишется в отдельной DLL, создаются интерфейсы для того чтобы состыковать эту DLL и основной модуль.

реверс всей игрухи я думаю потянул бы ну на 2000$ с натяжкой
я тоже предпочитаю реверсить полностью, там где это оправдано, но имхо стоимость такой работы в разы выше. (тем более, если нужно чтобы оно потом ещё и работало, а не просто компилировалось).

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



Ранг: 9.7 (гость)
Активность: 0.020
Статус: Участник

Создано: 04 декабря 2011 00:14
· Личное сообщение · #4

reversecode пишет:
просто удалите тот exit_0 и пусть там будет банальный sub_xxxxxx который должен был быть если бы IDA туда не поставила свое "чудо"


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

reversecode пишет:
в пересчете на деньги это одно и тоже


Я думаю, что здесь все зависит еще и от того, кто эту работу будет делать. Т.е., если бы я платил из своего кармана опытному реверснику )), то мне бы это обошлось наверное в указанные суммы. Если я делаю это сам, то соответственно расплачиваюсь своим временем, которое в области реверс-инженеринга имеет весьма малую стоимость пока что, ибо ресурс в этой области я неопытный.

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

Чтобы часть этих рисков убрать нужно (ИМХО) начинать понемногу, уменьшая необходимый обьем действий до минимума и постепенно расширяя задачи...

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




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 04 декабря 2011 00:20
· Личное сообщение · #5

sub_xxxxx где xxxxx это адресс в секции .text, слева напротив sub_ в другую сторону))

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

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



Ранг: 9.7 (гость)
Активность: 0.020
Статус: Участник

Создано: 04 декабря 2011 00:48 · Поправил: Dim77
· Личное сообщение · #6

reversecode пишет:
sub_xxxxx где xxxxx это адресс в секции .text, слева напротив sub_ в другую сторону


Аа, блин тупайя... ))

reversecode пишет:
в геймдеве деньги есть! так что не надо ляля))
вы еще скажите что игру вы хотите переписать для себя, что бы новых персонажей добавить, а то вам уже в ней скучно
и денег вы конечно не заработаете на ней


Ну вы просто видите проект насквозь...)) Если честно, то деньги естесственно можно заработать, особенно на том, что нравится. Хотите верьте, хотите нет, но сейчас думать серьезно о деньгах именно на этом проекте было бы просто несерьезно с моей стороны. Т.е. остальные участники совершенно точно ничего не заплатят и ничего от этого не получат на данном этапе кроме а) скилов б) морального удовлетворения. А так, есть кое-какие идеи на будущее, но это пока что не часть этого проекта и сначала все-таки нужно работу сделать и получить левел ап (через experience )) )

Игра кстати довольно старая. Ей в марте будет 10 лет со дня выхода.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 04 декабря 2011 01:07 · Поправил: reversecode
· Личное сообщение · #7

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

не знаю я в игрушки не играю)

yagelloесть статьи где народ доказывал на практике что это возможно)
http://erfaren.narod.ru/Asm/Erfaren005.htm



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

Создано: 04 декабря 2011 01:48 · Поправил: yagello
· Личное сообщение · #8

Извините, что вмешиваюсь. Даже если удастся скомпилировать ассемблерный текст ИДА, в чем есть определенные сомнения, вероятность того, что оно будет после этого работать, близка к 0.
Не стоит переоценивать качество дизассемблирования ИДЫ. Иногда ссылки на переменные будут в виде констант, иногда наоборот, вместо констант - ссылки на якобы переменные.
И чем больше объем программы, тем больше таких мест. Все вычистить практически нереально. Неужели это надо объяснять?
Ищите другой способ решить ваши задачи. Он всегда есть.


<< . 1 . 2 .
 eXeL@B —› Вопросы новичков —› Компиляция файла ассемблера, созданного декомпилятором
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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