Как выполнить обратную разработку.exe, который использует файл.resource для хранения сборки?

контекст

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

Вопрос

Я декомпилировал.exe, используя dotPeek для получения исходных файлов, но столкнулся с проблемой: я получил только исходные файлы для модуля запуска. Модуль запуска внедряет сборку ядра в наше приложение во время выполнения. Это делается путем сохранения сборки в виде шестнадцатеричных данных в файле.resource. Любая идея о том, как я могу получить исходный код из этого файла.resource?

Решение

Спасибо всем за помощь. Я получил исходные файлы, извлекая двоичные данные из файла.resource и записывая их в файл.dll, а затем декомпилируя их с помощью dotPeek. Смотрите мое решение для более подробной информации.

3 ответа

Разве вы не сможете использовать GetManifestResourceStream получить встроенные данные?

Спасибо всем за помощь - сочетание использования декомпилятора и чтения двоичных данных сборки во время выполнения и записи их в файл.dll помогло мне получить исходный код:

Я использовал dotPeek для декомпиляции лаунчера. В проводнике сборки я затем щелкнул правой кнопкой мыши по сборке и выбрал Export to Project... Затем я открыл проект в Visual Studio и вставил строку, которая использовала File.WriteAllBytes написать байт [] (уже доступен через их приложение, но он только что получил двоичные данные из файла.resource, используя ResourceManager.GetObject) в файл.dll. Затем я открыл этот DLL-файл в dotPeek и wala - исходный код виден.

Я рекомендую проектировать вокруг проблемы, своего рода программную капчу, применяемую сервером. Истина вашей проблемы:.Net открыта для расширения. Вместо того, чтобы участвовать в "гонке вооружений" кошка-мышка "" вокруг клиентского приложения, подумайте о том, как вы обнаруживаете нечеловеческую деятельность или как случайным образом требовать участия только человека.

Если ваша игра заслуживает внимания, они вас одолеют. Их много:)

Другие вопросы по тегам