[SP-pm] Compilados ou Interpretados, mas sempre programas... [Was: Boas Vindas ao Otávio Fernandes]

Otávio Fernandes otaviof em gmail.com
Quarta Abril 18 04:26:28 PDT 2007


On 4/18/07, Luis Motta Campos <luismottacampos em yahoo.co.uk> wrote:
> On Apr 17, 2007, at 6:28 PM, Otávio Fernandes wrote:
> > On 4/17/07, Luis Motta Campos <luismottacampos em yahoo.co.uk> wrote:
> >> On Apr 17, 2007, at 3:00 PM, Otávio Fernandes wrote:
> >>> será que mesmo usando o PAR::Filter::Crypto
> >>> (http://search.cpan.org/~shay/Filter-Crypto-1.18/lib/PAR/Filter/
> >>> Crypto.pm)
> >>> o deparse ainda teria sucesso ?
> >>
> >>    Claro. Como você espera que o Perl execute o seu programa? Alguém
> >> tem de ter a chave para abrir a criptografia, ou o interpretador não
> >> vai conseguir ler o código. Quando você abrir, entra o B::Deparse, e
> >> adeus, código.
> >
> > hehehe, esperava que ele guardasse outras informações do programa,
> > como o byte code, por exemplo, e fizesse uso deste como instrução e
> > não como código, propriamente dito ...
>
>    Vamos falar sobre morfologia, a ciência que estuda a forma das
> coisas, e também das linguagens de programação.
>    Qual é a diferença entre um programa Perl, um programa C
> compilado, um programa assembly e linguagem de máquina,
> morfológicamente falando? Existe alguma diferença na *forma* dos
> programas?
>
>    A resposta mais simples é "não". Morfologicamente, todos os
> programas são a mesma coisa: um conjunto de sinais elétricos que
> estimula um pedaço de silício a produzir outro conjunto de sinais
> elétricos de uma forma muito rápida e bem previsível. Assim, exceto
> pelo "mito" criado sobre a engenharia eletrônica, programas de
> computador não estão mais ou menos protegidos quando compilados.
>
>    Isso implica diretamente que todos os programas podem ser
> "compilados" para outras linguagens: um programa C é "compilado" para
> linguagem de máquina para ser executado por um processador
> específico, mas o que o compilador gera, na verdade, nada mais é do
> que um programa, como o que foi apresentado para ele inicialmente. Um
> programa Perl, ou assembly, segue o mesmo caminho: são compilados
> para linguagem de um processador específico, que "entende" e
> "executa" as "instruções" que lhe são passadas. Que, na verdade, em
> nada diferem de qualquer outra linguagem de programação.
>
>    Isso quer dizer que NADA IMPEDE QUE UM PROGRAMA EM LINGUAGEM DE
> MÁQUINA (também conhecido como "executável" em algumas culturas) SEJA
> COMPILADO DE VOLTA PARA UMA OUTRA LINGUAGEM DE PROGRAMAÇÃO QUALQUER.
>
>    Claro, tem complicantes e agravantes: um programa C normalmente
> sofre otimizações horríveis, e faltam muitas informações, depois que
> a gente compila ele para linguagem de máquina. É necessário um
> profissional com profundos conhecimentos da linguagem de máquina e do
> sistema operacional utilizado para "compilar" o programa em linguagem
> de máquina para outra linguagem qualquer. Mas isso normalmente é
> possível e relativamente fácil de fazer, comparativamente com o que
> era alguns anos atrás.
>
>    Espero que isso ajude você a encontrar a luz... :)
>    Putamplexos!
> --
> Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
> Perl fanatic evangelist, and amateur {cook, photographer}
>
>
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm

Sim, me ajudou a refletir sobre o assunto e pensar ... quais os
conhecimentos agregados e necessários que uma pessoa precisaria para
voltar ao fonte um script empacotado com a PAR ? Será que não chega a
um nível de segurança aceitável ? Já que todos os programas são
passíveis de engenharia reversa.

um abraço,

-- 
 | --
 | Otávio Fernandes <otaviof at gmail dot com>
 | Debian 4.0 (Testing) -- GNU/Linux User: 283.396
 | http://otaviof.googlepages.com
 | --


Mais detalhes sobre a lista de discussão SaoPaulo-pm