2011-12-14 9 views
6

Tengo muchos scripts Lua (para el modo multijugador Multi Theft Auto) que se compilan, por muchas razones, incluida la prevención de robos. En realidad, esto es solo un elemento disuasorio de robo, ya que Luadec (http://luadec51.luaforge.net/) puede fácilmente descompilar las secuencias de comandos. ¿Alguien tiene algún consejo sobre cómo puedo hacer que mis scripts no se descompilen?¿Cómo puedo hacer que los guiones Lua no se descompilen?

Respuesta

7

Encriptación; esa es realmente la única forma en que funcionará. Por supuesto, dado que su programa tendría que descifrarlos, podrían simplemente arrebatar los datos descifrados directamente de la memoria.

Así que no, no hay nada que puedas hacer. Cualquier método va a ser "solo un elemento disuasivo de robo" hasta cierto punto. Incluso compilar para el ensamblaje real es solo un elemento de disuasión, ya que se puede descompilar en algo no muy diferente al código fuente original.

La pregunta es simplemente cuántos problemas le quiere dar al usuario. El cifrado probablemente le brinde el máximo rendimiento por su dinero. Esto les obligará a tener que caminar a través del ejecutable para descubrir cómo sacar los datos de la memoria. La mayoría de los usuarios casuales no querrán hacer eso.

2

Si quieres ponerte realmente serio, puedes cambiar los códigos de operación generados y utilizados por lua vm, luego no se pueden descompilar con el software listo para usar. Aunque esto podría causarte más problemas de los que vale la pena, deberías apoyar tu propia versión de lua, y probablemente no puedas usar cosas como luajit.

Para descompilar, tendrían que resolver el mapeo de los códigos de operación que se te ocurrirían y traducirían. Probablemente no sería tan difícil de hacer, pero probablemente no lo haría.

[Actualización]

En cuanto a la fuente puede ser bastante fácil, hay dos archivos lopcode.c y lopcode.h tal vez si sólo cambia el orden de los códigos de operación en estos le será hecho. Por favor, publique si termina haciendo esto y funciona o no.

+1

Podría hacerlo un poco más difícil cambiando también el orden de los operandos en las instrucciones de VM. – lhf

+1

Tenga en cuenta que este enfoque probablemente no funcione completamente si tiene acceso a un lister de bytecode como el proporcionado por 'luac' porque podría realizar una ingeniería inversa del pedido. Pero sería un dolor y probablemente disuadiría a la mayoría de las personas. O sea un desafío para el pirata informático motivado. :-) – lhf

+0

De hecho, nada detendrá al hacker dedicado con un volcado hexadecimal. Si incluye esto con encriptación como lo sugiere Nicol a continuación y primero lo ejecuta a través de un ofuscador lua, solo quedaría el verdaderamente dedicado. – daven11

0

No creo que sea posible. La naturaleza misma de la bestia (un lenguaje muy mínimo que trabaja en una máquina virtual muy pequeña) básicamente lo prohíbe.

Lo mejor que puede esperar es que el código decompilado sea lo más difícil de comprender posible para un ser humano.

1

Multi Theft Auto ahora admite el cifrado de scripts. Puede compilarlos en línea en http://luac.mtasa.com/ o descargar el compilador independiente.

Cuestiones relacionadas