Saturday, January 7, 2023

SystemBuilder da Squadra II - A missão (final)

Há mais de 15 anos, publiquei um post sobre o SystemBuilder da Squadra, aqui:

https://alexandrecmachado.blogspot.com/2007/11/systembuilder-da-squadra.html

Pessoalmente nunca usei o SystemBuilder e hoje, mais do que nunca, acho que foi uma péssima idéia quem usou. O SystemBuilder facilitou o desenvolvimento às custas de introduzir muitas coisas erradas no código e no sistema.

Bem, isto não vem ao caso aqui. 

Este post serve somente para ensinar como ficar livre da proteção que a Squadra colocou no SystemBuilder, coisa que qualquer um pode fazer seguindo alguns passos simples.

Por que estou fazendo isso? Bem, sou completamente a favor de se cobrar por um produto e serviço, e incluir proteção no software, para evitar pirataria. 

Mas sou contra a empresa simplesmente terminar com o suporte ao produto e deixar os usuários órfãos sem ter como continuar com o sistema. A Squadra não suporta mais o SystemBuilder e deveria ter liberado o código fonte do framework para que os usuários fizessem bom uso dele. Não o fez sabe-se lá porquê. Talvez ainda tenha algum usuário que ligue para lá desesperado e pague algumas centenas de reais para ter um novo serial key? Não faço idéia. Mas se é por causa disso, é uma estupidez sem tamanho.

Então vamos ao que interessa. Como eu disse no post anterior, a proteção contra execução não autorizada do SystemBuilder é coisa bem precária, com certeza feito por quem não entende de segurança de software.

Atenção: Este hack se aplica do SystemBuilder 3.2 (última versão lançada) para o Delphi 7 somente.

A primeira coisa é instalar um heditor hexadecimal, caso não tenha. Eu uso e aconselho o HxD. Baixe ele aqui:

https://mh-nexus.de/en/hxd/

Após instalado, procure no seu sistema onde o SystemBuilder está instalado pelo arquivo SqUtil.dcu.

Rode o HxD e abra o arquivo SqUtil.dcu. Você vai ver algo como isso:


Agora, vá ao menu Search (Procurar), selecione a aba Hex-values e cole esta sequência de caracteres lá:

55 8B EC B9

Veja a figura abaixo


O HxD vai encontra a sequência e marcá-la, como mostrado abaixo:


Agora vem o passo final. Coloque o cursor onde está 55 acima e edite o código diretamente. Substitua 55 8B EC por B0 01 C3


Após editado, vá no menu File e selecione Save, salvando as alterações. O HxD, se não me falha a memória, irá criar uma cópia do arquivo original e irá salvar o novo arquivo (alterado) com o mesmo nome.

Pronto. Você agora tem um SqUtil.dcu que contém código que irá sempre validar a instalação do SystemBuilder. Basta dar um build na aplicação e ela irá funcionar normalmente. Nunca mais a proteção do SystemBuilder irá se intrometer no seu caminho. 😀😀😀

Um detalhe: Como somente o DCU foi alterado, isto não muda o comportamento dos pacotes (packages) que são instalados no IDE do Delphi 7. 

Duas coisas que eu garanto aqui:

- Não existe nenhum código malicioso aí, e nem seria possível fazer algo assim com uma alteração de tão poucos bytes.

- Esta alteração não muda nada no funcionamento do SystemBuilder. Ela simplesmente faz um bypass na validação de proteção.

Em uma outra oportunidade eu irei explicar o que foi feito acima e porque uma alteração tão simples funciona tão bem.

Até a próxima!