Jump to content
NuGuN

Como converter um script em binário

Recommended Posts

NuGuN

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!

Share this post


Link to post
Share on other sites
IceBrain

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?


❝The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.❞- John Carmack on software patents

A list  of command line apps

Share this post


Link to post
Share on other sites
NuGuN

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!

Share this post


Link to post
Share on other sites
IceBrain

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


❝The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.❞- John Carmack on software patents

A list  of command line apps

Share this post


Link to post
Share on other sites
jpaulino

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.

Share this post


Link to post
Share on other sites
NuGuN

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!

Share this post


Link to post
Share on other sites
pedrotuga

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.

Share this post


Link to post
Share on other sites
NuGuN

Boas!

pedrotuga, depois de ler o teu post, meti-me a pensar ( 🤔 ) 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

Share this post


Link to post
Share on other sites
pedrotuga

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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.