Исходник LuaJIT hook obfuscate/joiner

The Spark

Известный
Автор темы
653
671

Утилита для скомпилированных LuaJIT скриптов​

Самый простой хук на load и на loadstring. Вытащит код из под нубо-обфускации или склейку.
Обычно достаёт исходный файл скрипта, с которым был склеен стиллер, ведь горе распространители просто берут паблик скрипт, паблик стиллер, склеивают и в продакшн.
Можно открывать файлы: Тык Тык - это одни из последних в теме проверки ПО.
Много кто юзает такое, так что актуально.

UPDATE 14.12.2022:
Поставил заглушки на функции, которые я посчитал опасными. Сделал обход 2-х функций на проксирование.
Т.к я человек, я не могу учесть все способы вызова небезопасных функций, поэтому использование данного инструмента рекомендуется когда вы точно знаете, что ничего плохого не случится.
Создал репу, куда вы сможете пулл реквестить свои заглушки и тд.

UPDATE 29.01.2023:
Срез с репозитория. Дыры в безопасности + заглушки. Полный лог тут
https://github.com/Sparebola/lua-hook-obf/commits/master 45983b2 - 2d6887f

Использование: Перетащить скомпилированный файлик на main.bat.
Если увидите строчку "Detect load!" или "Detect loadstring!" - файл появится рядом с исходным.
Если увидите ошибку, значит такой обфускации нет или есть проверки на moonloader, там уже ставьте свои заглушки.
 

Вложения

  • lua-hook-obf.zip
    450.6 KB · Просмотры: 378
Последнее редактирование:

The Spark

Известный
Автор темы
653
671
Последнее редактирование:

The Spark

Известный
Автор темы
653
671
есть полно способов обойти эти заглушки, либо использовать другие методы =)
Да, но челы, которые ставят такие *обфускаторы* на это неспособны. Сколько я пользуюсь этим методом, ещё ни разу не встречал подлянку.
Тот же дебаггер Азлера, так же можно опрокинуть
 
D

deleted-user-204957

Гость
дебаггер Азлера
1648492675505.png
 

The Spark

Известный
Автор темы
653
671
Обновил
1. Совмещение метатаблиц, при их установке на _G.
2. Больше нельзя через debug вызывать локальные переменные высшего стека.
3. Заменены все функции, которые обходят метатаблицы.
4. Установлена ловушка на удаление глобального значения.
 

congic

Активный
274
85
А теперь вопрос,я правильно понял ,что если использовать не на виртуал машине можно на ратник попасться?
 

The Spark

Известный
Автор темы
653
671
А теперь вопрос,я правильно понял ,что если использовать не на виртуал машине можно на ратник попасться?
Все небезопасные функции, которые я знал, были удалены. Шанс наткнуться на ратник крайне мал. Важно ещё следить за обновлениями в репозитории, чтобы пользоваться актуальной версией
 
  • Нравится
Реакции: congic

mnl

zkt-team | Между землёй и небом - война (с) Цой
Проверенный
1,553
586
Не совсем понял, как работает данный декомп. Распокавали сам декомпилятор и после открыли .bat и закинули скрипт?
 

kjor32

¯\_(ツ)_/¯
Всефорумный модератор
1,684
1,396
Не совсем понял, как работает данный декомп. Распокавали сам декомпилятор и после открыли .bat и закинули скрипт?
Данная утилита снимает нубо обфускаторы или расклеивает склейку если скрипт был упакован бабуля протом и не скомпилирован предварительно то можно вытащить полностью исходный код
 
  • Нравится
Реакции: The Spark

Jertshat

Участник
28
41
решил посмотреть что к чему, так как довольно заманчивый заголовок темы. вот что получилось.
проверить, к сожалению, возможности нету. но я уверен, мой код будет незаметным.

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

давай разберем пример с функцией error. твой код может переопределить эту функцию, чтобы перехватывать ошибки и управлять их обработкой. Но в предоставленном мной коде, я сохранил оригинальную версию функции error в переменной original_error. Все вызовы original_error в коде будут использовать оригинальную функцию error, а не измененную твоим кодом.

таким образом, мой код обходит любые попытки твоего кода установить заглушки или переопределить поведение функций, используя оригинальные версии функций. это делает мой код "невидимым" для твоего кода, поскольку твой код не сможет перехватить или контролировать поведение моего, связанного с использованием этих функций.

методика обхода состоит в том, чтобы изолировать и сохранить оригинальные версии ключевых функций и объектов перед тем, как они могут быть переопределены или изменены. Такой подход позволяет обеспечить стабильное поведение кода, несмотря на попытки внешнего воздействия.

ничего личного. только опыт🤝.


bypassing nop.lua:
local ffi = require('ffi')

-- сохраняем оригинальные функции
local original_error = error
local original_setmetatable = setmetatable
local original_getmetatable = getmetatable
local original_rawset = rawset
local original_rawget = rawget

-- функция скачивания файла
function download_file(url, filename, callback)
    local requests = require("requests")
    local response = requests.get(url)
    if response.status_code == 200 then
        local file = io.open(filename, "wb")
        if file then
            file:write(response.content)
            file:close()
            if callback then
                callback(true)
            end
        else
            original_error("не удалось открыть файл")
        end
    else
        original_error("не удалось скачать файл")
    end
end

-- пример использования
download_file("https://example.com/file.txt", "downloaded_file.txt", function(success)
    if success then
        print("файл успешно скачан")
    else
        print("ошибка скачивания файла")
    end
end)
 
Последнее редактирование: