Archive for the ‘programação’ Category

PHP 5.2.11 LIBERADO! Cpanel Já fez barulho quanto a isto hein!

Saturday, September 19th, 2009

Galera, para quem gosta de manter-se atualizado, a Zend (pai do php) lançou juntamente com a equipe de desenvolvimento o php 5.2.11. Vale a pena o update devido a quantidade de bugs corrigidos.

http://www.php.net

Para os usuários de cpanel o easyapache já está liberando disponibilizando junto ao whm, vide:
http://changelog.cpanel.net/?treeview=easyapache

embedded by Embedded Video

Download Video

PHP: Não tem dinheiro para “encriptar” seus scripts? Obfuscator já!

Tuesday, September 15th, 2009

Pois é, esta dica vai para quem está precisando poupar um cash mas gostaria de tornar mais difícil a leitura de seus scripts pelos “rippators tabajara” da web!
Isto mesmo, com o

PHP Obfuscator

Seus problemas acabaram!
Grátis e Open Source!

Segue o link do site:

http://www.raizlabs.com/software/phpobfuscator/

Repositório Atomic (este sim é o cara!) repositório para desenvolvedores que necessitam de TUDO para CentOs ou RedHat

Thursday, May 7th, 2009

Se você é um desenvolvedor praticamente CURRENT então instale este repositório maravilhoso:

wget -q -O – http://www.atomicorp.com/installers/atomic |sh


Problema na instalação ou Uso do IonCube no Plesk Linux

Sunday, May 3rd, 2009

Para localizar o problema com o IonCube no plesk basta rodar o comando abaixo:

grep -iR ioncube /etc/php*
/etc/php.d/ioncube.ini:zend_extension=/usr/lib/php/ioncube/ioncube_loader_lin_5.2.so
/etc/php.d/ioncube-loader.ini:zend_extension=/usr/lib/php/modules//php_ioncube_loader_lin_5.1.so

Pegue o segundo valor e comente ele, ou seja, vim /etc/php.d/ioncube-loader.ini e na linha coloca ; antes de tudo, isto deixará desabilitado.

Após use

php -v e verá que o seu plesk está ok.

Como fazer o seu script php solicitar autenticação usando header

Tuesday, April 28th, 2009

Uma das formas mais legais que se tem de fazer autenticação de diretório com caixa de diálogo no browser é usando a função header do php e mandando brasa!

Um exemplo prático para você:

function checker($user, $pw) {
if( ($user == “nome_do_login”) && ($pw == “password”) ) {
return true;
} else {
return false;
}
}

if( !(checker($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'])) ) {
header(‘WWW-Authenticate: Basic realm=”Autentique-se”‘);
header(‘HTTP/1.0 401 Unauthorized’);
echo “Dados incorretos.”;
exit;
}

É isso!

Resolvendo problemas com iframe infectado

Friday, April 17th, 2009

Um exemplo prático para resolver problemas com iframes lascados por spammers e crackers pode ser analisada da seguinte maneira:

find /home/*/public_html -name “*.php” -exec sed -i ‘s/<iframe src=\\”http:\/\/google-ana1yticz.com.*<\/\iframe>//g’ {} \; -print

What ip whmcs auth Qual ip do WHMCS para autenticação ou liberação em um firewall

Tuesday, April 14th, 2009

Se você precisa do ip do whmcs (comumente usado em caso de um firewall bloqueando tudo e você necessitando permitir a autenticação) e não sabe qual é o ip a ser liberado para que o whmcs acesse a central do sistema use o ip abaixo em sua whitelist:

74.54.136.210

Software livre: Necessidade ou Xiitismo?

Friday, March 27th, 2009

É muito comum ver pessoas criticando o software livre ou mesmo elogiando sem entender seu impacto no mundo comercial.

Vamos falar um pouco da realidade do Software Livre em um foco totalmente comercial para que as pessoas entendam a real necessidade desta metodologia/visão de negócio e também possam aplicar em suas vidas esta estratégia. (mais à frente explicarei o porquê de estratégia)

Em primeiro passo devemos fixar em nossas mentes que Software Livre NÃO é software gratuito, isto mesmo, o fato de você ter usado uma ferramenta de código-fonte aberto e se beneficiado da gratuidade deste utilitário não quer dizer que as pessoas não tirem proveitos financeiros sobre tal metodologia/visão.

Abaixo vou citar alguns casos aonde se extrai muito dinheiro do software livre.

Dentro deste seguimento prestemos atenção em um dos mais populares fenômenos do Software Livre, o Gnu/Linux e seus sabores.

Temos no mercado corporativo do pingüim 3 distribuições em especial que se destacam pela sua aceitação de mercado, estabilidade e suporte de alta qualidade:

* Red Hat
* Suse Enterprise
* Mandriva

As três distribuições acima citadas COBRAM pelo suporte e acesso a repositórios comerciais.

Em algum instante você pode estar se perguntando:
Isto é maquiavélico, por que eles cobram por Gnu/Linux se ele é gratuito?

Mentira! Gnu/Linux é um sistema de código-fonte aberto, mas isto não quer dizer que todos têm sua disponibilidade ou licença gratuitos.

Explique-me como manter um suporte via fone, helpdesk e ter servidores ligados 24 horas, com alta disponibilidade de rede e software?
Quem pagará as contas de luz, água e internet?

Quem pagará os desenvolvedores?

Vejamos outro caso de sucesso – Ubuntu. Sistema amigável, Gnu/Linux, grátis para uso, porém, o suporte cobra para impor seu know how e ajustar sua plataforma, mas pergunto, isto é maquiavélico?

Não, muito pelo contrário, é uma forma de manter o negócio das pessoas bem estruturado e reter lucratividade para empresa. (isto resulta em contratações de desenvolvedores mais experientes e equipamentos mais sofisticados para que sejam testados os softwares com mais stress)

Saindo do globo do pingüim, voltemos à situação do software livre como alternativa as empresas, como sua empresa ou sua casa, até mesmo seu escritório poderiam beneficiar-se de uma metodologia tão forte, melhor dizendo, uma tendência tão evidente e aplicável a qualquer mercado?

Simples, vamos analisar um caso bastante comum nas empresas e entender o porquê do Software Livre ser tão necessário para uma implementação.

Há meses presto consultoria em uma empresa mineira, tendo a mesma uma utilização software proprietário (isto não quer dizer Microsoft, mas qualquer código fechado é de propriedade do desenvolvedor) em alta escala. Até aí as coisas transcorriam de vento em polpa, entretanto, como nem tudo tende a ser um mar de rosas sem espinhos, houve a necessidade de implementação de uma simples funcionalidade no software que a empresa usa para gestão de seus negócios, o que aconteceu?
Houve um investimento de R$ 1000 (mil reais) para implementação de um campo.
Havendo 2 programadores na empresa (um programando em VB e outro em PHP), por que tal campo não foi implementado sem custos?
A resposta é clara, AONDE estava o código-fonte? Ele estava aberto? Quem diabos o fechou?

Pois é amigo, nesta hora as coisas começam a fazer sentido, e para piorar, o software utiliza cliente como sendo pontos de acesso, fazendo consultas infinitas no banco de dados, com resultados pesadíssimos, o que gera gargalo na rede, mesmo sabendo que um front-end no servidor resolveria tudo, visto que somente ele processaria toda a demanda, e o melhor, somente ele precisaria de alta capacidade de armazenamento e processamento, assim como evitar que cada terminal cliente não estivesse obrigado a utilizar-se de um Sistema Operacional Windows, visto que o mesmo tem custos e as bibliotecas da ferramenta comercial só operam nele.

Em cálculos mais claros, vamos analisar custo de licença e vantagens comerciais:

Se cada licença Windows XP Profissional custa R$ 250 (duzentos e cinqüenta reais), preço este sob compra em maior escala, e se a instituição possui 14 computadores nós temos 14 x R$ 250 = R$ 3500 (três mil e quinhentos reais). Cada hardware deve suportar Windows XP e os requisitos mínimos do software que não utiliza conceitos de mercado de TI do século XXI, ou seja, se cada máquina custa R$ 590 (sem monitor, é claro) nós temos R$ 8260 (oito mil duzentos e sessenta reais), então concluímos que o total gasto pela empresa para rodar a aplicação e estar provida dos recursos que a mesma disponibilizava foi de R$ 11760 (onze mil setecentos e sessenta reais) + custo de desenvolvimento e implementação da plataforma proprietária.

Vamos levar este foco agora para o Software Livre e ver o quanto as coisas começam a ficar claras:

Como o software utiliza-se de browser (nem tudo, por que os desenvolvedores podem usar linguagens como C, C++ ou Java) podendo ter sido feito até mesmo em Java (Java desktop) nós cortaríamos gastos com o sistema operacional, visto que não depende de sistema operacional para trabalhar, ou seja, abateremos (pelo menos) R$ 3500 (três mil e quinhentos reais) e o processamento (em caso de browser) é centralizado no servidor, o que faria com que máquinas de baixo processamento fossem utilizadas (sabe aqueles k6-II- 500 mhz parados aí na sua empresa?).

No caso acima, compilando e devolvendo o fonte principal ao cliente, é claro.(em caso caso de linguagens que necessitam de compiladores)

De posse de simples afirmações citadas não tenha medo de focar-se em Gnu/Linux e em Software Livre, por que com SL nós temos a possibilidade de analisar o fonte e mudar as coisas ao nosso estilo, seguindo as necessidades triviais de nossa empresa sem qualquer falta de qualidade, escalabilidade ou dificuldade na manutenção.

Quanto a utilizar-se de Gnu/Linux em sua empresa, faça isto por amar sue negócio, use Gnu/Linux para economizar em seu negócio.

Se às pessoas vierem justificando a não utilização por falta de recursos como impressão, rede e etc, fique certo de que a plataforma Gnu/Linux tem suporte as mais variadas impressoras que o mercado disponibiliza, tem suporte pesado a redes (servidores de dns, logon, ldap – que te dão a mesma autonomia de unidades organizacionais do Windows Server, assim como suporte dhcp, compartilhamento de arquivos e bancos de dados).

Em outras palavras, utilizar-se de Windows para facilidades já não é um argumento válido. Programar soluções proprietárias é outra afirmação equivocada, quer saber por quê?

1 – Software de código-fonte aberto permite uma interação mútua no suporte, ocorrendo de maneira mais simples,

2 – Software aberto permite que qualquer pessoa, inclusive o dono da empresa saibam o que realmente o código faz no back-end, (em background)

3 – Software aberto permite manutenção mais abrangente e update de software com mais qualidade,

4 – Software aberto permite que o código seja visto por qualquer desenvolvedor, o que dá mais amplitude na aplicação de técnicas mais maduras e sofisticadas.

Então, ainda vai ficar no mundo “Redmond”?

Lá em cima afirmei como estratégia o software livre, pois bem, pergunte ao Obama o que ele acha disto, visto que tornou tal metodologia como sendo padrão no desenvolvimento de aplicações para o governo (escolas, hospitais e etc).

Abraços a todos.

Como impedir que sites tenham seus diretórios listados no cpanel how to turn off browser directory

Friday, March 13th, 2009

Nada de pânico, se você quer desabilitar a listagem de diretórios em seu servidor siga os passos abaixo:

Service Configuration -> Apache Configuration -> Global Configuration -> LOCALIZE Directory ‘/’ Options e desmarque -> Indexes.

Para testar basta criar um diretório em um site e colocar nele um arquivo chamado eu.txt (por exemplo), abra o domínio simulando uma listagem, por exemplo:

www.libphp.net/lib/

Se estivesse dentro de lib (o txt) ele apresentaria erro na leitura (forbidden)

Deus abençoe você!

Como fazer downgrade do mysql 5 para o 4 no cpanel – how to downgrade mysql 5 to 4

Wednesday, March 11th, 2009

Primeiro entre no arquivo:

vim /var/cpanel/cpanel.config

procure pela linha mysql-version=5.0 e em seguida coloque 4.1 no lugar de 5.0

saia salvando o arquivo, em seguida rode:

/scripts/mysqlup –force

Após isto, confirme a versão com:

rpm -qa | grep -i mysql-

Obs: Se funcionar eu quero uma caixa de Bis hein?

Turn Off news Hord Como retirar as propagandas do Horde Webmail

Tuesday, March 10th, 2009

Fácil, procure o arquivo:

horde/templates/portal/sidebar.inc (dentro de inetpub/vhosts/webmail) no WINDOWS e /usr/share/psa-horde/templates/portal/sidebar.inc no linux e Comente o trecho abaixo:

/**
if (window.NewsFeeds) {…

}
**/

Coloque o /** e termine com */

WRN: Assembly binding logging is turned OFF. To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog]

Tuesday, March 10th, 2009

Se você recebeu o ERRO:

Server Error in ‘/’ Application.
________________________________________
Configuration Error
Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.

Parser Error Message: Could not load file or assembly ‘System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35′ or one of its dependencies. The system cannot find the file specified.

Source Error:

Line 37:
Line 38:
Line 39:
Line 40:
Line 41:

Source File: C:\Inetpub\vhosts\nerdblog.info\httpdocs\web.config Line: 39

Assembly Load Trace: The following information can be helpful to determine why the assembly ‘System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35′ could not be loaded.

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

NADA de pânico, você só precisa acessar o site da Microsoft, instalar o Asp.Net ajax e ser feliz:

http://www.microsoft.com/downloads/details.aspx?FamilyID=ca9d90fa-e8c9-42e3-aa19-08e2c027f5d6&displaylang=en

Após download instale o aplicativo em na máquina aonde o erro ocorreu (servidor) e seja feliz com o asp.net ajax.

II encontro PHP-PB

Sunday, February 22nd, 2009

O que é?

O segundo encontro do grupo de desenvolvedores PHP da Paraíba tem como objetivo reunir os membros do grupo, estudantes e profissionais da área de TI para troca de conhecimentos na tecnologia PHP e relacionadas. O encontro contará com palestras e momentos de networking entre os participantes.

Se você não participou do primeiro enconto, veja como foi:

* Fotos
* Apresentações

Quando?

Dia 07 de Março de 2009, a partir das 8 da manhã na Unipê, localizada na BR-230, bairro Água Fria em João Pessoa.
Unipê

Quer patrocinar?

Faça já o download do nosso plano de patrocínio e entre em contato conosco!

Inscrições

A participação no evento é gratuita, porém é necessária a prévia inscrição e a doação de 1Kg de alimento não perecível no dia do evento.

A doação será repassada à Casa da Criança com Câncer, instituição filantrópica que dá apoio aos pacientes e familiares vindos do interior em busca de tratamento no Hospital do Câncer Napoleão Laureano.

Os membros inscritos e presentes no dia do evento concorrerão a diversos brindes como livros da editora O’Reilly, camisetas, um elePHPant de pelúcia e muito mais!

Já contamos com 378 inscritos no total, sendo 1 só nas últimas 24 horas!

Inscreva-se AQUI!

S1 Ponto: Sistema de controle de ponto Open Source para Linux

Sunday, February 8th, 2009

Nesse artigo abordarei a instalação do programa S1 Ponto na distribuição Slackware Linux 12.1. O S1 Ponto é um software de controle de ponto Open Source em fase inicial de desenvolvimento. Atualmente ele contém módulo de cadastro de funcionários, marcações de ponto e e emissão de relatórios.

O S1 Ponto foi iniciado a pedido de minha esposa, que não queria mais gastar dinheiro com cadernos de ponto na empresa onde trabalha. É um projeto em fase inicial, mas que já possui o básico de um sistema de controle de ponto.

O S1 Ponto usa a biblioteca libfprint[1] para reconhecimento de impressões digitais, o que torna o software compatível com mais de 40 leitores de impressão digital.

O cadastro de funcionários e impressão de relatórios usa interface web desenvolvida com framework django.

Página do projeto: http://s1ponto.opens1.com/

1. A biblioteca libfprint já foi matéria de artigo aqui no Viva o Linux: fprint: Biometria livre, completa e total!

Instalando as dependências

O presente artigo abordará a instalação do S1 Ponto na distribuição Slackware Linux 12.1, no entanto nada impede que o mesmo seja instalado em qualquer outra distribuição, uma vez que todas as dependências sejam resolvidas.

Eis a lista de dependências e seu respectivos sites:

Baixando e instalando o Django, framework de desenvolvimento web/python: $ wget ‘http://s1ponto.opens1.com/download/django-1.0-noarch-1_SBo.tgz?attredirects=0′ -O django-1.0-noarch-1_SBo.tgz
# upgradepkg –install-new django-1.0-noarch-1_SBo.tgz

Baixando e instalando o PySqlite2, pacote com os bindings em Python para base de dados SQLite:

$ wget ‘http://s1ponto.opens1.com/download/pysqlite2-2.3.5-i486-1_SBo.tgz?attredirects=0′ -O pysqlite2-2.3.5-i486-1_SBo.tgz
# upgradepkg –install-new pysqlite2-2.3.5-i486-1_SBo.tgz

Baixando e instalando o SQLite, engine de banco de dados padrão do S1 Ponto (por ser desenvolvido em Django, o sistema pode usar opcionalmente outras bases com MySQL, PostgreSQL ou Oracle).

$ wget ‘http://s1ponto.opens1.com/download/sqlite-3.6.2-i486-1_SBo.tgz?attredirects=0′ -O sqlite-3.6.2-i486-1_SBo.tgz
# upgradepkg –install-new sqlite-3.6.2-i486-1_SBo.tgz

Baixando e instalando o mod_python, módulo do Apache para interpretação de scripts Python:

$ wget ‘http://s1ponto.opens1.com/download/mod_python-3.3.1-i486-1_SBo.tgz?attredirects=0′ -O mod_python-3.3.1-i486-1_SBo.tgz
# upgradepkg –install-new mod_python-3.3.1-i486-1_SBo.tgz

Baixando e instalando a LibFprint, biblioteca Open Source de captura e reconhecimento de impressões digitais:

$ wget ‘http://s1ponto.opens1.com/download/libfprint-0.0.6-i486-1_SBo.tgz?attredirects=0′ -O libfprint-0.0.6-i486-1_SBo.tgz
# upgradepkg –install-new libfprint-0.0.6-i486-1_SBo.tgz

Baixando e instalando o Swig, uma interface de compilação que integra C/C++ com linguagens de script:

$ wget ‘http://s1ponto.opens1.com/download/swig-1.3.35-i486-1_SBo.tgz?attredirects=0′ -O swig-1.3.35-i486-1_SBo.tgz
# upgradepkg –install-new swig-1.3.35-i486-1_SBo.tgz

Baixando e instalando o PyFprint, pacote com os bindings em Python para a biblioteca LibFprint.

$ wget -O ‘http://s1ponto.opens1.com/download/pyfprint-0.0-noarch-1_tla.tgz?attredirects=0′ pyfprint-0.0-noarch-1_tla.tgz
# upgradepkg –install-new pyfprint-0.0-noarch-1_tla.tgz


Instalando o S1 Ponto

Para instalar o S1 Ponto faça o download do software:

$ wget ‘http://sites.google.com/a/opens1.com/s1ponto/download/s1ponto-0.0.1.tar.gz?attredirects=0′ -O s1ponto-0.0.1.tar.gz

Descompacte o arquivo:

$ tar -xpzvf s1ponto-0.0.1.tar.gz

Entre na pasta:

$ cd s1ponto

Como super usuário execute o script “install.sh”, ele perguntará em qual usuário o instalador deverá colocar o ícone no Desktop:

$ su
# sh install.sh

Instalando S1 Ponto:

Criar ícone no Desktop do usuário:
1) ftp
2) teste
#? 2

Configurando o sistema para o uso do software:

* Permitindo acesso ao leitor de impressões digitais.

Para que usuários do grupo “plugdev” tenham acesso ao dispositivo será necessário editar o arquivo: /etc/udev/rules.d/50-udev-default.rules

Alterando a linha que contém SUBSYSTEM==”usb” adicionando os parâmetros MODE=”0664″ e GROUP=”plugdev”. Deixe-a assim:

SUBSYSTEM==”usb”, ACTION==”add”, ENV{DEVTYPE}==”usb_device”, NAME=”bus/usb/$env{BUSNUM}/$env{DEVNUM}”, MODE=”0664″, GROUP=”plugdev”

Configurando o Apache:

Edite o arquivo /etc/httpd/httpd.conf, após a linha:

LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so

Adicione a seguinte linha:

LoadModule python_module lib/httpd/modules/mod_python.so

Após o bloco:

<Directory “/srv/httpd/htdocs”>

</Directory>

Adicione o seguinte bloco:

<Directory “/opt”>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

E por último descomente a linha:

Include /etc/httpd/extra/httpd-vhosts.conf

Edite o arquivo /etc/httpd/extra/httpd-vhosts.conf, remova todo seu conteúdo e adicione o seguinte:

NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /opt/s1ponto/media

<Location “/”>
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE s1ponto.settings
PythonDebug On
PythonPath “['/opt','/opt/s1ponto'] + sys.path”
</Location>

<Location “/media”>
SetHandler None
</Location>

<Location “/arquivos”>
SetHandler None
</Location>

</VirtualHost>

Após todos estes passos configure o Apache para iniciar automaticamente e inicie o mesmo:

# chmod +x /etc/rc.d/rc.httpd
# /etc/rc.d/rc.httpd start

O programa S1 Ponto está pronto para ser usado!

Para cadastrar os funcionários e emitir os relatórios, use a interface web.

Endereço: http://localhost/
Usuário: s1ponto
Senha: s1ponto

Para cadastrar as impressões digitais, abra o sistema de ponto através do ícone no Desktop e use o atalho Ctrl+Shift+L.
Usuário: s1ponto
Senha: s1ponto

Bom proveito a todos e aguardo contribuições e ideias.

Veja abaixo um pequeno vídeo de demonstração do software:

fonte: http://www.vivaolinux.com.br/artigo/S1-Ponto-Sistema-de-controle-de-ponto-Open-Source-para-Linux?pagina=1

Como decompilar programas em Delphi – How to Decompiler Delphi application decompilar delphi

Wednesday, February 4th, 2009

PRESTE ATENÇÃO em TODO o artigo para depois não dizer que o NerdBlog cometeu crime ou que “não souberam passar o macete”.
Irei mostrar a parte “burocrática da coisa” e a parte expert da “coisa”.

O texto abaixo foi tirado do link (logo após a nossa avaliação): http://www.ramosdainformatica.com.br/art_recentes01.php?CDA=45

Questão/Problema:

Aqui vou esclarecer porque não é possível decompilar aplicações desenvolvidas em Delphi. E apresentar as ferramentas existentes que prometem fazer isso.

Resposta:

Sempre encontramos pessoas interessadas em decompilar programas desenvolvidos em Delphi, sempre com desculpas de perda dos Fontes, ou perda de Disco Rígido.

O que é Decompilação? É muito simples, é o inverso de compilação. É a transformação de um Executável, em seu código fonte, no caso do Delphi, formulários e os fontes.

Suponha-se que você desenvolveu um Sistema que levou meses e até anos para estar pronto, derrepente você perde todos os fontes, ficando com apenas o executável. Qual a solução? Utilizar a engenharia reversa (decompilação) para recuperar todo seu trabalho (os fontes).

Uhhmm, então quer dizer que posso decompilar o projeto de outras pessoas? Bem, sim e não…

Então é possível Decompilar um programa?

Não, claro que não. Total decompilação não é possível – não exatamente como ele foi desenvolvido, ou seja, com o fonte original….

Quando um projeto em Delphi é compilado e linkado, para produzir um executável, a maioria dos nomes usados no programa é convertido em endereços. Na decompilação, se você observar em seus fontes originais, com os fontes de um executável decompilado, você irá perceber a troca de nomes em constantes, variáveis e procedures.

Porque e quando usar:

A engenharia reversa, pode ser usada por várias razões, eis algumas:

Ø Recuperação de Código Perdido;
Ø Migração de Aplicações para uma plataforma de Hardware nova;
Ø Determinação de existência de Vírus e/ou código fonte malicioso;
Ø Correção de erros, quando o dono da aplicação não está disponível para fazer a correção;
Ø Recuperação dos fontes de outra pessoa;

Mas é Legal?

Engenharia Reversa NÃO é cracking, embora as vezes é difícil traçar um panorama entre os dois. Programas de computador são protegidos por direitos autorais e leis de marca registrada. Em alguns países são permitidos, como por exemplo a Rússia.

Na Rússia, se você compra um programa, ele é seu, pode-se fazer o que quiser com ele, inclusive aplicar a engenharia reversa. Recentemente um russo, decompilou alguns programas da Macromedia, alterou-os e distribuiu gratuitamente pela Internet, e a Macromedia não pode fazer nada contra isso, pois conforme as Leis da Rússia, o programa, uma vez alterado (não importa o que) passa ser de propriedade do indivíduo que o alterou.

Mas atenção, isso é apenas na Rússia. No Brasil, deve-se tomar bastante cuidado, por isso recomendo consultar um advogado, antes de realizar algum tipo de engenharia reversa, seja ela qual for.

Algumas leis que permitem a engenharia reversa:

Ø Suspeita da existência de Vírus e/ou código fonte malicioso;
Ø Correção de erros, quando o dono da aplicação não está disponível para fazer a correção;

Mas existem outras leis, mas deve ser consultado com especialistas antes de sua execução.

Para escrever este texto, tive que consultar um advogado, o qual me falou que não haveria problemas, uma vez que é somente para estudos, e que os exemplos de decompilação de programas, sejam feitos com um programa por mim desenvolvido.

Por enquanto, os produtos da Inprise, não possui nenhum produto capaz de decompilar um arquivo executável (.exe) ou a “Delphi Compiled Unit” (DCU), volta para o código original (.PAS).

Delphi compiled unit: DCU

Quando um projeto Delphi é compilado, os arquivos .pas são convertidos para .dcu. Armazenando assim, em arquivos binários os fontes do projeto. Ou seja, unit1.dcu é igual a unit1.pas.

Isso significa que se você tem somente os DCU do projeto pode decompilar e obter os fontes do projeto. Errado. O arquivo com formato DCU não é documentado, e muda de versão para versão.

Após a Compilação: Engenharia Reversa no Delphi

Para quem quer tentar decompilar um projeto desenvolvido em Delphi. Eis algumas coisas que deveria saber:

Os programas desenvolvidos em Delphi, tem seus arquivos divididos em dois tipos de formatos: Código ASCII (.pas, .dpr) e arquivos de recursos (resource files) (.res, .rc, .dfm, .dcr).

Os arquivos DFM, contém os detalhes (Propriedades) dos objetos contidos em um formulário. Quando criamos um executável, o Delphi armazena as informações dos Formulários em um arquivo DFM para a geração do EXE.

Todas informações de um componente dos formulários, suas propriedades, localização e até mesmo nome, são armazenados em um arquivo DFM pelo Delphi. (Não os códigos de procedimento de eventos, esses são armazenados em arquivos .pas e .dcu.). Para se obter o arquivo DFM de um executável, é necessário conhecer a fundo como funciona um executável Win32.

Todos os programas compilados pelo Delphi, possuem as seguintes seções: CODE, DATA, BSS, .idata, tls, .rdata, .rsrc. O mais importante ponto de vista de decompilação são os códigos e seções de .rsrc.

Entre muitos recursos que são armazenados em um arquivo executável, o RT_RCDATA segura as informações que estavam armazenadas em arquivos DFM, antes da compilação.

Alguns Decompiladores Existentes no Mercado

A arte da Engenharia Reversa, é uma área para técnicos, acostumados com a linguagem Assembler e Debugers, No entanto há diversas ferramentas que ajudam qualquer pessoa a realizar a engenharia reversa em Delphi.

Se você está interessado em aplicar a engenharia reversa em seus programas, aconselho a dar uma olhada nestes programas de Decompilação para Delphi:

DeDe (www.balbaro.com/dede/index.html )

DeDe é um grande programa de decompilação de programas desenvolvidos em Delphi. Ele analisa todo o executável, e fornece o seguinte:

Ø Todos os DFM, podendo ser alterados pelo Delphi;
Ø Todos os Fontes, .pas, .res, .dfm, etc… Todos comentados com os fontes em Assembler.
Ø Muito bom, se não fosse os arquivos .pas serem em Assembler, às vezes não podendo ser recompilado.

Reverendepro (www.puthoon.com/Revendepro/index.html )

Reverendepro acha quase todas estruturas (classes, types, procedures, etc) no programa e gera a representação de pascal e procedures escritas em Assembler. Devido a algumas limitações do Assembler, às vezes pode não ser recompilado. Os códigos fontes deste decompilador é livre. Devido a algumas limitações deste decompilador eu não pude explorar ele mais a fundo.

MRIP ( www.delphi32.com/vcl/4549/ )

Este programa procura e extraí arquivos de outros arquivos. MRIP pode pegar mais de 100 formatos de arquivos. O mais importante para nós é que o MRIP pode decompilar qualquer executável Delphi. Esta ferramenta pode extrair todos os recursos de uma aplicação Delphi: Cursores, Ícones que o DFM arquiva, arquivos .pas e outros. Nos arquivos PAS não contém os procedimentos de eventos. MRPI é uma aplicação DOS.

DfmExplorer (www.instinct.org/fravia/aitodelp.htm )

Isso é o que o DfmExplorer faz (Inclui os Fontes): Ele procura e separa todos os arquivos DFM do executável.

Exe2Dpr (www.instinct.org/fravia/aitodelp.htm )

Este programa é talvez o mais utilizado na decompilação de aplicações Delphi, mas ele só pega o DPR de um Executável.

CONCLUSÃO

A engenharia reversa (decompilação), é possível no Delphi? Sim, mas não 100%.

Então vamos acabar agora com este mito de decompilação de executáveis Delphi. Mas aconselho a você explorar todas as ferramentas aqui citadas, como uma forma de aprendizagem e curiosidade, e fazendo com que você mesmo, tire as suas próprias conclusões.

É isso aí, espero ter esclarecido este tabu, que sempre acompanha milhares de programadores.
++++++++++++++++++++++++++++++++++++++++++++++++

Agora entra a parte maliciosa da coisa (aonde o NerdBlog entra).

Já que entendemos como funciona a legislação brasileira sobre decompilação nós agora podemos tentar “salvar o mundo”… rsrsrs.

Primeiro passo
Ache o programa Certo!
Isto mesmo, testei a sistemática da situação e só obtive bons resultados com a seguinte ferramenta:

- reshacker em: http://angusj.com/resourcehacker/

O que ela me “rendeu” e como fiz?
Primeiro tive que decompilar a aplicação delphi que é o sistema da empresa, no caso, aquele EXE do tamanho do mundo.
Abrindo o reshacker a sua única dificuldade será  apontar a origem e o destino da decompilação.
Feito isto, quando o processo começar será gerado todo o fonte (inclusive arquivos de imagem bmp, por exemplo, tais arquivos retornam também).
Terminada a decompilação você terá em mãos o fonte.
Abra o projeto com o delphi e tente compilar (para localizar algum erro), caso consiga sucesso, parabéns, agora você tem o fonte do sistema, caso contrário o que você terá de problemas são os componentes ou erro de caracters (sendo muito fácil a correção, para este caso).

Acabou tudo, isto quer dizer que não posso mais concluir o meu projeto de decompilação delphi com sucesso?
NADA DISSO, faça como o carinha do site (aquele tosco de camisa do hacker),  o que você vai fazer é -> Buscar os componentes que “podem” ser os que você precisa.
O podem entre aspas duplas significa que nem sempre você vai encontrar todos os componentes necessários, até por que algumas pessoas vendem componentes feitos sob demanda de um cliente importante, em outras palavras, algo customizado, então trate de preparar seu cliente torrent e seu emule + limewire para pegar fogo com suas pesquisar e mandar ver. Antes iremos fazer uma busca básica nos sites:

http://inf.unisul.br/~osmarjr/delphi/componentes.htm
http://www.webmundi.com/delphi/dfuncaoc.asp?SubTipo=Visuais

Pronto, dependendo de sua aplicação a agonia acabará aí, mas a minha foi além… rsrsrs… mas houve triunfo.

De posse disto, instale os componentes no delphi e veja a necessidade que as units estão declarando e etc, em outras palavras, veja se lhe faltará algo mais e BINGO!

Lutando por um software “menos problemático”!

Tuesday, February 3rd, 2009

Uma coisa interessante que observei hoje foi o quão importante é o software REALMENTE livre.

Na instituição que presto serviço de consultoria o dono da empresa comprou um software mais ou menos naquele estilo “embutido”, aonde os compradores pagam por algo não customizado, ou seja, enlatado.

Não por ter algo contra Delphi, até por que conheço ótimos desenvolvedores nesta linguagem, mas pelo fonte fechado (após compilação).

Uma coisa que a maior parte dos “desenvolvedores” não faz é documentar o fonte e pior, não testa sua aplicação. Foi mais ou menos nisto que “clamei” para ter o fonte do sistema criado em Delphi e “enlatado”.

Minha ira concretizou-se quanto tentei gerar um relatório de produtos com uma marca X, o qual, no momento em que instruí o sistema para tal feito recebi uma mensagem (bug) com erros da aplicação, resultante de que?

Adivinhe -> Software mal debuggado.

Segue a fotinha “maldita”:

tabajaraengine

Sem mais reclamações, somente lamentando por não poder ver o fonte e fazer modificações que possam ajudar na usabilidade deste software.

Lamentável.

Hello world!

Monday, February 2nd, 2009

Esse termo Hello World é interessante, por que se observarmos o cidadão torna-se bem vindo ao mundo… rsrsrs, sem graça não é? Sim, mas faz sentido aqui em 2 situações:

Hello Nerd World and Hello Program World.

Seja bem vindo ao nosso site de How Tos e “contos de TI”.
Divirta-se ou aprenda algo interessante.

Prometemos How tos sobre Redes, PHP, Mysql, Postgres, Windows, BSD e Gnu/Linux, sem contar notícias sobre Apple, Sun, IBM e outros “monstrinhos” do mercado de TI, como Red Hat e a “pequenina” GOOGLE.

Obrigado por nos prestigiar.