[firebase-br] ocultando suas dml's do banco

Sandro Souza escovadordebits em gmail.com
Seg Set 10 18:41:09 -03 2012


Bom dia/tarde/noite Maurício.

Meu nobre, após esses seus UPDATEs, o código fonte já era, só restando uma
única saída no estilo "missão quase impossível".

A grande maioria (senão todos) os SGBDs, processam os fontes de suas stored
procedures, funções e triggers, não só para encontrar erros (de sintaxe e
outros), mas também para gerar uma espécie de "bytecode", ou seja, uma
sequência de códigos que são gerados a partir do código fonte fornecido, e
que facilita imensamente a interpretação e execução do mesmo, como fazem o
Java, o Python e outras linguagens de programação interpretadas.

Acredito que o Firebird guarde o "bytecode" gerado das stored procedures na
coluna "RDB$PROCEDURE_BLR" da tabela "RDB$PROCEDURES" que é do tipo BLOB
(binário).

A "missão quase impossível" seria estudar o código fonte do Firebird para
gerar uma ferramenta de engenharia reversa, ou seja, uma ferramenta que
leia o conteúdo binário da coluna "RDB$PROCEDURE_BLR" e consiga gerar um
código fonte mais próximo possível do código fonte original, ou seja, um
descompilador de stored procedures e triggers para o Firebird.

Como você pode perceber, não é uma tarefa das mais fáceis, mas se não
houver outro caminho, seria esse o caminho a ser seguido. Claro, só se
minha suspeita sobre essa coluna "RDB$PROCEDURE_BLR" estiver correta, caso
contrário, já era.

Sinto não poder te ajudar nesse caso. Boa sorte.

Em 8 de setembro de 2012 12:51, MAURICIO COSTA
<maximmumsistemas em gmail.com>escreveu:

> Gente fiz uns teste em uma base de teste mas, tenho muitas procedimentos
> importantes como views, procedures e triggers.
> Fui fazer um teste de proteger estes em minha base fazendo com que não
> mostrasse o conteúdo dos mesmos blz! ví que deu certo será ótimo pois
> ninguém poderá ver o que esta dentro de deles. Mas, aí vem a parte ruim,
> esqueci de fazer bakup desta base e como faço para reverter a situação!
> O comando para as proteger osdados dml do banco segue abaixo cometado
> acima. Alguém poderia me ajudar?
>
> --Escondendo o script DML de stored procedures (procedimentos armazenados)
> UPDATE rdb$procedures SET rdb$procedure_source = NULL, rdb$description
> ='Protegido por lei de copyright' WHERE ((rdb$system_flag = 0) OR
> (rdb$system_flag IS NULL));
>
> --Escondendo o script DML de triggers (gatilhos)
>
> UPDATE rdb$triggers a SET rdb$trigger_source = NULL, rdb$description
> ='Protegido por lei de copyright' WHERE ((rdb$system_flag = 0) OR
> (rdb$system_flag IS NULL)) AND NOT EXISTS(SELECT rdb$trigger_name FROM
> rdb$check_constraints WHERE rdb$trigger_name=a.rdb$trigger_name);
>
> --Escondendo o script DML de views (visões)
> UPDATE rdb$relations SET rdb$view_source = NULL, rdb$description
> ='Protegido
> por lei de copyright' WHERE ((rdb$system_flag = 0) OR (rdb$system_flag IS
> NULL));
>
> Agradecerei a ajuda.
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista