Protecção de autoria de código MQL em MT5. - página 2

 

No que diz respeito ao EX4, o mais provável é que o Editor tenha sido descompilado.

E parece estar nua das protecções. Não há aí fluxos financeiros.

E se ambos os componentes protegidos (Cliente & Editor) funcionarem com chaves - mais esperança de sucesso.

;)

 

5 cêntimos...


1. A maioria dos produtos (se não todos) requer uma ligação para ser utilizada.

2. assim, uma "chave" sob a forma de um "serviço" colocado na rede (no website do autor).

Quando se liga o terminal, o terminal com um indicador ou um Expert Advisor, correndo nele, "use-o"...

E, consequentemente, o problema da descompilação já não é um problema.


Fora da categoria. O produto deve ser realmente interessante.

Uma revisão do produto vendido "com base" nos algoritmos super secretos

mostrou que não há nada de interessante e ainda menos útil... infelizmente...


Em princípio, o algoritmo em si é super-duper, se o autor pensar assim, pode ser colocado no site.

O Conselheiro Especialista só deve tratar e implementar em processos comerciais, o que não é segredo, mesmo que seja publicado abertamente.

- a EA envia um pedido (por assinatura)

- recebe valores

- processos

- comércio

- podem estar simultaneamente envolvidos no desenho

//

O mesmo para o indicador, excepto para o comércio


Organizar a própria assinatura por número de conta...


Em geral, como um imperador romano costumava dizer: dividir e conquistar!

 
circlesquares :


O facto é que a descompilação continua a ser um problema. Se todo o código necessário estiver dentro da EA, então descompilá-la juntamente com uma chave de trabalho conhecida dá o código fonte da EA com todas as suas consequências.

Se parte do código estiver localizada no website, no entanto, esta é uma solução muito pouco fiável. Qualquer falha do site pode resultar em perdas de dinheiro para o cliente.

 
api :

Também vi uma vez uma menção algures que o código MQL5 se compila em código de CPU nativo. Não sei: é realmente ou não, mas se for, é um buraco sério na protecção de descompilação.

E como é que isto reduziria a segurança?

A adição de código é impedida pela utilização de criptografia assimétrica - se a chave for suficientemente longa, seria impossível forjar a assinatura.

Se se refere à descompilação - a sua automatização é muito difícil para o código da máquina. Não me refiro à desmontagem - é possível porque o próprio processador tem de executar código de alguma forma. Há tentativas de descompilação automática(http://www.hex-rays.com/) mas estas são principalmente reduzidas à análise de todas as opções possíveis de código gerado pelo compilador (o que não se torna de todo uma tarefa trivial, porque, como entendi, a conversão para código de máquina será executada no lado das metaquotas). Se ligarmos o gerador de código à fase da lua (ou seja, para compilar as construções de diferentes maneiras), a automatização da descompilação torna-se irrealista!

 
lea :

E como é que isto reduziria a segurança?

A adição de código é impedida pela criptografia assimétrica - se a chave for suficientemente longa, seria impossível forjar a assinatura.

Se se refere à descompilação - a sua automatização é muito difícil para o código da máquina. Não me refiro à desmontagem - é possível porque o próprio processador tem de executar código de alguma forma. Há tentativas de descompilação automática(http://www.hex-rays.com/) mas estas são principalmente reduzidas à análise de todas as versões possíveis do código gerado pelo compilador (o que não se torna de todo uma tarefa trivial, porque, como entendi, a conversão para o código da máquina será executada no lado das metaquotas). Se ligarmos o gerador de código à fase da lua (ou seja, para compilar as construções de diferentes maneiras), a automatização da descompilação torna-se irrealista!


Na verdade, referia-me à desmontagem. Eu, como é frequentemente o caso de todos, julgado pelas minhas próprias capacidades. Para mim é semelhante à descompilação, uma vez que na maioria dos casos posso facilmente reconstruir o algoritmo a partir de texto de assembler. É claro que este processo pode ser muito complicado utilizando algoritmos de vírus polimórficos, mas no final, uma vez que existem anti-vírus, este método também não dá uma garantia completa.

 
api :


Na verdade, referia-me à desmontagem. Como é frequentemente o caso de todos, eu estava a julgar pelas minhas próprias capacidades. Para mim é como descompilar, uma vez que posso reconstruir facilmente o algoritmo a partir do código assembler na maioria dos casos. É claro que este processo pode ser muito complicado utilizando algoritmos de vírus polimórficos, mas no final, uma vez que existem anti-vírus, este método também não dá uma garantia completa.

Desmontar grandes ficheiros (mesmo com o ida) e reconstruir manualmente o algoritmo leva muito tempo e esforço. É duvidoso que as pessoas irão frequentemente praticar esta abordagem. Mas parece que este é o único método que será possível para ficheiros de código de máquina no futuro, se os programadores conseguirem complicar o código de máquina gerado de alguma forma.
Os antivíruses raramente usam quaisquer algoritmos especiais. A maioria agarra-se às peculiaridades dos ficheiros e sequências de instruções - encontrei um antivírus a queixar-se de calcular pi através da soma das séries (estava a treinar para usar o fpu). A descompilação é uma tarefa fundamentalmente diferente. Se efectuar mutações irreversíveis do código durante a geração do código, a descompilação por variantes características do código será, em princípio, impossível (terá de emular/traçar o código e observar o que acontece a um "alto nível" - de onde foi lido, de onde foi escrito, o que e com que parâmetros foi chamado... os antivíruses parecem utilizar uma abordagem semelhante, mas apenas observam a sequência de chamadas de várias funções do sistema).

Sobre o tema das mutações irreversíveis, talvez eu acrescente algumas ligações a artigos (espero que a administração e os leitores não se importem com ligações a tais):

 

Apenas para a leitura/ ofuscação de código em MQL5, pode especificar um modificador especial para cada função:

void MyFunc(int val) trash
  {
   Print("Val: ",val);
  }

Até agora chama-se lixo, mas muito provavelmente vamos mudá-lo para o proteger.


Isto resultará em uma profunda litterização do código e na desaceleração da função especificada.


Além disso, o compilador MQL5 utiliza muitas optimizações, o que reduz drasticamente a possibilidade de descompilação inversa.

 
Renat :

Apenas para o código lixo/obfusca em MQL5, pode especificar um modificador especial para cada função:

Isso é bom :) Será possível ajustar a percentagem de código do lixo? Será que as funções serão incorporadas pela localização da sua chamada?

 
lea :

Isso é bom :) Será possível ajustar a percentagem de código do lixo? Será que a incorporação da função será feita no ponto de chamada?

O lixo será diferente de cada vez. Não se pode personalizar a percentagem - cabe ao compilador decidir.


As funções em linha automáticas funcionam há muito tempo - o próprio compilador toma as decisões dependendo do tamanho e complexidade da função. Ou seja, as grandes funções não são simplificadas.

 

Eh.... Como é fácil para mim viver...

Não tenho qualquer desejo de piratear, nem pretendo vender nada num futuro previsível.

Esse é o problema com as pessoas...

:)))

Razão: