[lua-br] Pré/Compilando script Lua

1,166 views
Skip to first unread message

Carlos Keiko

unread,
May 14, 2010, 12:18:03 PM5/14/10
to Lua BR
Bom dia

Sou iniciante nesta maravilhosa linguagem.

Pelo seu poder, simplicidade e desempenho, comecei a implementar um
mini ERP totalmente escrito em Lua.

Mas não gostaria que os usuários do programa tivessem acesso aos
scripts, ao fonte, isso por questão de segurança. Dei uma pesquisada
no Google e aqui na lista e não encontrei uma maneira de pré-compilar
os scripts em Lua. Se possível gostaria de transformar tudo em
binário.

Sei que o propósito da linguagem não é este, mas gostaria de saber se
é possível.

Li em mensagens aqui na lista uma maneira de ofuscar o código usando
criptografia, mas pelo tópico seria fácil de conseguir descriptografar
o mesmo, pois a chave ficaria na máquina. No fim do tópico o Luiz
Henrique de Figueiredo falou em pré-compilar com o ldump.c modificado.
Se isso é possível como fazer?

Segue o tópico:
http://groups.google.com/group/lua-br/browse_thread/thread/cb776abe3bf235b5/c6894f2fc4969fab?lnk=gst&q=ldump#

Segue algumas dúvidas:

Existe alguma maneira simples de proteger o script/fonte de um
programa escrito em Lua?

Tem como transformar um programa Lua em binário?

Tem como pré-compilar o programa e distribuir somente o mesmo?

Numa solução mais radical, tem que transformar todo o programa Lua em
C e depois fazer as sua compilação?

Antecipo agradecimentos.
Obrigado
Att
Carlos

--
Lua BR - http://groups.google.com/group/lua-br

Luiz Henrique de Figueiredo

unread,
May 14, 2010, 12:23:39 PM5/14/10
to lua...@googlegroups.com
> Dei uma pesquisada no Google e aqui na lista e não encontrei uma
> maneira de pré-compilar os scripts em Lua. Se possível gostaria de
> transformar tudo em binário.

Veja luac, que vem na distribuicao.

Carlos Keiko

unread,
May 14, 2010, 6:00:26 PM5/14/10
to Lua BR
Luiz Henrique, usando o luac ele gera um arquivo pré-compilado, rodo
ele com o comando

>lua teste.out

Certo? Ou tem outra maneira? Fiz um teste de performance usando os
seguintes comandos

>lua teste.lua
e
>lua teste.out

E notei a mesma performance nos dois, é isso mesmo? O que realmente
faz o luac?

Obrigado
Att
Carlos

Renato Carneiro

unread,
May 14, 2010, 6:05:51 PM5/14/10
to lua...@googlegroups.com
CARLOS,

Quando você executa o LUA informando um arquivo, ele identifica se é um arquivo texto (contendo as linhas de programação) ou é um arquivo LUA pré-compilado...

Caso seja um pré-compilado ele já sai rodando, quando não é ele compila e executa... Ou seja, no final dá tudo quase no mesmo... ;)

Renato CARNEIRO
rcar...@piclistbr.com
________________________________
www.rc3j.com - São Paulo/SP - Brazil

"If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas."


2010/5/14 Carlos Keiko <carlos...@gmail.com>

Luiz Henrique de Figueiredo

unread,
May 14, 2010, 6:58:37 PM5/14/10
to lua...@googlegroups.com
> E notei a mesma performance nos dois, é isso mesmo? O que realmente
> faz o luac?

Precompiling does not imply faster execution because in Lua chunks are
always compiled into bytecodes before being executed. luac simply allows
those bytecodes to be saved in a file for later execution.
http://www.lua.org/manual/5.1/luac.html

Carlos Eduardo da Fonseca

unread,
May 14, 2010, 7:14:56 PM5/14/10
to lua...@googlegroups.com

Quando você executa o LUA informando um arquivo, ele identifica se é um arquivo texto (contendo as linhas de programação) ou é um arquivo LUA pré-compilado...

Caso seja um pré-compilado ele já sai rodando, quando não é ele compila e executa... Ou seja, no final dá tudo quase no mesmo... ;)


Como de tradição avisar...

Please do not write it as "LUA", which is both ugly and confusing, because then it becomes an acronym with different meanings for different people. So, please, write "Lua" right!

http://www.lua.org/about.html#name

--
Carlos Eduardo da Fonseca.

Carlos Keiko

unread,
May 14, 2010, 7:39:14 PM5/14/10
to Lua BR
Só para completar, o arquivo pré-compilado, ou o bytecodes, são
reversíveis, ou seja, eu consigo através de um arquivo .out gerar o
fonte em .lua.

Obrigado a todos pela atenção.
Att
Carlos

Renato Carneiro

unread,
May 14, 2010, 7:43:21 PM5/14/10
to lua...@googlegroups.com
SIM... ;)

http://luadec.luaforge.net/

Renato CARNEIRO
rcar...@piclistbr.com
________________________________
www.rc3j.com - São Paulo/SP - Brazil

"If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas."


2010/5/14 Carlos Keiko <carlos...@gmail.com>
Só para completar, o arquivo pré-compilado, ou o bytecodes, são

Carlos Eduardo da Fonseca

unread,
May 14, 2010, 7:51:26 PM5/14/10
to lua...@googlegroups.com
Carlos,

Você pode compilar todos seus fontes para um bytecode só com o luac e depois colocar esse bytecodes dentro de seu código C com o bin2c. A implementação em Lua presente em http://lua-users.org/wiki/BinToCee inclusive já gera um código para executar o bytecode no Lua.

Acho que isso resolve seu problema...

--
Carlos Eduardo da Fonseca

Carlos Keiko

unread,
May 14, 2010, 7:59:20 PM5/14/10
to Lua BR
Estava empolgado com o luac, agora o Renato me deu um banho de água
fria...

Mas o Carlos me empolgou de novo, era isso que estava procurando.

Obs: Hoje o pessoal da lista ta bem ativo, não deu tempo de perguntar
de novo e já veio a resposta, antes da pergunta.

Obrigado a todos pela ajuda.
Um grande abraço
Att
Carlos

Luiz Henrique de Figueiredo

unread,
May 14, 2010, 8:28:54 PM5/14/10
to lua...@googlegroups.com
> Mas o Carlos me empolgou de novo, era isso que estava procurando.

Veja tambem srlua em http://www.tecgraf.puc-rio.br/~lhf/ftp/lua/#srlua

Carlos Keiko

unread,
May 15, 2010, 10:55:12 AM5/15/10
to Lua BR
Luiz Henrique, obrigado por mais esta opção.

Abraço
Att
Carlos
Reply all
Reply to author
Forward
0 new messages