Исходник ScriptEmu - Деобфускация луа скриптов путём трассировки.

Разработчик
Статус
Оффлайн
Регистрация
1 Сен 2018
Сообщения
1,597
Реакции[?]
881
Поинты[?]
116K
Всем привет, недавно я вспомнил о своей старой идее бороться с обфускацией в скриптах с помощью эмуляции и трассировки скрипта, и решил написать простенький proof of concept, поэтому представляю вам dev-build.
1674313327823.png
Что такое ScriptEmu?
Это программа, или даже библиотека которая полностью воссоздает среду чита, и позволяет трассировать каждую функцию, и выполнять каллбеки.

Зачем это нужно?
- Борьба с обфускацией в скриптах.
- Отладка ваших скриптов с максимально экстримальными значениями, которые сложно добиться в реальных условиях
- Проверка скриптов без запуска их в чите
есть и другие варианты для использования, всё зависит от вашей фантазии.

Пожалуйста, авторизуйтесь для просмотра ссылки.


Спасибо за моральную поддержку
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Последнее редактирование:
ЧВК YAROSLAV
Забаненный
Статус
Оффлайн
Регистрация
25 Дек 2019
Сообщения
595
Реакции[?]
184
Поинты[?]
31K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ЧВК YAROSLAV
Забаненный
Статус
Оффлайн
Регистрация
25 Дек 2019
Сообщения
595
Реакции[?]
184
Поинты[?]
31K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
как юзать?
 
Дизайнер
Статус
Оффлайн
Регистрация
18 Авг 2017
Сообщения
1,924
Реакции[?]
2,245
Поинты[?]
146K
Товары в продаже
1
это сильно, хорошая работа

теперь есть что использовать для улучшения защиты
 
ЧВК YAROSLAV
Забаненный
Статус
Оффлайн
Регистрация
25 Дек 2019
Сообщения
595
Реакции[?]
184
Поинты[?]
31K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ЧВК YAROSLAV
Забаненный
Статус
Оффлайн
Регистрация
25 Дек 2019
Сообщения
595
Реакции[?]
184
Поинты[?]
31K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
1674338666774.png
 
Разработчик
Статус
Оффлайн
Регистрация
1 Сен 2018
Сообщения
1,597
Реакции[?]
881
Поинты[?]
116K
Есть несколько проблем:
1) Ты забыл подключить инклюды
2) Эта версия является сырым PoC, и не поддерживает полную эмуляцию поэтому она и называется дев версией, стоит подождать некоторое время пока я её допилю до окончательной версии ( около 3-7 дней)
 
Последнее редактирование:
Разработчик
Статус
Оффлайн
Регистрация
1 Сен 2018
Сообщения
1,597
Реакции[?]
881
Поинты[?]
116K
Now this is very nice, but how do you deal with FFI stuff?
So far there is no support for this. as well as ideas on how to implement it, although it is possible to just rebuild the entire ffi for this, but it is too early to think about this.

А также вышло обновление:
- Добавил таблицу рендера
- Добавил колор
- Подправил структуру эмулятора
- Теперь оно даже работает...

Пример трассировки:
Lua:
Код:
local function on_paint()
    renderer.rect_filled_fade(vec2_t.new(5, 5), vec2_t.new(20, 20), color_t.new(255, 0, 0, 255), color_t.new(255, 0, 0, 255), color_t.new(0, 0, 0, 255), color_t.new(0, 0, 0, 255))
end

client.register_callback("paint", on_paint)
Результат трассировки:

C++:
    ScriptEmu alpha
Trace info | Event: Main | Client::RegisterCallBack ( paint )
Trace info | Event: paint | Render::RenderRectFilledFade ( Vector2(5.000000 , 5.000000), Vector2(20.000000 , 20.000000), Color(255.000000 , 0.000000 , 0.000000 , 255.000000), Color(255.000000 , 0.000000 , 0.000000 , 255.000000), Color(0.000000 , 0.000000 , 0.000000 , 255.000000), Color(0.000000 , 0.000000 , 0.000000 , 255.000000) )
 
Разработчик
Статус
Оффлайн
Регистрация
1 Сен 2018
Сообщения
1,597
Реакции[?]
881
Поинты[?]
116K
Еще одно обновление, что было добавлено:
- добавил рейджбот таблицу
- добавил сурс утилс таблицу
- добавил енджин таблицу
- добавил плеер инфо юзертайп с параметрами как мета таблица
что-то еще, но я забыл

Еще в голову пришла идея в будущем расширить это под другие п2с, то есть допилить до полноценного нормального решения.

Опять пример трейсера, но с мета таблицами:
Lua:

Код:
local local_info = engine.get_player_info(engine.get_local_player())
local shit = info.steam_id64

local_info.name = shit
Итог трейсинга:

C++:
ScriptEmu alpha
Trace info | Event: Main | Engine::GetLocalPlayer()
Trace info | Event: Main | Engine::GetPlayerInfo ( 1 )
Trace info | Event: Main | PlayerInfo.Get(steam_id64)
Trace info | Event: Main | PlayerInfo.name = "black"
 
Разработчик
Статус
Оффлайн
Регистрация
1 Сен 2018
Сообщения
1,597
Реакции[?]
881
Поинты[?]
116K
Залил решающий апдейт, который уже может нормально позволить протестировать этот PoC.
Что добавлено?
Usertypes:
- Game event
- UserCmd
- Convar
- Entity
- ViewSetup
- ShotInfo
- Trace
Tables:
- Entity List
- ClientState
- GlobalVars
- Trace
Добавлена поддержка всех каллбеков ( хотя путём костыля )

Чего еще нету?
- FFI support
- Поддержки UI таблицы ( она будет сделана немного позже, может даже в течении этого дня )
- Прохождение через все эвенты ( именно игровых )
Ну и стоит учитывать что это пруф оф концепт, и не является эталоном качества.

Кого интересовал скомпилированный бинарь:
Пожалуйста, авторизуйтесь для просмотра ссылки.

Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Пользователь
Статус
Оффлайн
Регистрация
10 Авг 2022
Сообщения
78
Реакции[?]
105
Поинты[?]
1K
На
Пожалуйста, авторизуйтесь для просмотра ссылки.
доступна версия с пользовательским интерфейсом. Для запуска трассировки просто перекиньте .lua файл в окно приложения.

1674911674435.png

Скачать скомпилированный исходник теперь можно на странице релизов на Github

Пожалуйста, авторизуйтесь для просмотра ссылки.
|
Пожалуйста, авторизуйтесь для просмотра ссылки.


Если есть предложения по улучшению или вам чего-то не хватает в интерфейсе - пишите сюда.
 
Похожие темы
Сверху Снизу