Começo por dizer que versões crackeadas de software são criadas com o uso de debuggers.
Um debugger é um tipo especial de software que permite que os programadores desmontem o seu software em partes, com o objectivo de encontrar bugs, e, portanto, corrigir erros. Além disso, os debuggers podem ser usados para engenharia reversa ou para ver o que há dentro do software, para aprender a sua lógica.
Esse último método é usado principalmente por pesquisadores de malware para estudar o que o malware (ou vírus de computador) faz internamente, mas também pode ser usado por um invasor para "crackear" (ou contornar a segurança de) um registo de software ou, às vezes, para alterar o comportamento normal do programa, por exemplo, injectando um código com carácter malicioso nele.
Isto explicando de uma maneira mais simples, é preciso andar para "trás" nas aplicações, "desmontá-las" e localizar entre milhões e milhões de linhas de código, os processos que são necessários para desenvolver um crack.
E isso não é uma tarefa fácil. Poucas pessoas conseguem e é por isso que o "cracking" de software é uma habilidade especial.
Um "cracker" tem duas opções:
- Fazer modificações (ou patches) no binário.
- Fazer engenharia reversa nas funções e criar um "KeyGen" ou "Key Generator".
A primeira escolha é bastante directa. Um invasor precisa de escrever o seu próprio "patcher" (ou um pequeno executável que aplicará a modificação descrita acima). A desvantagem dessa abordagem para um invasor é que o patch de um arquivo executável original modificará a sua assinatura digital, o que pode alertar o utilizador final ou o fornecedor. Além disso, o executável "patcher" feito por um hacker pode ser facilmente sinalizado e bloqueado pelo software antivírus do utilizador final ou levar os investigadores criminais à identidade do invasor.
Assim acontece com a pacth do Office que é sinalizada pelos Antivirus como um ficheiro malicioso.
A segunda opção é um pouco mais complicada. Um invasor terá que estudar as funções de registo das aplicações, copiar para o seu programa que vai duplicar efetivamente a lógica implementada no software original e permitirá que ele gere o código de registo de qualquer nome, dando a qualquer utilizador desse software a capacidade de registá-lo sem efectuar o pagamento ou a simulação deste.
Os fornecedores de muitos dos principais produtos de software entendem o impacto potencial do segundo método e tentam evitá-lo, exigindo o que é conhecido como "autenticação".
Esta é basicamente uma segunda etapa após o registo, em que o software envia o nome do registo ao servidor da empresa que retorna uma resposta ao software, independentemente de o código ser legítimo ou não. Isso é feito pela Microsoft quando compras o Windows (eles chamam de "Activar o Windows") e também pela Adobe e muitas outras empresas. Este segundo passo pode ser realizado nos bastidores em segundo plano enquanto o software está a se executado e, geralmente, levará ao cancelamento do registo anterior, se tiver sido obtido ilegalmente.
Cuidados a ter com software "crackeado"
Tudo se resume ao facto de que qualquer código de software precisa ser lido pela CPU (no caso de um código nativo binário) ou por um intérprete ou um compilador JIT (no caso de código JavaScript ou .NET). Isso significa que se existe uma maneira de ler / interpretar algo, por mais complexo ou complicado que seja, um invasor com conhecimento e persistência suficientes também poderá lê-lo e, assim, quebrá-lo.
Há um argumento de que o software baseado na nuvem é mais seguro, o que é verdade, pois seu código (binário) permanece no servidor e os utilizadores finais não têm acesso directo a ele. E mesmo que o software baseado em nuvem seja definitivamente o futuro, ele tem algumas desvantagens importantes que nunca permitirão substituir totalmente o software convencional. Para citar apenas alguns:
- Nem toda a gente tem uma conexão com a Internet de jeito;
- Confiança de guardar dados no desconhecido;
- Recursos;
- Custos - Quantos mais recursos precisas mais caro te sai;
Um dos problemas de quem cria os "cracks" é que podem modificar o software para implementar malware em muitos computadores e isso é um verdadeiro risco que corremos quando usamos software "pirateado".
Porque os programadores não criam um sistema para evitar isso?
Muitos tentam mas...
Qualquer tipo de táctica de engenharia anti-reversa pode ser ultrapassada por um invasor com persistência suficiente. Então, para que vão se preocupar e desperdiçar tempo quando podem investir tempo adicionando algo útil ao software que o tornará mais produtivo para utilizadores legítimos?
A "pirataria" também serve como uma forma de Marketing gratuito. Ou pensas que milhões de utilizadores em todo o mundo do Windows são todos pagantes?
Outro motivo é o facto poderem criar falsos positivos com os softwares antivírus, o que obviamente não é muito bom para o marketing desse software. E também cria complexidade desnecessária para o programador depurar o software.
A adição de armadilhas no código também pode "falhar" com utilizadores legítimos, o que realmente os leva à insatisfação.
O custo deste esforço seria muito maior para as empresas do que realmente são prejudicadas com cracks e patches.
Espero que tenham gostado da explicação.
Post A Comment:
0 comments: