2011-12-14 8 views
6

Mam wiele skryptów Lua (dla trybu multiplayer Multi Theft Auto), które są kompilowane, z wielu powodów, w tym zapobiegania kradzieży. W rzeczywistości jest to tylko środek odstraszający, ponieważ Luadec (http://luadec51.luaforge.net/) może łatwo zdekompilować skrypty. Czy ktoś ma jakieś wskazówki, w jaki sposób mogę sprawić, aby moje skrypty nie podlegały dekompilacji?Jak mogę spowodować, że skrypty Lua będą podlegać dekompilacji?

Odpowiedz

7

Szyfrowanie; to naprawdę jedyny sposób, żeby to zadziałało. Oczywiście, ponieważ twój program musiałby je odszyfrować, mogliby po prostu wyrwać odszyfrowane dane z pamięci.

Więc nie, nic nie możesz zrobić. Jakakolwiek metoda będzie w pewnym stopniu "tylko środkiem odstraszającym kradzież". Nawet kompilacja do rzeczywistego montażu jest tylko środkiem odstraszającym, ponieważ można go złożyć w coś, co nie jest całkowicie odmienne od oryginalnego kodu źródłowego.

Pytanie brzmi po prostu, jak wiele kłopotów chcesz dać użytkownikowi. Szyfrowanie prawdopodobnie daje ci najwięcej za swoje pieniądze. To zmusi ich do przejścia przez plik wykonywalny, aby dowiedzieć się, jak wyrwać dane z pamięci. Większość zwykłych użytkowników nie chce tego robić.

2

Jeśli chcesz być naprawdę poważny, możesz zmienić kodowanie generowane i używane przez lua vm, wtedy nie można go zdekompilować za pomocą oprogramowania na półce. Choć może to spowodować więcej problemów, niż jest to warte - musiałbyś wesprzeć własną wersję lua, a prawdopodobnie nie mógłbyś używać takich rzeczy jak luajit.

Aby dokonać dekompilacji, musieli wymyślić mapowanie opkodów, które wymyślili i przetłumaczyli. Prawdopodobnie nie byłoby to zbyt trudne, ale prawdopodobnie bym tego nie zrobił.

[Aktualizacja]

Patrząc na źródła może to być dość łatwe, istnieją dwa pliki lopcode.c i lopcode.h może jeśli wystarczy zmienić kolejność rozkazy w tych będziesz zrobienia. Proszę pisać, jeśli w końcu to zrobisz i to działa, czy nie.

+1

Możesz zrobić to trochę trudniej, zmieniając kolejność operandów w instrukcjach VM. – lhf

+1

Należy zauważyć, że to podejście prawdopodobnie nie w pełni działa, jeśli masz dostęp do listeru kodu bajtowego, takiego jak ten podany przez 'luac', ponieważ możesz odwrócić inżynierię zamówienia. Ale byłby to ból i prawdopodobnie zniechęci większość ludzi. Lub być wyzwaniem dla zmotywowanego hakera. :-) – lhf

+0

Rzeczywiście nic nie zatrzyma dedykowanego hakera z heksowym zrzutem. Jeśli umieścisz to w szyfrowaniu sugerowanym przez Nicola poniżej i najpierw uruchomisz je za pomocą obfuscatora lua, pozostanie tylko prawdziwie oddany. – daven11

0

Nie sądzę, że to możliwe. Sama natura bestii (bardzo minimalny język działający na bardzo małej maszynie wirtualnej) w zasadzie jej zabrania.

Najlepsze, na co możesz liczyć, to, że kod dekompilowany jest tak trudny do zrozumienia, jak to tylko możliwe, dla człowieka.

1

Multi Theft Auto obsługuje teraz szyfrowanie skryptów. Możesz je skompilować online pod numerem http://luac.mtasa.com/ lub pobrać samodzielny kompilator.

Powiązane problemy