Pergunta

Eu escrevi um programa que é uma espécie de um plugin não oficial, autônomo para um aplicativo. Ele permite que os clientes para obter um serviço que é uma alternativa de baixo preço, em seguida, a um fornecedor de propriedade. Meu programa não é ilegal, contra qualquer tipo de TOS, e certamente não é um vírus, adware, ou qualquer coisa assim. Dito isto, o fornecedor é claro que não está feliz com me levando sua competição, e está tentando bloquear o meu aplicativo de execução.

Ele já tentou algumas táticas para impedir as pessoas de executar meu aplicativo ao lado do seu. Ele faz isso, se ele for detectado, o aplicativo gera um erro falso.

Em primeiro lugar, ele checou para ver se o meu programa estava correndo, procurando por uma janela aberta com o título certo. Eu contestaram esta randomizando o título do programa na inicialização.

Em seguida, ele olhou para o nome do processo em execução. Argumentei isto fazendo o aplicativo cópias de si mesmo quando é iniciado como .exe [string aleatória] e, em seguida, executar isso.

De qualquer forma, a minha pergunta é esta: o que mais ele pode fazer para detectar se o meu programa em execução? Eu sei que você pode ler texto da janela (ou seja, o estado de barras, etiquetas). Eu estou preparado para contrariar esta situação, substituindo as etiquetas com imagens (ugh, de outra maneira?).

Mas o que mais está lá? você pode detectar o que .dlls um programa foi carregado? Se assim for, isso poderia ser resolvido por randomização os nomes dll antes de carregá-los?

Eu sei que é possível para obter a assinatura de um programa na memória e segui-lo dessa forma (como um scanner de vírus), mas as chances de ele fazer isso provavelmente não são boas, porque isso soa muito avançada.

Mesmo que este é um bocado de merda dele estar fazendo, seu tipo de diversão. É como uma luta nerd punho.

EDIT: Quando eu disse que é um plugin, que é apenas a (incorreta) termo que eu usei. É um EXE autônomo. O "API" entre o meu programa e outro é meu é simplesmente inserir dados nos controles (como caixas de texto, etc.).

Foi útil?

Solução

Eu me sinto um pouco sujo responder isso, mas é tarde e eu estou esperando por uma cópia unidade para terminar assim ....

Ele poderia usar uma soma de verificação para identificar o seu executável / dll. Isso fica em torno dos truques de mudança de nome.

Você pode contornar isso modificando aleatoriamente bits no programa no início (por exemplo, alterar um recurso, jogar com a versão integrada, etc ...).

Se eu fosse ele eu também começar a olhar para os padrões de tráfego de rede; por exemplo, se você está direcionando os clientes para os concorrentes que você está procurando essa informação de algum lugar assim matar o processo e / ou descarregar a biblioteca se um plugin acessa um site que está na lista negra.

Se você levar o jogo de gato e rato longe o suficiente (por exemplo, ganchos de shell para recriar sua biblioteca / arquivo executável se ele for excluído) você provavelmente vai ter sinalizado como um vírus por um software antivírus.

Outras dicas

Não muito ostentando do seu concorrente.

implantar seu projeto como código-fonte criptografado uncompiled. Escrever uma decifração e programa de implantação que pode embaralhar, renomeia código de classes, re-organiza para evitar qualquer detecção de assinatura particular.

Em seguida, compilar o código na máquina do cliente usando CSharpCodeProvider para compilar seu código. Você pode gerar os conjuntos aleatórios, com assinaturas de função totalmente aleatório (Eu sugiro usar um grande dicionário de bens, comum, palavras em vez de ser totalmente aleatória. Você pode concatenar-los juntos para se divertir mais. Por exemplo, ao vivo, Virtual, espaço, Escritório, Network, Utility. Space.Live.Network.dll, Utility.Virtual.Live.dll).

Cada versão do programa em cada cliente será diferente. Certifique-se para encobrir o seu programa de implantação. Talvez ele deve apagar-se depois de ter instalado a versão personalizada.

De qualquer forma, a minha pergunta é esta: o que mais ele pode fazer para detectar se o meu programa em execução

  • é seu programa um EXE ou DLL?
  • Você chamá-lo um plugin: o que é ligar para
  • ?
  • Como é o seu programa iniciado / lançou / run?
  • O que o seu programa fazer para "plug in"?
  • O que é a API entre seu programa eo outro programa?

Esta não é uma resposta à sua pergunta final, mas sim para o problema descrito.

Como sobre a fixação do outro aplicativo. Encontrar a corda que está procurando nos títulos e mudar alguma carta na mesma.

Deixe seus clientes sabem onde está o problema, fornecendo-lhes uma correção para o outro aplicativo, em vez de seu próprio país.

@ryeguy ... A melhor defesa é um bom ataque imho. Faça o que puder para desativar o seu processo antes de ele desabilita o seu.

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