Olá!
Não sou um expert no assunto, mas vou dar minha opinião.
1)Segurança é relativo. Há editores hexadecimais que podem ler/editar qualquer coisa no executável. Você pode apenas dificultar. Se houver como armazenar on-line... mas depende da sua aplicação;
2)Por força-bruta, alguém pode, por exemplo, usar programas gerados com o AutoIt(
http://www.autoitscript.com/site/autoit/) . Vírus e variantes são feitos com ele, pelo menos, para Windows;
3)Impedir, acho que não dá. Apenas dificultar. O programa que informou no link procura por valores armazenados na memória. Caberia um estudo de viabilidade para implementação de alguns testes que validem o que está na memória, apenas para o que é sensível. A implementação da validação fica por sua conta.
Ficam algumas outras dicas:
1)Pode compensar não implementar segurança nenhuma, depende do seu caso;
2)Não use apenas um ponto na sua aplicação para garantir segurança. Espalhe testes distintos em locais distintos com códigos totalmente distintos de segurança. Por exemplo, não chame no código uma mesma função de segurança mais de uma vez. E ela for violada, todos os lugares que ela é usada estarão violados;
3)Não use nomes comuns relativos à segurança para variáveis, como "login", "senha", etc. a não ser que queira fazer "honeypots";
4)Não armazene senhas, mas apenas o "hash" gerado, e compare os "hashs";
5)Faça backups.
Ah, quase ia me esquecendo... ajuda em parte do problema:
http://wiki.freepascal.org/OnGuardBoa sorte!
Helder