• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

NuGuN

Como converter um script em binário

9 mensagens neste tópico

Boas!

Então é o seguinte... Pensei em aprender outra linguagem de programação, e depois de algum tempo a escolher, decidi que ia começar com Python! Ate estou a gostar disto... Mas agora é que me lembrei... eu escrevo programas com o objectivo de os comercializar. E como é natural, não tenho grande interesse em que dê para aceder ao seu código fonte.

A minha questão é esta... Existe alguma forma de gerar binários com o objectivo de evitar o acesso ao código fonte?

Estou-me a esquecer... Estou a falar em Linux! Para windows há o py2exe. Para Linux existe o freeze, que é identico ao py2exe para windows. Só que pelo que percebi, isso pega nas dependencias todas que um programa tem e junta tudo num ficheiro. E isso não me agrada nada pois se for um programa grande...

Será que vou ter de escolher outra linguagem?  :bored:

Cumps!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes compilar para bytecode (http://effbot.org/zone/python-compile.htm), mas é fácil de descompilar. Também podes usar  IronPython ou Jython, que compilam para .NET e JVM respectivamente (embora tenha lido que Java e C# também não é difícil de recuperar).

De resto, é mais chato e restritivo, mas podes ver algumas soluções:

http://stackoverflow.com/questions/205062/is-it-possible-to-compile-python-natively-beyond-pyc-byte-code

Já agora, qual é o mercado dos programas?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois, bytecode também não ia resolver porque pelo que tenho visto é fácil reverter as coisas. Estive a ver nesse link que postas-te e foi aí colocada a sugestão de utilizar jython e em seguida utilizar o GCJ, mas não tou a conseguir porque me está a dar problemas com o GTK... Não encontra o modulo...

É "chato" porque já tenho a aplicação quase terminada e tou a ver que vou ter de reescrever tudo para outra linguagem... Talvez C++...

O mercado dos programas? Nenhum em especifico... Se o cliente precisar de x, faz-se x. Se precisar de y, faz-se y. O cliente é quem decide...lol

Cumps!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se o programa é tão específico, é assim tão mau ele ficar com acesso ao código? Eu não tenho nenhum tipo de experiência e provavelmente digo parvoíces, mas não vejo que ele tenha grande interesse nisso. Se ele ficou satisfeito com o teu trabalho, o mais provável é contratar-te caso precise de expadí-lo ou assim, digo eu.

Ou há outras razões para querer evitar o acesso ao código?

Já agora, podes há obsfuscadores para .NET, como este: http://www.foss.kharkov.ua/g1/projects/eazfuscator/dotnet/Default.aspx

Descompilar isso deve custar o seu bocado, principalmente para alguém pouco experiente :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se o programa é tão específico, é assim tão mau ele ficar com acesso ao código? Eu não tenho nenhum tipo de experiência e provavelmente digo parvoíces, mas não vejo que ele tenha grande interesse nisso. Se ele ficou satisfeito com o teu trabalho, o mais provável é contratar-te caso precise de expadí-lo ou assim, digo eu.

Ou há outras razões para querer evitar o acesso ao código?

Existem mil razões!

Por exemplo vendes um programa e se o código fonte estiver disponível podem muito facilmente clonar o teu trabalho e sem pagar nada por isso. Depois podem fazer alterações, estragar o teu programa, e a responsabilidade é também tua. É a ti que te vão chamar quando a aplicação der problemas.

Além disso, sempre que precisarem de fazer actualizações é a ti que te têm de chamar, e com o código fonte, podem chamar qualquer um.

Estes são apenas alguns pontos e nas aplicações que são vendidas com código fonte, os valores de venda são bastante mais altos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Em alguns casos tens razão, o programa é tão especifico que não ha problema em haver acesso ao código fonte. Mas neste caso que o programa até é bastante dinâmico e pode ser aplicado em diversas situações, não quero mesmo que haja acesso ao código...

Mas até mesmo na primeira situação que referia, no caso do programa ser muito especifico, imagina que uns tempos depois o cliente se lembra que quer algumas alterações no programa mas é um daqueles clientes meio "complicados", e em busca de algo mais barato ou porque por alguma razão não quer que sejas tu a fazer as alterações. Então como tem o código fonte, pega nele e leva-o a outra pessoa para lhe fazer as alterações... Epa, isto é um bocado rebuscado... nunca me aconteceu. Mas pode eventualmente acontecer esta ou situações identicas.

[EDIT]

...

Além disso, sempre que precisarem de fazer actualizações é a ti que te têm de chamar, e com o código fonte, podem chamar qualquer um.

...

Exactamente!

Cumps!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se bytecode não oferece o nível de protecção que queres então não há solução nenhuma para linguagem nenhuma que te safe. Aquilo que chamamos binário (eeer.. todos os dados num pc estão em binário) deviamos talvez chamar hexadecimal.

Bytecode é basicamente código compilado só que para uma máquina virtual e não para uma máquina física.

Se o nome das variaveis é guardado nalguns casos (java por exemplo) é porque é conveninente. Mas se esse é o problema usa um ofuscador. Pessoalmente  minha opinião é que se a aplicação é assim tão valiosa, uses as protecções que usares haverá forma de hackar aquilo, se não é assim tão valiosa por outro lado, ninguem se vai dar ao esforço de descompilar, reformatar, fazer refactoring the nomes etc.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas!

pedrotuga, depois de ler o teu post, meti-me a pensar ( :hmm: ) e decidi ver como ficaria um .pyc depois de descompilado. O resultado não foi nada do que eu estava à espera...

Durante as minhas pesquisas tinha lido post's de pessoal que tinha apagado os .py mas que ainda tinha os .pyc e que precisava recuperar o código. E houve um em praticular que dizia que tinha utilizado um dos descompiladores e tinha funcionado bastante bem... Com isto, fiquei a pensar que pegando num ficheiro .pyc e descompilando com um dos tais programas, se conseguia recuperar o código, ficando com um código quase igual ao inicial! Agora tive a tentar descompilar uns ficheiros que aqui tinha com alguns programas e o resultado que tenho, não tem nada a ver com o que tava à espera...lol É quase como abrir um exe com um debbuger!

Será que é sempre assim, ou há mesmo um descompilador que gere mesmo o código apartir dos bytecodes?

pedrotuga, respondendo à tua questão... se o resultado gerado pelos descompiladores dos .pyc e .pyo forem sempre como os que me deram a mim, chega-me bem compilar os scripts para .pyc. O programa não é assim tao valioso a pontos de alguém se dar ao trabalho de converter aquilo tudo à mao! Dava menos trabalho escrever de raiz um igual! lol

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Penso que tem que terá a ver com a complexidade do teu código. Se usare funcionalidades mais avançadas da linguagem ficará isso resultará em código menos inteligivel do que quando se trata de um pequeno script.

É uma questão de se ir experimentanto. Podes passar o código por um ofuscador primeiro tambem.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora