Este é um post disponível para assinantes MVPEste post também está disponível para assinantes da ClubeDelphi DIGITAL ou para quem possui Créditos DevMedia. Clique aqui para saber mais!
MadShi Collection - Artigo Revista Clube Delphi 127
Este artigo será um estudo dirigido da biblioteca MadShi. Serão mostrados vários aspectos da biblioteca, como as ferramentas de gerenciamento de exceções e API hooking. Os exemplos práticos envolverão a apresentação de um relatório avançado de erros com snapshot automático e informações de debug. O exemplo prático de API hooking mostrará um monitor de arquivos.
ClubeDelphi 127
[Artigo já está disponível no Leitor Digital DevMedia®. Clique aqui para acessá-lo]
> Clique aqui para ler todos os artigos da ClubeDelphi 127
[Artigo já está disponível no Leitor Digital DevMedia®. Clique aqui para acessá-lo]
> Clique aqui para ler todos os artigos da ClubeDelphi 127
MadShi Collection
Tratamento de exceções e hooking de API e código
De que se trata o artigo
Este artigo será um estudo dirigido da biblioteca MadShi. Serão mostrados vários aspectos da biblioteca, como as ferramentas de gerenciamento de exceções e API hooking. Os exemplos práticos envolverão a apresentação de um relatório avançado de erros com snapshot automático e informações de debug. O exemplo prático de API hooking mostrará um monitor de arquivos.
Para que serve
A biblioteca MadShi tem vários objetivos, dentre eles Exception Handling e API Hooking. Exception Handling serve para obter informações úteis e concisas sobre erros não tratados. Isso pode ajudar muito a agilizar a correção de bugs e o bug tracking. Além disso, o usuário se sentirá mais seguro com uma mensagem de erro amigável e a possibilidade de enviar um relatório para seu fornecedor. Já API Hooking é essencial para interceptar e modificar funções de DLLs de outros programas ou até do próprio Windows.
Em que situação o tema é útil
Em casos de programas com muitas exceptions não tratadas e muitas mensagens de “Invalid Pointer Operation” e “Access Violation” é importante saber exatamente em que linha e unit o problema se encontra, sem precisar debugar o programa ou levar o Delphi para o cliente. API hooking é útil para integração com outros softwares ou para segurança. É possível impedir o desligamento do servidor, impedir a exclusão ou abertura de arquivos essenciais ao sistema, monitorar tudo o que é digitado (Keylogger), proibir a abertura de certos programas dentre muitas outras utilidades.
Exceções e API Hooking
Com certeza você já se deparou com um erro de Access Violation ou Invalid Pointer Operation durante a demonstração de um sistema feito em Delphi. Essas mensagens, além de feias, são alarmantes para o cliente, e constrangedoras para o desenvolvedor. E por mais que se tente usar logs e tratamentos de exceções mostrando qual a janela aberta e como a exceção foi disparada, no máximo terá o controle que disparou o erro, caso ele tenha sido disparado por um controle. O programador muitas vezes tem que adivinhar em que linha que ocorre o erro ou debugar o programa com uma base de dados real para poder encontrar e corrigir esse bug. Com relação à segurança, utilizando API hooking é possível implementar funções básicas de um sistema de Cyber Café / Lan House sem a necessidade de um software muito caro para isso. Como este artigo é um estudo dirigido será mostrada uma quantidade maior de exemplos teóricos do que sistemas propriamente ditos.
Existem certas bibliotecas para o Delphi tão úteis que deveriam vir com o produto. A política da Borland/Codegear/Embarcadero sempre foi colocar no mercado a ferramenta com os recursos essenciais e permitir que desenvolvedores de componentes e experts desenvolvam extensões para o IDE. Isso é bom para as empresas que desenvolvem componentes, mas não tão bom, talvez, para as empresas que desenvolvem software customizado.
A MadShi Collection é uma coleção de bibliotecas que vem com várias utilidades, dentre elas a MadShiExcept e a MadShiCodeHook. No pacote todo, algumas das suas funcionalidades são gratuitas e com fonte, algumas são gratuitas para uso não comercial e sem fontes, e algumas são apenas de uso por tempo limitado (trial) sem fontes. Mesmo assim a biblioteca inteira pode ser adquirida com fontes e licença para desenvolvedores ilimitados.
É necessário avaliar o custo-benefício. Se uma empresa tem mais de 4 programadores e um número razoável de clientes é possível comprar a MadShiExcept por 449 Euros, para um número ilimitado de programadores e com código fonte.
A biblioteca MadShiCodeHook é um pouco mais cara, podendo chegar a 1999 Euros dependendo da licença. Mas ela permite criar softwares bastante fora do comum, por exemplo interceptando e alterando os parâmetros de chamadas a funções de outros softwares ou da API do Windows. "
ATENÇÃO! A exibição deste artigo foi interrompida.
Este é um post disponível para assinantes MVP
Tratamento de exceções e hooking de API e código
De que se trata o artigo
Este artigo será um estudo dirigido da biblioteca MadShi. Serão mostrados vários aspectos da biblioteca, como as ferramentas de gerenciamento de exceções e API hooking. Os exemplos práticos envolverão a apresentação de um relatório avançado de erros com snapshot automático e informações de debug. O exemplo prático de API hooking mostrará um monitor de arquivos.
Para que serve
A biblioteca MadShi tem vários objetivos, dentre eles Exception Handling e API Hooking. Exception Handling serve para obter informações úteis e concisas sobre erros não tratados. Isso pode ajudar muito a agilizar a correção de bugs e o bug tracking. Além disso, o usuário se sentirá mais seguro com uma mensagem de erro amigável e a possibilidade de enviar um relatório para seu fornecedor. Já API Hooking é essencial para interceptar e modificar funções de DLLs de outros programas ou até do próprio Windows.
Em que situação o tema é útil
Em casos de programas com muitas exceptions não tratadas e muitas mensagens de “Invalid Pointer Operation” e “Access Violation” é importante saber exatamente em que linha e unit o problema se encontra, sem precisar debugar o programa ou levar o Delphi para o cliente. API hooking é útil para integração com outros softwares ou para segurança. É possível impedir o desligamento do servidor, impedir a exclusão ou abertura de arquivos essenciais ao sistema, monitorar tudo o que é digitado (Keylogger), proibir a abertura de certos programas dentre muitas outras utilidades.
Exceções e API Hooking
Com certeza você já se deparou com um erro de Access Violation ou Invalid Pointer Operation durante a demonstração de um sistema feito em Delphi. Essas mensagens, além de feias, são alarmantes para o cliente, e constrangedoras para o desenvolvedor. E por mais que se tente usar logs e tratamentos de exceções mostrando qual a janela aberta e como a exceção foi disparada, no máximo terá o controle que disparou o erro, caso ele tenha sido disparado por um controle. O programador muitas vezes tem que adivinhar em que linha que ocorre o erro ou debugar o programa com uma base de dados real para poder encontrar e corrigir esse bug. Com relação à segurança, utilizando API hooking é possível implementar funções básicas de um sistema de Cyber Café / Lan House sem a necessidade de um software muito caro para isso. Como este artigo é um estudo dirigido será mostrada uma quantidade maior de exemplos teóricos do que sistemas propriamente ditos.
Existem certas bibliotecas para o Delphi tão úteis que deveriam vir com o produto. A política da Borland/Codegear/Embarcadero sempre foi colocar no mercado a ferramenta com os recursos essenciais e permitir que desenvolvedores de componentes e experts desenvolvam extensões para o IDE. Isso é bom para as empresas que desenvolvem componentes, mas não tão bom, talvez, para as empresas que desenvolvem software customizado.
A MadShi Collection é uma coleção de bibliotecas que vem com várias utilidades, dentre elas a MadShiExcept e a MadShiCodeHook. No pacote todo, algumas das suas funcionalidades são gratuitas e com fonte, algumas são gratuitas para uso não comercial e sem fontes, e algumas são apenas de uso por tempo limitado (trial) sem fontes. Mesmo assim a biblioteca inteira pode ser adquirida com fontes e licença para desenvolvedores ilimitados.
É necessário avaliar o custo-benefício. Se uma empresa tem mais de 4 programadores e um número razoável de clientes é possível comprar a MadShiExcept por 449 Euros, para um número ilimitado de programadores e com código fonte.
A biblioteca MadShiCodeHook é um pouco mais cara, podendo chegar a 1999 Euros dependendo da licença. Mas ela permite criar softwares bastante fora do comum, por exemplo interceptando e alterando os parâmetros de chamadas a funções de outros softwares ou da API do Windows. "
ATENÇÃO! A exibição deste artigo foi interrompida.
Este é um post disponível para assinantes MVPEste post também está disponível para assinantes da ClubeDelphi DIGITAL ou para quem possui Créditos DevMedia. Clique aqui para saber mais!

Você está em:
canal Delphi
Publicidade
Vitor Luiz Rubio
Space do autor
Analista de Sistemas Sr. na Editora Revista dos Tribunais. Trabalha com Delphi desde a versão 3. Formado em Processamento de Dados pela FATEC-SP
Space do autor


0
0
