Как разобрать программу на исходный код

Маленькое пособие для тех, кто интересуется, как устроены их любимые интерактивные работы. Разберём все популярные и не очень популярные движки.

Фотоиллюстрация статьи: Alexander Andrews

Ren’Py

Сначала при помощи rpatool нужно разархивировать файлы RPA:

python rpatool -x scripts.rpa

Так легко посмотреть аудио и изображения из игры. Но так как нас интересуют скрипты, придётся пойти дальше. Скачайте файл un.rpyc и положите его в папку с игрой, а затем запустите саму игру. После этого она сама декомпилирует все .rpyc файлы в обычные .rpy на Питоне.

Z-машина

С Inform всё хитро, потому что у него две виртуальных машины: Z-машина и Glulx. Начнём со старенького.

В общем случае для файлов Z1-Z8 есть дезассемблер TXD, который входит в пакет ztools. Его придётся собирать из исходников на Си, но после этого всё довольно просто: ему достаточно указать адрес файла, и он выдаст его код. Сам код даётся в опкодах для Z-машины, поэтому он ничего не скажет непосвящённым людям, а вот полный список используемых строк в игре будет очень полезен. Это очень полезно, например, при переводах парсерок.

Как получить исходный код почти любого apk?

К сожалению, на играх RInform txd падает (по segfault) как только доходит до русских строк.

Самые старые файлы Z1-Z3 также открываются онлайн при помощи интерпретатора Encrusted. Просто откройте файл, нажмите на «гамбургер-меню» справа и выберите галочку «Show object tree», которая покажет дерево всех объектов в игре. Это не декомпиляция, но тоже интересно.

Для glulx есть декомпилятор mrifk. Он даёт полный псевдокод игры, вместе с комнатами, объектами, параметрами и глаголами, но тоже очень не любит RInform.

> «Sfbf 5so-nibtew ntgno( — rpqa7icafs Xlli- — Sfbf pqacea tgf poqa rpasw»-

Кроме того, есть онлайн-декомпилятор glulx-strings, который даёт полный список строк из игр Glulx, Z-машины, TADS 2 и TADS 3. Он не ломается на русских играх, но текст игр на RInform-Z6 будет зашифрован подстановкой. Пытливый читатель легко поймёт, из какой игры была цитата выше.

Читайте также:
Роль аниматоров в организации анимационных программ
QSP

Формат QSP открывается QGen’ом. Этого достаточно, чтобы сделать патч к какой-нибудь чужой заброшенной игре.

Если игра защищена паролем, то можно воспользоваться декодером от AleksVersus.

Ink

Ink использует машиночитаемый формат JSON, в котором всё довольно прозрачно для человека, хотя трудно разобрать логику. По крайней мере, видны все строки. Обратной трансформацией пока никто не занимался.

Unity

Логика игры компилируется в DLL для виртуальной машины .NET, обычно под названиями Assembly-CSharp.dll, Assembly-CSharp-firstpass.dll и Assembly-UnityScript.dll. Они открываются декомпиляторами .NET: Telerik, dotPeek, ILSpy, Reflector. На выходе будет код на C#.

Конечно, уже существует платный обфускатор, который делает код менее читабельным.

Ресурсы распаковываются, например, через Unity Assets Explorer.

КАК ЧИТАТЬ ИСХОДНЫЕ КОДЫ | СОВЕТЫ ОТ СОЕРА

INSTEAD

Игры на INSTEAD шифруются как текст. Кодирование исходников идёт в обратную сторону при запуске игры, и в проекте с открытым исходным кодом легко посмотреть, как же оно устроено. И относительно легко повторить.

В отличие от других движков, INSTEAD ещё не настолько популярен, чтобы в интернете были легко упакованные программы для распаковки игр. Поэтому вам понадобится консоль, компилятор Си и кусок кода из instead.c. Кусок с побитовым сдвигом нужно поставить в простую программу чтения файла в консоли. (Оставлю это упражнение пытливому читателю.) В полученном коде сохраняются даже комментарии автора.

Справедливости ради, существует вариант с реальной компиляцией кода Lua, но им никто не пользуется, потому что байтовый код непереносим: пришлось бы выпускать несколько версий игры для каждой архитектуры (отдельно 32 бита, 64 бита, Android и так далее).

URQ

Незашифрованные игры на URQ достаточно открыть в текстовом редакторе. Опытные игроки называют это «прохождение в блокноте».

Читайте также:
Отзывы о программе антирадар

Алгоритмы декодирования QS1 и QS2 можно взять из исходников FireURQ.

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

ЯРИЛ

В ЯРИЛ тоже есть шифрование игр, и, что неожиданно, оно использует реальную криптографию — ключи DES. Написать собственный декодировщик DES уже гораздо сложнее чем пять раз перепройти «Комсомольца», так что ЯРИЛ останется единственной неприступной платформой в этом списке.

Twine

Пропустим другие HTML-платформы, потому что код игр на Javascript и HTML уже достаточно читабелен. Но вот Twine стоит подробного осмотра.

Во-первых, все игры Twine открываются в самом редакторе Twine. Игры Twine 1 открываются только в редакторе Twine 1 и то же самое для второй версии. Поэтому если вы хотите посмотреть исходники какой-нибудь игры, её достаточно импортировать в редактор.

Кроме того, при помощи программы tweego HTML-файл можно преобразовать в приличный человеческий черновик для редактирования.

TADS 2 (дополнение)

Кроме вышеупомянутой страницы, которая достаёт все строки из игры, есть ещё один скрипт на Perl, который полностью декомпилирует игру. Если запустить его в командной строке, то вы получите файл .t со всеми функциями игры.

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

В заключение

Данная информация дана для личного ознакомительного использования. Законы большинства стран запрещают взлом программного обеспечения, а также распространение результатов взлома. Играйте честно.

Источник: ifhub.club

Reverse Engineering (получаем исходный код )

Reverse Engineering (также обратная разработка) — это процесс разбора программы. Так программисты компилируют свой код в приложение,а реверсеры из готового приложения достают исходный код. Целей для этого может быть куча,понять как устроена программа,украсть чьи то разработки,т.д. Так разобрать можно абсолютно любую программу,на любом языке(это может быть довольно сложно))

Читайте также:
Модем это почтовая программа

Программы, которые используются в Reverse Engineering

DetectItEasy/PEiD/ExeInfo — программы для анализа исполняемых файлов.

Эти программы дают нам информацию про то, чем была скомпилирована программа; язык написания; стоит ли защита от вскрытия(протектор), если да,то какая; .

c233611806899ae750e3a.png

DnSpy/IDA/OllyDbg — программы для обратного программирования, разбора приложений.

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

90729cafbcaeba48f7a7c.png

MegaDumper — программа для создания копии запущенной,распакованной программы.

Данная программа и ее аналоги дают нам возможность сделать слепок запущенной программы.

f19640ba4acb9fd683d69.png

D4dot/ConfuserDeobfuscator — программы для снятия протекторов/обфускаторов/защиты от декомпиляции.

Так разработчики для спасения от вскрытия программы ставят на них защиту — протекторы. Данные программы дают возможность нам снять защиту с приложения.

1fd1b9c387fb9cc6310f4.png

Список можно продолжать еще довольно долго,но на этом мы с вами остановимся.

Пример реверсинга программы написанной на c#

С помощью гугла нашел паблик с «читами» на игру «контра сити». Под видом читов здесь распостраняют разные вирусы.

Для нас это идеальный вариант поупражняться в реверсинге. В паблике с любого поста качаем наш «чит».

fcc12510fc6ee469061ab.png

Суем наше приложение в DetectItEasy/Аналог и получаем про него информацию.

094cc00918cd1915aa042.png

И нам сразу стает ясно,что это просто SFX архив,который мы распаковываем и получаем файл,который мы также суем в DIE

636378fd4ab3750d956db.png

Как разобрать программу?

3 ноября 2014 г. Просмотров: 733

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

Вам понадобится

  • — программа для просмотра исходного кода;
  • — возможно, средства реверс-инженерии и case-средства.

Источник: imguru.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru