Pergunta

Se houver realmente um 'melhor' forma, o que é a melhor maneira de enviar um aplicativo de python e garantir que as pessoas não podem (facilmente) fazer engenharia reversa sua algoritmos / security / trabalho em geral?

Se não há um 'melhor' forma, quais são as diferentes opções disponíveis?

Fundo: Adoro codificação em Python e gostaria de liberar mais aplicativos com ele. Uma coisa que eu quero saber sobre a possibilidade das pessoas contornando qualquer código de licenciamento I colocar, ou ser capaz de simplesmente arrancar toda a minha base de origem. Já ouvi falar de Py2Exe e aplicações similares, mas estou curioso para saber se há 'preferido' maneiras de fazer isso, ou se este problema é apenas um fato da vida.

Foi útil?

Solução

Segurança através da obscuridade não funciona. Se você deve usar uma licença proprietária, aplicá-la por meio da lei, não meia-boca tentativas de ofuscação.

Se você está preocupado com eles aprender seu algoritmo de segurança (por exemplo, criptografia), o mesmo se aplica. Real, algoritmos útil, de segurança (como AES) são seguros, embora o algoritmo é totalmente conhecida.

Outras dicas

Mesmo se você usar uma linguagem compilada como C # ou Java, as pessoas podem executar engenharia reversa, se eles estão motivados e tecnicamente competente. Ofuscação não é uma proteção confiável contra isso.

Você pode adicionar proibição contra a engenharia reversa de seu contrato de licença do usuário final para o seu software. A maioria das empresas proprietárias fazer isso. Mas isso não impede violação, ele só lhe dá recurso legal.

O melhor solução é oferecer produtos e serviços em que o acesso do usuário para ler o seu código não prejudicar a sua capacidade de vender seu produto ou serviço. Basear o seu negócio em serviço prestado, ou a subscrição de atualizações periódicas aos dados, em vez do próprio código.

Exemplo: Slashdot realmente faz o seu código para o seu site disponível. Será que isso prejudicar a sua capacidade de executar o seu site? Não.

Outro remédio é para definir o seu preço ponto tal que o esforço para piratear o seu código é mais caro do que simplesmente comprar licenças legítimas para usar o produto. Joel Spolsky fez uma recomendação para estes efeitos em seus artigos e podcasts.

Envio um mac comercial aplicativo de desktop em Python, fazemos exatamente como descrito em outras respostas; proteger-se pela lei com um EULA decente, não por ofuscar.

Nós nunca tivemos quaisquer problemas com as pessoas engenharia reversa nosso código. E se o fizermos, eu me sinto confiante de que podemos tomar medidas legais. Então, sim, é um fato da vida. Mas que não é muito difícil de se conviver. Basta obter um advogado decente que escreve uma EULA decente.

A palavra que você está procurando Ofuscação. Uma rápida no google revela:

http://www.lysator.liu.se/~astrand/ projectos / pyobfuscate /

mas:

a) Se violação de direitos autorais se torna um problema, então a lei está do seu lado (contanto que você incluir os avisos de direitos autorais apropriados em todos os arquivos).

b) Também é possível fazer um lucro em aplicações de código aberto Se você é inteligente sobre ele.

c) Se você quiser que o seu Propriedade Intelectual para ser verdadeiramente segura, então a única resposta é não deixar ninguém tê-lo em primeiro lugar: Escreva seu aplicativo como um aplicativo web, (eu recomendo usar django) e apenas o seu web provedor de hospedagem tem acesso a seu código.

py2exe

No windows py2exe é uma forma de enviar o código para os usuários finais, py2exe empacota o interpretador Python, as DLLs necessárias e seu código compilado para bytecode python.

Aqui estão as instruções python bytecode para obter alguma idéia do que se parece com:

http://www.python.org/doc/2.5 .2 / lib / bytecodes.html

Ou você pode usar dis desmontar alguns arquivos PYC / pyo.

Assim, usando py2exe é semelhante à distribuição de arquivos python compilado (pyc / pyo).

Shedskin C ++ compilador

O Shedskin compilador compila um subconjunto de Python para C ++ que você pode compilar para código nativo usando qualquer compilador.

PyPy

Eu não sei sobre PyPy demais. De acordo com os seus docs PyPy é capaz de gerar código C.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top