lua deobfuscation

desofuscación del código lua



deobfuscation (2)

La parte difícil es que la loadstring y las funciones relacionadas aceptan tanto el código lua como el código lua byte. Esa llamada a la loadstring de loadstring solo se está pasando byte compiled lua en lugar de lua código fuente.

Puede obtener byte compilado lua fácilmente. Puedes obtener un ejemplo como este

  • Crea un archivo lua.
  • Compilarlo con luac para generar lauc.out
  • Mire el contenido del archivo con un visor hexadecimal.

Para un archivo lua vacío, obtengo:

0000000: 1b4c 7561 5100 0104 0804 0800 0900 0000 .LuaQ........... 0000010: 0000 0000 4066 6f6f 2e6c 7561 0000 0000 [email protected].... 0000020: 0000 0000 0000 0002 0201 0000 001e 0080 ................ 0000030: 0000 0000 0000 0000 0001 0000 0001 0000 ................ 0000040: 0000 0000 0000 0000 00 .........

Una traducción de los primeros 8 bytes en decimal es:

27, 76, 117, 97, 81, 0, 1, 4

Que coincide con los caracteres escapados en tu cadena.

Si desea obtener más información sobre el código en el fragmento, deberá escribir el fragmento en un archivo y utilizar una herramienta de descompilación lua para investigar. ChunkSpy , luadec15 y unluac se mencionan en la página de herramientas wiki de lua.

No hay suficiente contenido en el fragmento que me has proporcionado para llevarlo más lejos, ¿supongo que está truncado?

Recientemente descargué un código lua y lo que encontré en mi interior fue una cadena ofuscada. Eso me hizo preguntarme qué tipo de técnica de ofuscación se usaba allí. Alguien tiene una idea?

local code=''/27/76/117/97/81/0/1/4/4/4/8/0/64/0/0/0/64/67/58/92/85/115/101/114/115/92/65/108/101/120/92/68/101/115/107/116/111/112'' loadstring(code)()

EDITAR: ¿Algún código más (encriptado?).

''/ 196 / 2 / 28 / 66 / 0 / 1 / 198 / 193 / 194 / 2 / 25 / 128 / 129 / 3 / 22 / 64 / 14 / 128 / 197 / 193 / 0 / 0 / 198 / 193 / 195 / 3 / 6 / 2 / 196 / 2 / 220 / 129 / 0 / 1 / 218 ''


No se ve encriptado en absoluto. Parece que es solo una secuencia de bytes. Cada barra invertida representa un carácter con su código de bytes.

27 es escape, 76 es ''L'', 117 es ''u'', 97 es ''a'' y así sucesivamente.

Ejecutarlo a través de un pequeño script me da esta cadena (los símbolos son caracteres especiales, como escape, inicio del encabezado y nulo): ← LuaQ ☺ ♦♦ @ @C: / Users / Alex / Desktop

Puedes buscar los bytes en una tabla ascii .

Actualización: un poco de investigación me dijo que LuaQ significa que es un script precompilado o algo por el estilo. Sin embargo, podría estar muy lejos.