-
Автор темы
- #1
Категорически всех приветствую, с вами снова программист-неудачник Евгений и сегодня мы разберем по полочкам AC проекта Live World 116 devblog.
Итак мои маленькие и не очень читатели, начинаем.
Весь AC-клиент(если его можно так назвать) состоит из двух файлов:
"launcher_116.exe" - в папке с игрой,
и
"LWMod.dll" - в Rust116_Data\Managed
Рассмотрим два файла:
На этом гайд можно завершить :)
Ну вроде все что знал - рассказал. Критика приветствуется если она обоснованная и адекватная :3
Приятной игры в Rust.
С вами был программист-реверсер на минималках Евгений. До скорой встречи...
Итак мои маленькие и не очень читатели, начинаем.
Весь AC-клиент(если его можно так назвать) состоит из двух файлов:
"launcher_116.exe" - в папке с игрой,
и
"LWMod.dll" - в Rust116_Data\Managed
Рассмотрим два файла:
Воспользуемся бесплатной утилитой "
Перетаскиваем exe файл и получаем следующую картину строения программы:
Конкретно нас интересует форма под названием: "Form1".
Ищем класс под названием "GetClientUpdate"
Итак, что мы тут видим? А видим мы следующую картину: идет проверка MD5 хеш файлов и в случае несовпадения данных с сайта - надпись меняется на "Доступно обновление клиента!!!".
Так же не забываем про проверку на валидность клиента в "GetLaunchertUpdate"
Думаю, на этом разбор лаунчера можно завершить :)
p.s - Не совсем понимаю зачем нужно проверять System.Drawing.dll, кто знает - прошу написать.
Пожалуйста, авторизуйтесь для просмотра ссылки.
", с её помощью можно легко и просто редактировать и просматривать программы на языке C# (Cи решётка).Перетаскиваем exe файл и получаем следующую картину строения программы:
Конкретно нас интересует форма под названием: "Form1".
Ищем класс под названием "GetClientUpdate"
Итак, что мы тут видим? А видим мы следующую картину: идет проверка MD5 хеш файлов и в случае несовпадения данных с сайта - надпись меняется на "Доступно обновление клиента!!!".
Так же не забываем про проверку на валидность клиента в "GetLaunchertUpdate"
Думаю, на этом разбор лаунчера можно завершить :)
p.s - Не совсем понимаю зачем нужно проверять System.Drawing.dll, кто знает - прошу написать.
Рассмотрим LWMod.dll.
Все так же заходим в "DnSpy" и глядим в оба:
Тоже пытаетесь понять что тут написано? Не пытайтесь, файл зашифрован/обфусцированный.
"И что же делать?" - спросите Вы меня. Отвечаю: снимать "обфускацию".
Для этого нужно понять что за обфускатор поработал над файлом. Многие уже догадались по кодировке символов классов что это .net Reactor 4.x версии который легко снимается de4dot, но мой гайд рассчитан на подробное изложение материала поэтому я покажу как можно с точностью в 80% определять шифрование. Воспользуемся программой
Перетаскиваем файл в программу и видим:
Как мы и предполагали выше, .Net Reactor собственной персоной ?
Ну ничего, воспользуемся программой de4dot которая нам поможет снять "протект".
Перетаскиваем нашу DLL на de4dot.exe и смотрим результат.
Результат положительный (хорошо что не COVID-19 :D)
Теперь расшифрованную DLL можно редактировать. Перетаскиваем новую DLL в DnSpy и любуемся.
Заходим в namespace LWMod и смотрим:
(За получение MD5 хеша отвечает класс smetod_0)
Конкретно этот кусок кода получает текущий модуль LWmod.dll и проверяет его MD5 хеш, а также MD5 хеш Assembly-CSharp.dll, а также сразу отсылает это при подключение на сервер игры через консоль (в консоли будет пусто).
Этот кусок кода ответственный за скриншот вашего экрана и сохранение его в буфер обмена, либо если он недоступен то в файл по пути "FOLDER_WITH_RUST\\Bundles\\items\\jacket.red.txt" и дальнейшей отсылкой его на сервер через всю ту же невидимую консоль.
Этот кусок кода ответственный за отправку ваших загруженных модулей и процессов ПК на сервер. Пример отправки: "proc.proc explorer.exe 49f68a5c8493ec2c0bf489821c21fc3b;..."
Этот кусок кода отправляет название вашего процесса с Rust'ом.
Потихоньку переходим в LWMod.Plugins/FileCheck
Итак, этот кусочек кода выполняет условие:
Если в модули не содержат в своём пути папку "Managed"
{
на сервер отправляем команду "testchit"
}
Судя по всему (не уверен на 100%) это проверка на ботов 0_о
Думаю, на этом разбор античита можно завершить :)
Все так же заходим в "DnSpy" и глядим в оба:
Тоже пытаетесь понять что тут написано? Не пытайтесь, файл зашифрован/обфусцированный.
"И что же делать?" - спросите Вы меня. Отвечаю: снимать "обфускацию".
Для этого нужно понять что за обфускатор поработал над файлом. Многие уже догадались по кодировке символов классов что это .net Reactor 4.x версии который легко снимается de4dot, но мой гайд рассчитан на подробное изложение материала поэтому я покажу как можно с точностью в 80% определять шифрование. Воспользуемся программой
Пожалуйста, авторизуйтесь для просмотра ссылки.
3.0 (Detect It Easy).Перетаскиваем файл в программу и видим:
Как мы и предполагали выше, .Net Reactor собственной персоной ?
Ну ничего, воспользуемся программой de4dot которая нам поможет снять "протект".
Перетаскиваем нашу DLL на de4dot.exe и смотрим результат.
Результат положительный (хорошо что не COVID-19 :D)
Теперь расшифрованную DLL можно редактировать. Перетаскиваем новую DLL в DnSpy и любуемся.
Заходим в namespace LWMod и смотрим:
(За получение MD5 хеша отвечает класс smetod_0)
Конкретно этот кусок кода получает текущий модуль LWmod.dll и проверяет его MD5 хеш, а также MD5 хеш Assembly-CSharp.dll, а также сразу отсылает это при подключение на сервер игры через консоль (в консоли будет пусто).
Этот кусок кода ответственный за скриншот вашего экрана и сохранение его в буфер обмена, либо если он недоступен то в файл по пути "FOLDER_WITH_RUST\\Bundles\\items\\jacket.red.txt" и дальнейшей отсылкой его на сервер через всю ту же невидимую консоль.
Этот кусок кода ответственный за отправку ваших загруженных модулей и процессов ПК на сервер. Пример отправки: "proc.proc explorer.exe 49f68a5c8493ec2c0bf489821c21fc3b;..."
Этот кусок кода отправляет название вашего процесса с Rust'ом.
Потихоньку переходим в LWMod.Plugins/FileCheck
Итак, этот кусочек кода выполняет условие:
Если в модули не содержат в своём пути папку "Managed"
{
на сервер отправляем команду "testchit"
}
Судя по всему (не уверен на 100%) это проверка на ботов 0_о
Думаю, на этом разбор античита можно завершить :)
Ну вроде все что знал - рассказал. Критика приветствуется если она обоснованная и адекватная :3
Приятной игры в Rust.
С вами был программист-реверсер на минималках Евгений. До скорой встречи...