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

Контекст

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

Вопрос

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

Решение

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

Ответы [ 3 ]

0 голосов
/ 12 июня 2018

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

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

0 голосов
/ 12 июня 2018

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

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

0 голосов
/ 11 июня 2018

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

...