Sh3rl0ck Posted August 21, 2017 Posted August 21, 2017 O que é? A engenharia reversa, também conhecido com reverse engineering ou RE. O conceito nasceu no mundo real, quando precisávamos saber como algo funciona ou como foi construído, quando não tínhamos uma documentação ou conhecimento disso. Um grande exemplo disso tratasse do ambiente competitivo das indústrias, onde uma empresa x lançava um produto novo com mercado com um bom diferencial, principalmente com algo inovador deixando seu concorrentes para trás, mas um ou mais concorrente para não ter tanta perde financeira ou de imagem, pegava este novo produto e começava a tentar descobrir como ele funcionava de várias formas, uma delas poderia ser desmontando e analisando cada parte do produto e de que material era feito, em seguida o mesmo criava um produto similar para competir baseado na engenharia reversa realizada. Na computação a engenharia reversa existe também, tanto de hardware como para software, mas neste caso vamos somente nos referir a engenharia reversa de software, onde temos geralmente o cenário de ter um programa compilado, já em seu formato binário, não temos seu fonte, mas queremos saber como ele foi feito, como funciona e até como altera-lo. É importante destacar que RE não é exclusivo de caso de arquivos em binário, pode ser também de códigos que estão utilizado técnicas de ofuscação, arquivos intermediários de compilação e etc... Por que aprender? A RE é utilizada em várias áreas e situações, seguem alguns exemplos: Crackear um programa; Criar cheats; Proteção de propriedade intelectual do software; Debugar um programa para achar onde está dando erro; ´Criar exploits; Criação de softwares seguros; Bypass em antivírus e firewall; Na computação forense é muito utilizado para analisar malware; Criar proteções contra malwares, inclusive antivirus nada mais é do que uma analise de malware automatizada pro assim dizer; Entender como determinado programa funciona; Utilizado em parte da criação de Rootkits; Além desses fatores podem existir outros, mas dá para ter uma ideia do quão importante é aprender RE. Como aprender? Antes de partir diretamente para os estudos focados em RE, é necessário que tenha as bases bem formadas, caso contrário poderá ficar muito perdido ao ler literaturas que falam do assunto, pois parte do princípio que já conhece assembly e chamadas de sistema. Primeiramente deve-se aprender arquitetura de computadores, onde aprenderá como o computador funciona como, como o hardware e software funcionam juntos e principalmente o ponto mais importante como que funciona a memória RAM e processador, que é o que o assembly interagem bastante. A literatura que indico é: "Organização Estruturada de Computadores" de Andrew S. Tanenbaum. É indicado saber o que é um sistema operacional, pois o assembly interage frequentemente com o mesmo com as chamadas de sistema. Nesse caso deixo 2 literaturas indicadas, basta ler pelo menos uma delas: "Fundamento de Sistemas Operacionais" de Silberschatz, Galbin e Gagne (De fácil leitura) e "Sistemas Operacionais Modernos" de Andrew S. Tanenbaum. O Assembly em si, que é a linguagem que utilizará na engenharia reversa: Para linux "Assembly Language Step-by-Step: Programming with Linux" de Jeff Duntemann e "The Art of Assembly Language, 2nd Edition" de Randall Hyde. Indico aprende mais sobre o Windows como funciona internamente: "Windows Internals, Part 1: System architecture, processes, threads, memory management, and more (7th Edition)" de Pavel Yosifovich , Alex Ionescu , Mark E. Russinovich , David A. Solomon. Finalmente sobre engenharia reversa indico começar pelo "Practical Reverse Engineering: x86, x64, ARM, Windows Kernel, Reversing Tools, and Obfuscation" de Bruce Dang , Alexandre Gazet, Elias Bachaalany, Sébastien Josse. E depois pegar "Reversing: Secrets of Reverse Engineering" de Eldad Eilam Em seguida poderá se aprofundar melhor em outras áreas que utilizam RE.
Fernando Eloi Posted November 9, 2017 Posted November 9, 2017 Como entrar no mercado de trabalho de RE? ´precisa de algum curso/certificação/faculdade etc?
MateusP Posted November 9, 2017 Posted November 9, 2017 3 horas atrás, Fernando Eloi disse: Como entrar no mercado de trabalho de RE? ´precisa de algum curso/certificação/faculdade etc? Não acredito que exista um mercado de trabalho de RE, em minha visão, é apenas uma habilidade ou um conjunto de habilidades utilizadas na prática de alguns profissionais, como pesquisadores, Analistas de Malware, Pentesters ou mesmo programadores "comuns" ao suportar sistemas legados.
Sh3rl0ck Posted November 11, 2017 Author Posted November 11, 2017 Em 09/11/2017 em 11:18, MateusP disse: Não acredito que exista um mercado de trabalho de RE, em minha visão, é apenas uma habilidade ou um conjunto de habilidades utilizadas na prática de alguns profissionais, como pesquisadores, Analistas de Malware, Pentesters ou mesmo programadores "comuns" ao suportar sistemas legados. Sim, o que o MateusP disse é verdade, a serve como apoio/base para outras profissões.
Luciano Estevam Rangel Posted June 4, 2018 Posted June 4, 2018 excelentes dicas. Eu mesmo estava com muita dificuldade de entender a estrutura do computador (Como o programa e carregado na memoria, como o processador faz as chamadas as instruções armazendas na RAM). Acredito que o livro Organização Estruturada de Computadores e uma leitura obrigatoria para quem esta no mundo da programação assembly.
irinel Posted June 4, 2018 Posted June 4, 2018 como o Fernando Elói estava perguntando, então não tem faculdade para RE ?
irinel Posted June 5, 2018 Posted June 5, 2018 Esse Livro do Andrew S. Tanenbaum já peguei para fazer meu TCC, recomendo muito bom.
Recommended Posts
Archived
This topic is now archived and is closed to further replies.