como são geradores de série / rachaduras desenvolvido?
-
02-07-2019 - |
Pergunta
Quer dizer, eu sempre estava se perguntou sobre como a alguém o inferno pode desenvolver algoritmos para quebrar / enganar as restrições de uso legal em muitos programas shareware lá fora.
Só por curiosidade.
Solução
Além de ser ilegal, é uma tarefa muito complexa.
Falando apenas em um nível teoretical a maneira comum é desmontar o programa de crack e tentar encontrar onde a chave ou o serialcode está marcada.
Mais fácil dizer do que fazer uma vez que qualquer esquema de proteção séria irá verificar os valores em vários lugares e também irá derivar informações críticas do serial key para uso posterior de modo que quando você acha que você adivinhou, o programa irá falhar.
Para criar uma rachadura você tem que identificar todos os pontos onde será feita uma verificação e modificar o código de montagem adequada (muitas vezes invertendo um salto condicional ou armazenar Costants em locais de memória).
Para criar um keygen você tem que entender o algoritmo e escrever um programa para re-fazer exatamente o mesmo cálculo (Lembro-me de uma versão antiga do MS Office, cuja série teve uma regra muito simples, a soma dos dígitos deveria ter sido um múltiplo de 7, então escrever o keygen foi bastante trivial).
As duas atividades requer que você siga a execução do aplicativo em um depurador e tentar descobrir o que está acontecendo. E você precisa saber o baixo API nível de seu sistema operacional.
Algumas aplicações fortemente protegida tem o código criptografado para que o arquivo não pode ser desmontada. Ele é descriptografado quando carregado na memória, mas, em seguida, eles se recusam a iniciar, se detectar que um in-memory depurador foi iniciado,
Em essência, é algo que requer um conhecimento muito profundo, criatividade e muito tempo! Oh, eu fiz menção de que é ilegal na maioria dos países?
Se você quiser saber mais, Google para os Tutoriais Craqueamento + ORC eles são muito antigas e provavelmente nowdays inúteis, mas vai lhe dar uma boa idéia do que isso significa.
De qualquer forma, uma razão muito boa para saber tudo isso é se você quer escrever o seu próprio esquema de proteção.
Outras dicas
procurar Os maus para o código da chave de verificação usando um disassembler. Esta é relativo fácil se você sabe como fazer isso.
Depois você traduzir o código de verificação de chave para C ou outra linguagem (este passo é opcional). Invertendo o processo de chave de verificação dá-lhe um gerador de chaves.
Se você sabe assembler que leva cerca de uma semana para aprender a fazer isso. Eu tenho feito isso apenas há alguns anos (nunca lançado qualquer coisa embora. Foi apenas pesquisar para o meu trabalho de desenvolvimento de jogos. Para escrever um duro de roer-chave que você tem que entender como as pessoas se aproximam de craqueamento).
post ofertas de Nils com geradores de chave. Para rachaduras, normalmente você encontrar um ponto de ramificação e invertido (ou remova a condição) a lógica. Por exemplo, você testar para ver se o software está registado, eo teste pode retornar zero se assim, e depois saltar em conformidade. Você pode mudar o "salto se igual a zero (je)" para "salto se não-é igual a zero (JNE)" modificando um único byte. Ou você pode escrever não-operações por várias partes do código que fazem coisas que você não quer fazer.
Programas compilados pode ser desmontado e com tempo suficiente, as pessoas determinadas podem desenvolver manchas binários. A rachadura é simplesmente um patch binário para obter o programa para se comportar de forma diferente.
Em primeiro lugar, a maioria dos esquemas de proteção contra cópia não são muito bem avançada, e é por isso que você não vê um monte de gente rolando seu próprio estes dias.
Existem alguns métodos utilizados para fazer isso. Você pode percorrer o código em um depurador, o que geralmente requerem um conhecimento razoável de montagem. Usando que você pode ter uma idéia de onde na proteção de cópia de programas / métodos Keygen são chamados. Com isso, você pode usar um desmontador como IDA Pro para analisar o código mais de perto e tentar para entender o que está acontecendo, e como você pode ignorá-lo. Eu rachado por tempo limitado Betas antes, inserindo instruções NOOP sobre a data de verificação.
É realmente apenas se resume a uma boa compreensão do software e uma compreensão básica de montagem. Hak5 fez uma série de duas partes sobre os dois primeiros episódios desta temporada em espécie dos princípios básicos de engenharia reversa e rachaduras. É de realmente básico, mas é provavelmente exatamente o que você está procurando.
Um pretenso desmonta biscoito do programa e olha para os bits "de proteção contra cópia", especificamente para o algoritmo que determina se um número de série é válido. A partir desse código, muitas vezes você pode ver o padrão de bits é necessária para desbloquear a funcionalidade, e em seguida, escrever um gerador para criar números com esses padrões.
Outra alternativa é procurar funções que retornam "true" se o número de série é válido e "false" se não é, então, desenvolver um patch binário para que a função sempre retorna "verdadeiro".
Tudo o resto é em grande parte uma variante essas duas idéias. proteção contra cópia é sempre quebrável por definição -. em algum momento você tem que acabar com código executável ou o processador não poderia executá-lo
O número de série você pode simplesmente extrair o algoritmo e começar a atirar "Suposições" para ele e olhar para uma resposta positiva. Computadores são poderosos, geralmente só leva um pouco de tempo antes de começar a cuspir para fora hits.
Quanto à pirataria, eu costumava ser capaz de passo através de programas a um nível elevado e olhar para um ponto em que parou de funcionar. Então você volta para a última "Call", que sucedeu e passo para ele, em seguida, repita. Naquela época, a proteção contra cópia foi geralmente escrita para o disco e ver se uma leitura posterior sucedido (Se assim for, a proteção de cópia falhou porque eles usaram para queimar parte do disquete com um laser por isso não poderia ser escrito para).
Em seguida, era apenas uma questão de encontrar a chamada direita e codificar o valor de retorno correto do que chamada.
Eu tenho certeza que ainda é semelhante, mas eles passam por um grande esforço para esconder o local da chamada. Último que eu tentei Eu desisti porque manteve código de carregamento sobre o código que eu estava pisando-único através, e tenho muita certeza de que ele está ficando mais complicado desde então.
Eu me pergunto por que eles não apenas distribuir binários personalizados, onde o nome do proprietário é armazenado em algum lugar (criptografadas e ofuscado) no binário ou melhor distribuídos ao longo de todo o binário .. AFAIK a Apple está fazendo isso com os arquivos de música na iTunes Store, no entanto lá é muito fácil, para remover o nome dos arquivos.
Eu assumo cada crack é diferente, mas eu acho que na maioria dos casos alguém gasta muito tempo no depurador traçando a aplicação em questão.
O gerador de serial leva um passo além, analisando o algoritmo que verifica o número de série para validade e engenheiros revertê-la.