-
Автор темы
- #1
Шалом сладенькие.
Ну что же пошли В старые добрые времена, когда Rust использовал mono, было легко, получить какой либо оффсет. Тупо переместив Assembly-CSharp.dll в dnSpy.
Теперь же почти все используют IL2CPP, который, в конце концов, не так уж и плох.
Сначала вы должны скачать "IL2CPPDumper".
После этого откройте его, и он предложит вам диалоговое окно. Там все просто берем открываем GameAssembly.dll ну и RustClient_Data->il2cpp_data->Metadata и выбрать global-metadata.dat Тем того как достать оффсет с помощью "IL2CPPDumper" очень и очень много.
Если вы все таки не знаете как достать Metadata тогда вот вам нужно перейти в каталог Rust и найти файл с именем "GameAssembly.dll"! Это должно быть легко, поскольку GameAssembly находится в той же папке, что и исполняемые файлы Rust.
После выбора "IL2CPPDumper" он снова предложит вам диалоговое окно с файлом, и теперь вам нужно перейти в *главную папку rust* -> RustClient_Data-> il2cpp_data-> Metadata и выбрать файл global-metadata.dat все больше ничего не нужно жмем дамп.
После этого IL2CPP загрузится на некоторое время, и вы найдете папку под названием «DummyDLL» в том же каталоге, в котором вы открыли дампер.
Там найдите Assembly-CSharp.dll и откройте его в редакторе сборки .NET.
На ваш выбор. Я рекомендую dnSpy, ilSpy или dotPeek.
Теперь просто найдите то, что вы ищете, например, «здоровье», и когда оно появится, просто щелкните по нему, и вы должны увидеть «FieldOffset». Это то ваш оффсет, которое вы ищете!.
Часть 2: BaseNetworkable.
Это легко в том же каталоге, что и дампер а точней там же где и папка «DummyDLL».
Вы должны найти название script.json. Откройте его в блокноте, нажмите Ctrl + F и введите basenetworkable_c (basenetworkable_typeinfo делает то же самое). После того, как вы его найдете, он должен выглядеть примерно так:
{
"Address": 50303664,
"Name": "BaseNetworkable_TypeInfo",
"Signature": "BaseNetworkable_c *"
}.
Теперь просто возьмите адрес и поместите его в преобразователь DecimalToHex . После этого просто добавьте 0x перед выходом (в моем случае это будет 0x2FF92B0).
И поздравляю, вы получили свой зачет!
Часть 3: GameObjectManager
Это немного сложно. Но вы все еще можете это сделать!
Загрузите Unity (игровой движок) с модулем IL2CPP, затем создайте приложение с включенным PDB.
После этого откройте IDA (я думаю, что бесплатное программное обеспечение IDA тоже поможет, просто найдите IDA_Interactive Disassembler и загрузите бесплатную версию) и выполните поиск GameObject :: CleanupClass, вы сможете найти там GOM.
Думаю уроки по IDA вы тоже найдете.
Ну что же такая вот дичь Спасибо что прочли.
Ну что же пошли В старые добрые времена, когда Rust использовал mono, было легко, получить какой либо оффсет. Тупо переместив Assembly-CSharp.dll в dnSpy.
Теперь же почти все используют IL2CPP, который, в конце концов, не так уж и плох.
Сначала вы должны скачать "IL2CPPDumper".
После этого откройте его, и он предложит вам диалоговое окно. Там все просто берем открываем GameAssembly.dll ну и RustClient_Data->il2cpp_data->Metadata и выбрать global-metadata.dat Тем того как достать оффсет с помощью "IL2CPPDumper" очень и очень много.
Если вы все таки не знаете как достать Metadata тогда вот вам нужно перейти в каталог Rust и найти файл с именем "GameAssembly.dll"! Это должно быть легко, поскольку GameAssembly находится в той же папке, что и исполняемые файлы Rust.
После выбора "IL2CPPDumper" он снова предложит вам диалоговое окно с файлом, и теперь вам нужно перейти в *главную папку rust* -> RustClient_Data-> il2cpp_data-> Metadata и выбрать файл global-metadata.dat все больше ничего не нужно жмем дамп.
После этого IL2CPP загрузится на некоторое время, и вы найдете папку под названием «DummyDLL» в том же каталоге, в котором вы открыли дампер.
Там найдите Assembly-CSharp.dll и откройте его в редакторе сборки .NET.
На ваш выбор. Я рекомендую dnSpy, ilSpy или dotPeek.
Теперь просто найдите то, что вы ищете, например, «здоровье», и когда оно появится, просто щелкните по нему, и вы должны увидеть «FieldOffset». Это то ваш оффсет, которое вы ищете!.
Часть 2: BaseNetworkable.
Это легко в том же каталоге, что и дампер а точней там же где и папка «DummyDLL».
Вы должны найти название script.json. Откройте его в блокноте, нажмите Ctrl + F и введите basenetworkable_c (basenetworkable_typeinfo делает то же самое). После того, как вы его найдете, он должен выглядеть примерно так:
{
"Address": 50303664,
"Name": "BaseNetworkable_TypeInfo",
"Signature": "BaseNetworkable_c *"
}.
Теперь просто возьмите адрес и поместите его в преобразователь DecimalToHex . После этого просто добавьте 0x перед выходом (в моем случае это будет 0x2FF92B0).
И поздравляю, вы получили свой зачет!
Часть 3: GameObjectManager
Это немного сложно. Но вы все еще можете это сделать!
Загрузите Unity (игровой движок) с модулем IL2CPP, затем создайте приложение с включенным PDB.
После этого откройте IDA (я думаю, что бесплатное программное обеспечение IDA тоже поможет, просто найдите IDA_Interactive Disassembler и загрузите бесплатную версию) и выполните поиск GameObject :: CleanupClass, вы сможете найти там GOM.
Думаю уроки по IDA вы тоже найдете.
Ну что же такая вот дичь Спасибо что прочли.