Как взломать игровые скрипты.
Для того что бы, показать как взломать и посмотреть игровые скрипты, которые созданные в игровом движке Unity5, мы создадим пустой проект с каким-нибудь простым скриптом, например таймер.
Далее, сохраним сцену и скомпилируем все это в игру для платформы windows.
Укажем папку для сохранения игры и назовем файл к примеру test.
По сути, у нас уже готова игра с простым скриптом таймера, давайте попробуем взломать нашу игру и посмотреть из чего состоит этот скрипт.
В папке, куда скомпилирована наша игра, есть файл с расширением exe и папка с библиотеками куда Unity и компилирует все игровые скритпы, игровые модели и т.д. Нам понадобятся, для просмотра скрипта, всего один файл. В папке managed найдите файл Assembly-CSharp.dll
Далее скачиваем бесплатную программу ILSpy, распаковываем в удобное для нас место и запускаем программу.
Нажимаем File — Открыть и выбираем наш файл с расширением dll. Далее видим что программы декомпилировала все скрипты, которые находились в нашей игре и без труда показывает все содержимое этих скриптов. В нашем случае нам нужен скрипт timer, посмотрим на него.
Как видим, Unity не сильно то и затрудняется шифровать игровые скрипты , особо не меняет их структуру и так же, не меняет название переменных. Таким образом, есть возможность посмотреть скрипты большинства игр созданных на Unity, например скрипты игры The Long Dark без труда можно посмотреть в данной программе.
На этом все! Удачных проектов!
System.OutOfMemoryException: Измерения массива превысили поддерживаемый диапазон.
в Microsoft.Cci.Pdb.MsfDirectory..ctor(PdbReader reader, PdbFileHeader head, BitAccess bits)
в Microsoft.Cci.Pdb.PdbFile.LoadFunctions(Stream read, BitAccess bits, Boolean readAllStrings, Int32& age, Guid& guid)
в Mono.Cecil.Pdb.PdbReader.PopulateFunctions()
в Mono.Cecil.Pdb.PdbReader.ProcessDebugHeader(ImageDebugDirectory directory, Byte[] header)
в Mono.Cecil.ModuleDefinition.ProcessDebugHeader()
в ICSharpCode.ILSpy.LoadedAssembly.LoadSymbols(ModuleDefinition module)
в ICSharpCode.ILSpy.LoadedAssembly.LoadAssembly(Object state)
в System.Threading.Tasks.Task`1.InnerInvoke()
в System.Threading.Tasks.Task.Execute()
При попытке открыть файл Assembly-CSharp в ILSpy выходит такая ошибка и посмотреть скрипты из игры не получается