Форум программистов, компьютерный форум, киберфорум
Lua
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.58/48: Рейтинг темы: голосов - 48, средняя оценка - 4.58
0 / 0 / 0
Регистрация: 30.01.2019
Сообщений: 13
1

Защита кода

30.01.2019, 09:15. Показов 9003. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, хотел бы спросить у вас, я делаю разные скрипты для игры SAMP, в оболочке moonloader, как можно защитить код от декомпиляции/обфусцировать код и прочее? Компилятор luaJit
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.01.2019, 09:15
Ответы с готовыми решениями:

Защита кода
Здравствуйте, подскажите темы или статьи о том как защитить код от постороних глаз? так сказать...

Декомпиляция кода и защита
Есть кнопка, при нажатии на которую, вызывается функция из cpp файла. Декомпилировал, глянул этот...

Защита исходного кода
Есть ли возможность защитить код своего приложения на ноде? Хотя бы максимально усложнить получение...

Авторская защита кода
Джентльмены! Увы, по жизни бывали случаи, когда либо большие фрагменты кода, либо даже целые...

16
1003 / 1858 / 176
Регистрация: 07.05.2013
Сообщений: 3,894
Записей в блоге: 12
30.01.2019, 09:56 2
ffi входит в комплект? декомпилятор умеет такое разворачивать из .luac ?
0
0 / 0 / 0
Регистрация: 30.01.2019
Сообщений: 13
30.01.2019, 10:09  [ТС] 3
Не знаю, нет вроде, там такой декомпилятор, он не возвращает полностью исходник, там можно увидеть отдельные отрывки функций и прочее, а так там все будет в каком то таком виде var_1_1 = что то и тд

Добавлено через 7 минут
Lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function randomFunction file_exists (INPUT_VAR_0_)
    var_1_2 = INPUT_VAR_0_
    var_1_1 = io.open(var_1_2, "r")
    if var_1_1 ~= nil then
        --jump to 0015 (if previous if statement is false) --0015 JMP-JMP
        var_1_3 = var_1_1
        io.close(var_1_3)
        until false or (previous if statement is true) --location 0012
        var_1_2 = true --var_1_2 PRIMITIVE-PRIMITIVE
        return var_1_2
    else
        --location 0015--0015 LOCATION-LOCATION_
        var_1_2 = false --var_1_2 PRIMITIVE-PRIMITIVE
        return var_1_2
    end
    return
end
Пример декомпилированного кода
0
1003 / 1858 / 176
Регистрация: 07.05.2013
Сообщений: 3,894
Записей в блоге: 12
30.01.2019, 10:15 4
я уже сам поискал, ffi в moonloader входит. Нужно только понять, споткнется об него декомпилятор или нет.
0
0 / 0 / 0
Регистрация: 30.01.2019
Сообщений: 13
30.01.2019, 10:27  [ТС] 5
По подробнее можно?
0
1003 / 1858 / 176
Регистрация: 07.05.2013
Сообщений: 3,894
Записей в блоге: 12
30.01.2019, 11:29 6
"The FFI library allows calling external C functions and using C data structures from pure Lua code."

http://luajit.org/ext_ffi.html

У меня есть серьезное подозрение, что ни один декомпилятор не сумеет развернуть такую вставку в исходный вид.
0
0 / 0 / 0
Регистрация: 30.01.2019
Сообщений: 13
30.01.2019, 12:00  [ТС] 7
Как это способствует защите кода? В моем коде используется ffi, (SetWindowTextA, а также FlashWindow)
0
1003 / 1858 / 176
Регистрация: 07.05.2013
Сообщений: 3,894
Записей в блоге: 12
30.01.2019, 12:03 8
Декомпилятор об это не спотыкается? Если нет, вот что он это разворачивает?
0
0 / 0 / 0
Регистрация: 30.01.2019
Сообщений: 13
30.01.2019, 12:59  [ТС] 9
Исходной код:
Lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
local ffi                   = require('ffi')
 
ffi.cdef [[
    typedef int BOOL;
    typedef unsigned long HANDLE;
    typedef HANDLE HWND;
    typedef int bInvert;
 
    HWND GetActiveWindow(void);
 
    BOOL FlashWindow(HWND hWnd, BOOL bInvert);
]]
 
ffi.cdef [[
    typedef unsigned long HANDLE;
    typedef HANDLE HWND;
    typedef const char *LPCTSTR;
 
    HWND GetActiveWindow(void);
 
    bool SetWindowTextA(HWND hWnd, LPCTSTR lpString);
]]
 
function main()
    window = ffi.C.GetActiveWindow()    
    ffi.C.FlashWindow(window, true)
    wait(-1)
end
А это скомпилированный, а потом декомпилированный:

Lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function randomFunction main ()
    var_0_0 = uget_0_0.C.GetActiveWindow()
    window = var_0_0
    var_0_2 = true --var_0_2 PRIMITIVE-PRIMITIVE
    uget_0_0.C.FlashWindow(window, var_0_2)
    var_0_1 = -1 --var_0_1 NUMBER-NUMBER
    wait(var_0_1)
    return
end
 
 
function someFunc1()
    var_1_0 = require("ffi")
    var_1_0.cdef("    typedef int BOOL")
    var_1_0.cdef("    typedef unsigned long HANDLE")
    local randomFunction0 = function() end -- starts at  test.lua:0
    main = randomFunction0
    return
end
0
1003 / 1858 / 176
Регистрация: 07.05.2013
Сообщений: 3,894
Записей в блоге: 12
30.01.2019, 13:14 10
хм... ну... защиту можно строить двумя путями - против дебага-декомпиляции и против человека. Судя по тому, что я вижу, компилируете вы скрипт без дебаг-информации, поскольку все переменные и функции при декомпиляции имеют условные названия - собственно, это и есть в какой-то мере обфускация.

Какая версия luajit используется сейчас в игре? Чем декомпилируете? Возможно, я смогу обмануть декомпилятор.

Вообще, самый на мой взгляд надежный способ защиты на данный момент - это наваять внешнюю dll -- запихнуть в нее десяток ходовых, но неочевидных функций - и использовать ее в своих скриптах.
0
0 / 0 / 0
Регистрация: 30.01.2019
Сообщений: 13
30.01.2019, 13:37  [ТС] 11
Цитата Сообщение от vantfiles Посмотреть сообщение
Какая версия luajit используется сейчас в игре? Чем декомпилируете? Возможно, я смогу обмануть декомпилятор.
Как я понял используется 5.1, а декомпилирую этим: https://yadi.sk/d/CZ_G0igQvxwjew
0
1003 / 1858 / 176
Регистрация: 07.05.2013
Сообщений: 3,894
Записей в блоге: 12
30.01.2019, 13:43 12
У luajit свои версии: http://luajit.org/download.html
У меня старый рар - в зипе, если можно, перепакуйте...
0
0 / 0 / 0
Регистрация: 30.01.2019
Сообщений: 13
30.01.2019, 13:50  [ТС] 13
Цитата Сообщение от vantfiles Посмотреть сообщение
У меня старый рар - в зипе, если можно, перепакуйте...
https://yadi.sk/d/4Xy1Hq8-IRzePQ
0
1003 / 1858 / 176
Регистрация: 07.05.2013
Сообщений: 3,894
Записей в блоге: 12
05.02.2019, 13:43 14
Ну... вот простенький примерчик, можете полюбоваться, во что его превращает упомянутый декомпилер.

Lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function dummy_01( a, b, c, d )
 
    local a = a
    local b = b
    local c = c
    local d = d
 
    local f = function( a, b, c, d )
        local f = function( a, b, c, d )
          print( a, b, c, d )
        end
        f( a, b, c, d )
    end
    
    f( a, b, c, d )
 
end
0
0 / 0 / 0
Регистрация: 30.01.2019
Сообщений: 13
05.02.2019, 19:41  [ТС] 15
Цитата Сообщение от vantfiles Посмотреть сообщение
Ну... вот простенький примерчик, можете полюбоваться, во что его превращает упомянутый декомпилер.
Я чуток может не понимаю, но как этим можно защитить код?)
0
1003 / 1858 / 176
Регистрация: 07.05.2013
Сообщений: 3,894
Записей в блоге: 12
06.02.2019, 13:10 16
а что вы понимаете под защитой кода? защитить байт-код от декомпиляции невозможно. Можно лишь сильно усложнить его анализ и дальнейшую модификацию.
0
0 / 0 / 0
Регистрация: 30.01.2019
Сообщений: 13
06.02.2019, 16:01  [ТС] 17
Цитата Сообщение от vantfiles Посмотреть сообщение
а что вы понимаете под защитой кода? защитить байт-код от декомпиляции невозможно. Можно лишь сильно усложнить его анализ и дальнейшую модификацию.
Знаю парня, он обфусцирует код, компилятор спотыкается об это или еще что то и выдает ошибку при декомпиляции
0
06.02.2019, 16:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.02.2019, 16:01
Помогаю со студенческими работами здесь

Защита от изменения кода
Кто сталкивался с защитой от изменения кода? Как ее обойти,создать? Если можно,на примере...

Защита исходного кода
Как обфусцировать плагин. Как я понял это способ защиты от декомпиляции amxx, если нет поправьте...

Защита исходного кода
Кто реально сталкивался с задачей защиты исходного кода? Т.е. при коммерческом распространении ПО...

Защита кода от декомпиляции
Может кто нибудь подсказать нормальную программу для защиты кода от декомпила? Я понимаю что...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru