Engenharia reversa para principiantes

Caloni, 2007-10-10 computer blog

Dei uma reformada em minha última palestra sobre engenharia reversa. O tema escolhido foi tentar abranger os níveis de conhecimento que uma pessoa disposta a se dedicar à engenharia reversa de programas deveria ter, desde programação, passando pelo sistema operacional e terminando no uso de ferramentas. Achei interessante abordar esse tipo de conteúdo pelo fato de existirem pessoas que gostariam de começar ou já começaram e não sabem para onde ir.

Outra coisa que fiquei receoso de colocar (mas coloquei) foi a lista de tarefas para usar o conhecimento aprendido. Pode ser frustrante tentar procurar emprego nessa área aqui no Brasil e não adianta nada aprender e não usar. A engenharia reversa, assim como a área de segurança da informação, para ser efetiva, deve levar em conta como as coisas são feitas, o que quer dizer que fazer vírus e quebrar proteção de software faz parte do aprendizado.

Se houverem interessados o suficiente poderei ministrar uma palestra online, para ilustrar os slides e tirar dúvidas. Lembrando que isso não inclui as perguntas "como eu quebro o programa X" ou "faz um vírus pra mim".

// Comments

2008-12-26 Aoki:

Olá meu nobre,

Sou estudante na parte de Informática, mas na área de manutenção de desktops e notebooks, mas quero entrar na área de desenvolvimento, sei um pouco que lógica de programação e já estagiei programando em VB e mas novo vivia mexendo em scripting, gostaria de saber qual o material que preciso pegar para começar a estudar e entrar a fundo sobre ER?

Grato,


2009-01-17 Mortreff Gothic Hacker:

Oi! Eu tenho 16 anos de idade mas, já faço muita coisa. Eu aprendi a crackear programas faz pouco tempo e, já crackiei uns 5 programas e concegui descobrir o registro de alguns programas no regedit para tirar o trial (fiz isso no Nitro PDF, por exemplo).

O que eu quero saber é, você conhece algum livro, apostila, tutorial, o que for, que fale sobre a estruturas do PE (Portable Executable) e sobre como as proteções de software são feitas?

Pode ser em Português ou Inglês mas, tem que ser completo.

Eu encontrei na internet um livro com 1300 paginas que ensina como criar um compilador e que tambem ensina como criar um disassembler mas, eu quero algo que fale sobre as proteções.

Se puder mi ajudar eu agradeço!

PS.: Pq o link da página é "engenharia-reversa-para-idiotas"

(http://www.caloni.com.br/blog/archives/engenharia-reversa-para-idiotas)


2008-12-29 Caloni:

Olá, Aoki.

Pelo que vejo todo o material que você precisa já está com você: sua curiosidade. Engenharia Reversa de programas requer conhecimento em diversas áreas da informática: arquitetura de computadores, assembly, programação, sistemas operacionais e por aí vai a valsa. Antes de mais nada, defina que tipo de ER está interessado em aprender primeiro. Se quer desmontar um programa Windows, a ordem de valores deveria ser (na minha opinião):

  • Programação BASIC
  • Programação C
  • Arquitetura 8086
  • Assembly
  • Programação Windows
  • Programação Assembly no Windows

Antes de mais nada, dê uma olhada na transparência desse artigo e veja se já consegue entender cada detalhe das imagens exibidas. Onde você primeiro não entender completamente é o seu ponto de início nos estudos. Baseie-se em você e aonde você quer chegar, e não em uma receita de bolo.

Existem materiais diversos nesse campo em específico, como tutoriais para fazer cracks e quebrar seriais. Apesar de constituir atos ilegais, esses tutoriais são muito úteis para "treinar" o conhecimento, descobrindo os famosos macetes que, depois de estudar muito, só com prática conseguimos dominá-los.

Boa sorte!


2009-01-20 Caloni:

Olá!

Você pode começar pelo excelente artigo de Matt Pietrek, que destrincha as estruturas internas do PE. Não se esqueça de fuçar além de ler!

Você pode depois se aprofundar pelo padrão da Microsoft, que pode ser comparado a um RFC, mas que já ajuda um bocado, além de poder ser usado como referência:

Agora, sobre proteções de software, eu não li, mas meu amigo leu e falou muuuuuito bem sobre o "Reversing", de Eldad Eliam. Aliás, parece que ele é referência sobre explicações de proteção e quebra de software.

Se você quiser depois ainda se tornar um mestre de depuração (essencial para ER) tente o "Advanced Windows Debugging" e o "Memory Dump Analysis".

Resposta ao PS: porque inicialmente minha intenção foi traduzir fielmente o padrão daqueles livros amarelos "for dummies". A palavra que mais se encaixava no caso foi idiota, mas posteriormente achei muito forte e resolvi pelo menos mudar o título do artigo. Aliás, muito bem observado por você ;)

[]s e boa sorte!

[comment] [A Linguagem de Programação C: O Livro]