Декомпиляция/распаковка файла (реверс-инжиниринг компилятора)

Я использую программу, которая может упаковать/скомпилировать папку с файлами в один файл *.xyz, который только эта программа может декомпилировать и читать. Для того чтобы программа создала скомпилированный файл флаг:

[Compile]
Decompile=1

должен находиться в файле Meta.ini. В противном случае файл не может быть распакован/декомпилирован и нет возможности вернуть исходные файлы.

Я создал скомпилированный файл и потерял исходные файлы. Я забыл добавить флаг декомпиляции, поэтому сейчас у меня нет возможности распаковать файл и продолжить работу. Я все еще могу компилировать и декомпилировать файлы с помощью программы, пока я включаю флаг. Созданный файл имеет формат FoxPro FPT. Программа написана на Visual Basic.

Подводя итог:

  • У меня есть скомпилированный/упакованный файл, который мне нужно декомпилировать/распаковать.
  • У меня есть доступ к программе, которая может компилировать и декомпилировать файл.
  • У меня нет необходимого флага декомпиляции в файле.
  • Созданный файл имеет формат FoxPro FPT.
  • Программа написана на Visual Basic.

Я знаю, куда должен идти флаг, но у меня нет возможности вставить его без предварительной декомпиляции/распаковки файла (о котором я знаю). Мои варианты — либо найти способ декомпиляции самого файла, либо найти способ изолировать декомпилятор от остальной части программы. Любая помощь будет принята с благодарностью.

Спасибо


person Alex Bridges    schedule 08.12.2015    source источник
comment
Вы можете установить точку останова в точке, где (не)упаковщик читает и оценивает параметр «Декомпилировать», изменить результат и продолжить. За исключением того, что нам понадобится образец упакованного («скомпилированного») файла; например если он защищен XOR, вы можете пробивать новые значения через кожух, не удаляя его сначала, например. XOR с (old_value XOR new_value) в нужном месте. Работает, например, для удаления так называемой защиты от декомпиляции из файлов под маркой Refox (которую в любом случае соблюдает только Refox).   -  person DarthGizka    schedule 08.12.2015
comment
@DarthGizka Как бы я это сделал? Открою ли я программу в отладчике и зафиксирую, что она делает, когда декомпилирует файл .xyz? Я могу создать фиктивный файл с флагом, который затем можно декомпилировать.   -  person Alex Bridges    schedule 08.12.2015
comment
Ну, отладка и спелеология обсуждаются на Reverse Engineering. По сути, вы берете отладчик, такой как IDA или Cheat Engine, и устанавливаете аппаратную точку останова чтения на постоянной строке Decompile в сегменте данных, смотрите, что развивается, и следите за своим носом. Размещение двух небольших примеров — идентичных, за исключением параметра «Декомпилировать» — в таком месте, как PasteBin, позволит людям оценить ситуацию, но обычно мы хотели бы попробовать свои силы в программе (не знаю, какая там у вас ситуация с лицензией). DBF и FPT достаточно хорошо структурированы.   -  person DarthGizka    schedule 08.12.2015
comment
довольно хорошо задокументированы, остальное сложно. Я знаю структуру FXP/APP вдоль и поперек, включая оболочку XOR, которую вы получаете с ключевым словом ENCRYPT при компиляции, и все змеиное масло, стоящее за Refox и Xitech Cryptor. Если ничего из Foxish нет, то люди из Reverse Engineering могли бы лучше помочь.   -  person DarthGizka    schedule 08.12.2015
comment
@DarthGizka Я только разбираюсь с Cheat Engine. Я нашел шестнадцатеричный код, который вызывает: .get_DecompileToolStripMenuItem. Могу ли я как-то вставить это, когда программа загружает контекстное меню, в котором отображается параметр «Декомпилировать»?   -  person Alex Bridges    schedule 08.12.2015
comment
Это, вероятно, где-то в отдаленных окрестностях интересных вещей; должны быть лучшие, более близкие попадания в Decompile. Однако такие вещи являются прерогативой обратного инжиниринга; люди там должны быть в состоянии помочь вам.   -  person DarthGizka    schedule 08.12.2015
comment
@DarthGizka Я создам там тему, спасибо за помощь :)   -  person Alex Bridges    schedule 09.12.2015
comment
@DarthGizka здесь это это если вы хотите посмотреть, как идут дела.   -  person Alex Bridges    schedule 09.12.2015


Ответы (1)


Ты говоришь

У меня есть доступ к программе, которая может компилировать и декомпилировать файл.

Затем просто измените часть, которая проверяет этот флаг, и декомпилируйте.

person Cetin Basoz    schedule 09.12.2015
comment
будет ли лучший способ сделать это с помощью редактора памяти, такого как Cheat Engine? Я создал тему в Reverse Engineering, которая кажется лучшим местом для решения этой проблемы. - person Alex Bridges; 09.12.2015
comment
Нет, вам не нужен чит-движок или что-то в этом роде. Вы сказали, что у вас есть доступ к программе. Перекодируйте его, чтобы не проверять метаданные, а компилировать и запускать. - person Cetin Basoz; 09.12.2015
comment
Я имел в виду, что у меня есть доступ к исполняемому файлу, а не к исходному коду. Помимо редактирования памяти, есть ли способ заставить программу либо получить положительный результат при проверке флага, либо декомпилировать без проверки флага вообще? - person Alex Bridges; 09.12.2015