REA: tutorial de engenharia reversa de qualquer coisa com demonstração prática
Autoria: Fahd Mirza · Assistir no YouTube
Vídeo de autoria do canal indicado, não da IANIA; todos os direitos pertencem ao criador. Transcrição, resumo e tradução gerados automaticamente; o conteúdo no idioma original é preservado na versão em idioma original.
Idioma original: inglês
Vídeo original: REA: Reverse Engineer Anything Tutorial with Hands-on Demo · Canal: Fahd Mirza · 08:56 · Assistir no YouTube
Tópicos: Agentes de IA, Cibersegurança e segurança de software, Engenharia de software com IA
O vídeo apresenta REA, um servidor MCP que coleta evidências ao inspecionar programas, aplicativos Electron e sites, para que um agent possa analisá-las. A demonstração mostra a configuração do REA com OpenCode e Ghidra e uma investigação do comando cal, sem ler o código-fonte diretamente. O agent localiza o código relacionado aos dias ausentes no calendário de setembro de 1752 e apresenta evidências do que encontrou e do que não conseguiu rastrear. O apresentador ressalta que a ferramenta não substitui a verificação humana e recomenda analisar apenas software que se tem autorização para examinar.
Pontos-chave
Seção intitulada “Pontos-chave”- REA é um servidor MCP que conecta ferramentas de inspeção a um agent e fornece evidências para análise.
- REA coleta evidências, mas a interpretação depende do modelo usado pelo agent.
- A análise de programas nativos requer Ghidra, além de dependências como Java e Node.
- A demonstração configura o REA com OpenCode e verifica a integração por meio dos comandos do MCP e do doctor.
- O exemplo investiga por que cal omite dias em setembro de 1752, usando o caminho do executável ncal.
- O agent encontra uma data codificada no programa e apresenta evidências, inclusive informações que não conseguiu rastrear.
- Um teste com outro calendário mostra que a omissão depende de uma configuração do programa.
- REA ajuda a localizar rapidamente código relevante, mas os resultados devem ser verificados; use a ferramenta apenas em software que você pode examinar.
Capítulos
Seção intitulada “Capítulos”| Início | Capítulo | Resumo |
|---|---|---|
| 00:01 | O que é REA e o que instalar | O vídeo apresenta o REA, explica sua função como servidor MCP e cita os pré-requisitos para analisar programas nativos. |
| 02:09 | Configuração e integração com OpenCode | O apresentador executa o assistente de configuração, integra o REA com OpenCode e verifica se as dependências estão acessíveis. |
| 04:20 | Preparação da investigação do comando cal | O vídeo contextualiza os dias ausentes em setembro de 1752 e identifica ncal como o programa que será examinado. |
| 06:23 | Como o agent investiga o programa | O apresentador explica o fluxo entre o agent, o REA e o Ghidra enquanto o agent procura o código relacionado à mudança de calendário. |
| 08:25 | Resultados, limites e verificação | A demonstração testa a dependência das configurações de calendário e reforça que as evidências precisam ser verificadas por uma pessoa. |
Citações
Seção intitulada “Citações”REA é um servidor MCP, uma forma padrão de conectar ferramentas a um agent de IA. — 00:01
REA apenas coleta evidências. O modelo do agent é quem as interpreta. — 00:33
Encontre apenas o código que trata dos dias ausentes, explique o papel dele e mostre as evidências. — 05:22
Ele leva você rapidamente ao código certo; depois, você verifica. — 08:56
Conceitos e entidades
Seção intitulada “Conceitos e entidades”- REA (ferramenta): Servidor MCP demonstrado no vídeo, que inspeciona software e fornece evidências para um agent.
- MCP (conceito): Protocolo padrão apresentado como uma forma de conectar ferramentas a um agent de IA.
- Ghidra (ferramenta): Ferramenta usada na demonstração para inspecionar e descompilar um programa nativo.
- OpenCode (ferramenta): Agent usado para configurar o REA e fazer perguntas sobre o programa analisado.
- Claude Sonnet 5.5 (modelo): Modelo configurado no OpenCode durante a demonstração.
- OpenRouter (empresa): Serviço por meio do qual o apresentador usa uma chave de API para acessar o modelo.
- ncal (ferramenta): Programa identificado como o executável por trás do atalho cal no sistema demonstrado.
- Fahd Mirza (pessoa): Apresentador do tutorial e responsável pelo canal indicado na descrição do vídeo.
Tradução completa (pt-BR)
Seção intitulada “Tradução completa (pt-BR)”00:01 Esta é Ria, faça engenharia reversa de qualquer coisa. É um servidor MCP — MCP, o protocolo de contexto de modelo —, uma forma padrão de conectar ferramentas a um agent de IA, como uma porta USB para IA. Ria é a ferramenta que se conecta. Ela inspeciona binários, aplicativos Electron e sites, e entrega as descobertas ao seu agent junto com as evidências. Ela é executada no seu sistema, e você só precisa fazer perguntas em inglês simples. Mas há
00:33 também uma limitação. Ria apenas reúne evidências. O modelo do seu agent é quem interpreta, então as respostas só são tão boas quanto o modelo. Para programas nativos, você também precisa de uma ferramenta separada, chamada Ghidra. Um dos pré-requisitos que você precisa instalar antes de fazer qualquer outra coisa é o Ghidra, além de Node e Java, e talvez seu harness de código. Vou usar o OpenCode como meu agent, com um modelo
01:06 por meio de uma chave de API. Ria também funciona com Claude Code, CodeX, Cursive, Gemini CLI e outros. Então, se você também estiver acompanhando, instale tudo isso no seu sistema. Depois de instalar, deixe-me mostrar rapidamente que este é o OpenCode, já configurado com Claude Sonnet 5.5. Estou usando a chave da OpenRouter, mas, como eu disse, você pode usar qualquer modelo, de qualquer lugar.
01:37 Em seguida, vou mostrar rapidamente as versões que estou usando. Para Java, Node e Ghidra, estou usando estas versões. Mais uma vez, certifique-se de ter estas versões ou superiores; caso contrário, esta ferramenta não vai funcionar. Agora que você já sabe o que é esta ferramenta e o que precisa ser instalado, vou fazer uma demonstração bem rápida. Para isso, vou usar NPX, depois de definir o caminho para Java e o repo do Git.
02:09 Como você pode ver, este comando de configuração vai baixar e, em seguida, executar o assistente de configuração. Vou executá-lo. Por enquanto, também vou sair do OpenCode. Vou abri-lo novamente. Pronto. Depois que executei o NPX, ele perguntou qual harness usar. Você pode percorrer as opções e, então, vou selecionar meu OpenCode, que ele também detectou, aliás. Agora ele está perguntando se quero instalar o Ghidra para uso na CLI
02:41 Vou responder que sim, pode fazer. Em seguida, ele vai me guiar pelo processo. Vou dizer para aplicar. E é isso. O Over Area está instalado e integrado ao OpenCode. Você também pode verificar isso no OpenCode. Basta executar OpenCode MCP list e ele deve mostrar que o Area já está integrado. Como você pode ver, temos o Over Area em execução aqui. Em seguida, você pode executar o diagnóstico no OpenCode com este agent do Area
03:15 só para verificar se o Area consegue acessar o repo do Git e o Java. As verificações foram aprovadas. Ele também informa quais ferramentas este MCP disponibiliza. Há bastante informação ali, mas não vou me preocupar com isso. Vamos continuar. Para esta demonstração, estou usando o comando cal, que é um comando de calendário do Linux, e vou usar IA para encontrar o código exato que pula 11 dias em setembro de 1752.
03:47 Não vou ler nenhum código-fonte. Vou apenas fazer perguntas. Esta é a saída do cal. E, de novo, por exemplo, se você quiser ver setembro, o mês 9, de 1751, vou apenas exibi-lo. Agora, setembro de 1752, e você verá que ele salta do dia 2 para o dia 14. Aí está. Está vendo? Faltam 11 dias.
04:20 E é disso que estou falando. Há uma história muito interessante por trás disso: a Grã-Bretanha mudou de calendário em setembro de 1752. Foram pulados 11 dias para corrigir a defasagem do calendário antigo. E o cal reproduz isso, aliás. Então, o programa deve ter um código que conhece essa data exata, e é isso que estou tentando descobrir com esta engenharia reversa usando a ferramenta Area. Agora, para analisar uma ferramenta, e este é um ponto muito importante, você precisa
04:51 ter o caminho ou o nome exato desse programa. Então, se eu quiser verificar o que está por trás do cal, basta ler o link. Basicamente, ncal é o programa de verdade, e cal é apenas um atalho para ele. Então, eu precisaria deste caminho para a ferramenta. Agora, vou abrir o OpenCode. Com este agent de programação, vou pedir ao agent de IA que encontre o
05:22 código por trás desse salto. Para isso, vou pressionar Ctrl+Shift+V para colar uma linha. Ele não está mostrando para nós. Vou colar rapidamente aqui o prompt que acabei de colar, para você saber; às vezes ele não aparece. Vou ativar a quebra de linha. Desculpe, só quero mostrar o conteúdo exato aqui. Pronto. Estou pedindo que use R.E. com Ghidra para encontrar apenas o código que trata dos dias ausentes. Nessa data, explique a função e mostre as evidências. Não analise mais nada
05:53 Agora vou executar isso no OpenCode. Vamos esperar a resposta. Você pode ver que ele já está usando Riya sem que eu tenha pedido explicitamente. E agora Riya está analisando esse código em bastante profundidade. Enquanto isso acontece, vamos falar um pouco mais sobre este fluxo de investigação bem simples. Mas, antes disso, aliás, recentemente comecei
06:23 esta newsletter semanal gratuita sobre IA, na qual você pode se inscrever em fahadmirza.substack.com. Se quiser ajudar o canal, acesse a página inicial do canal e torne-se membro; isso ajuda muito. Além disso, se estiver procurando alugar uma GPU, VM ou CPU por um preço muito bom, você encontra o link para a Vast Compute na descrição do vídeo. Basicamente, este diagrama mostra exatamente o que estamos fazendo neste momento. Fiz uma pergunta ao meu agent
06:54 sobre um programa no meu computador. O agent chama Riya, que usa Ghidra para inspecionar o programa e devolve o código e as evidências, inclusive aquilo que não conseguiu descobrir. O agent lê essas evidências, explica a resposta e, se precisar de mais informações, faz uma pergunta complementar. É esse ciclo que você está vendo agora, enquanto ele analisa o programa. Essa é toda a história. E pronto. Fiz apenas uma pergunta, e o agent começou a trabalhar.
07:24 Vou voltar ao começo, porque é aqui que quero mostrar o que ele fez exatamente, em vez de só mostrar como se fosse um vídeo do TikTok. O programa está sem símbolos, como você pode ver, certo? Então, todos os nomes das funções desapareceram. Ele procurou por 1752 e não encontrou nada. Então, listou as funções, descompilou as que pareciam mais prováveis e verificou o que fazia referência a quê. Dentro da função principal, encontrou uma data codificada diretamente: ano 1752,
07:54 mês 9, dia 2. Aí está. Que legal, não é? Esse é o último passo antes do salto. Ele também encontrou o código da mudança anterior, de 1582, e me disse quais partes não tinha rastreado. A informação dos 11 dias veio do próprio conhecimento dele, não do código. Tudo isso levou cerca de um minuto, e o custo é insignificante, como você pode ver aqui. Menos de um dólar, e eu não forneci nenhum código-fonte. Todas as afirmações
08:25 vêm acompanhadas de evidências, como você pode ver aqui. Agora, acabei de executar estes dois comandos só para mostrar a você. O agent disse que o salto depende de uma tabela de países, então testei com o calendário da Itália, ou com o antigo calendário juliano. Os 30 dias apareceram. Portanto, o salto é uma configuração no código, não é mágica. E é isso que Riya pode fazer por você. Mais uma vez, não é uma solução milagrosa, não é mágica. Há limitações, como eu disse. Isso não substitui seu julgamento. Essa
08:56 é a maior limitação. Ele ajuda você a encontrar o código certo rapidamente, e depois você verifica. Então, analise apenas softwares que sejam seus ou que você tenha permissão para examinar. É isso. Conte para mim o que acha de Riya e se já a usou em algum lugar; estou muito curioso para saber. Mais uma vez, ajude o canal tornando-se membro. Obrigado por todo o apoio.
Transcrição original
[00:01] This is Ria, reverse engineer anything. It’s an MCP server, MCP, the model context protocol, a standard way to plug tools into an AI agent, like a USB port for AI. Ria is the tool that plugs in. It inspects binaries, electron apps, and websites, and hands your agent the findings along with the evidence. It runs on your system, and you just ask questions in plain English. But, there
[00:33] is one limitation, too. Ria only gathers evidence. Your agent’s model does the interpreting, so the answers are only as good as the model. For native programs, you also need a separate tool, which is called as a Ghidra. Now, one of the prerequisites which you would need to install before you do anything else is this Ghidra plus Node and Java, and maybe your code harness. I’m going to use OpenCode as my agent with a model
[01:06] through an API key. Ria also works with Claude Code, CodeX, Cursive, Gemini CLI, and others. So, if you’re also following along, make sure you install all of these things on your system. Once you have them installed, then let me quickly show you that this is OpenCode, which is already configured with Claude Sonnet 5.5, and I’m using the key from OpenRouter, but as I said, you can use any model from anywhere.
[01:37] Next up, let me quickly show you the versions which I’m using. So, for Java, for Node, and for Ghidra, I’m using these versions. Again, make sure you have either these versions or higher, otherwise this tool is not going to work. So, now you know what this tool is, what needs to be installed, let me do a very quick demo of this tool. And for that, I’m going to use NPX after setting the path to Java and Git repo.
[02:09] So you see, this setup command is going to download and then run the setup wizard. Let me run this. Also, for the moment, I’m just going to exit from this Open Code. I will rerun it. So there you go. So once I ran that NPX, it is asking me which harness to use. So you can just scroll through and then from there, I’m going to select my Open Code, which it also detected, by the way. And now it is asking me install the guided area scale for CLI
[02:41] use. I’ll just say yes, go for it. And then it is going to walk me through. I’ll just say apply. And that’s it. So Over Area is all installed and integrated with Open Code. You can also verify it from Open Code. So just do Open Code MCP list and it should show us that Area is already integrated. So you can see that we have Over Area running here. Next up, you can run the doctor in Open Code with this Area agent
[03:15] just to check that Area can reach Git repo and Java. And the checks are passed. It also tells you which tools this MCP is exposing. There is a lot of information there. But I’m not going to worried about that. Let’s proceed. So for the purpose of demo, I am using this cal command, which is a Linux calendar command, and use AI to find the accept code inside that skips 11 days in September 1752.
[03:47] I’m not going to read any source code. I will just ask questions. So this is the um output of cal. And again, for example, if you just want to go with September, um you know, month which is 9th in 1751, I’ll just print it. And then, uh now September 1752, and you will see that it jumps from 2nd to the 14th. There you go. You see? So, 11 days are missing.
[04:20] And this is what I’m talking about. And if you There’s a very interesting story behind it where Britain switched calendars in uh September 1752. 11 days were skipped to fix a drift in the old calendar. And cal copies that, by the way. So, the program must have code that knows that exact date, and that is what I’m trying to find out with this reverse engineering by using this area tool. Now, in order to analyze a tool, and this is a very important point, you need
[04:51] to have the actual path or name of that program. So, if I do, you know, want to check what is behind cal, I just read the link. And basically, ncal is the actual program, and cal is just a shortcut to it. So, I would need this path to my tool. So, now let me open that open code. And then, with this coding agent, I’m going to ask this AI agent to go and find the
[05:22] code behind that jump. For that, I’m just going to do control shift V to paste one line. It is not showing us. I’ll quickly paste that prompt here what I have pasted just here, so that you know, sometime it doesn’t show. Let me do the word wrap. Sorry, I just want to show you the actual stuff here. There you go. So, I’m just asking it that use r.e. with Ghidra, find only the code that handles the missing days. On this date, explain the role and show the evidence. Don’t analyze anything
[05:53] else. Let me now run this in open code. Let’s wait for it to come back. And you can see that it is already using that Riya without me telling it explicitly. And now Riya is going very deep into that code. While that happens, let’s talk a bit more around this um you know, very simple investigation flow. And before that, by the way, I have recently
[06:23] started this free weekly AI newsletter, which you can subscribe at fahadmirza.substack.com. If you want to help out the channel, please go to the home page of channel and become a member as that helps a lot. Also, if you’re looking to rent a GPU or VM or CPU on very good price, you can find the link to vast compute in video’s description. So, primarily, this diagram just tells us exactly what we are doing at the moment. I asked my agent a question
[06:54] about a program on my computer. The agent calls Riya, which uses Ghidra to inspect the program and hands back code and evidence, including what it couldn’t figure out. The agent reads that evidence, explains the answer, and if it needs more, asks a follow-up question. That loop is what you are watching now as it works through it. That is the whole story behind this. And there you go. I asked it only one question and the agent went to work.
[07:24] Let me actually go at the top because this is where I want to show you what exactly it did instead of just showing you like a TikTok video. The program is stripped as you can see, right? So, every function name is gone. It searched for 1752 and found nothing. So, it listed the functions, decompiled the likely ones, and checked what references what. Inside the main function, it found a hard-coded date, year 1752,
[07:54] month 9, day 2. There you go. How cool is that? That’s the last step before the jump. It also found the older 1582 switch code, and it told me which parts it hadn’t traced. That 11 days came from its own knowledge, not from the code. All of this took about a minute or so, and the cost is very negligible, as you can see here. Just under a dollar, with and I didn’t give it any source code. Every claims
[08:25] comes with an evidence, as you can see here. Now, I have just ran these two commands just to show you. The agent said the skip depends on a country table, so I tested it with Italy’s calendar or the old Julian calendar. All 30 days came back. So, the skip is a setting in the code, not magic. And that is what Riya can do for you. Again, it’s a not a silver bullet, it is not magic. There are limitations, as I told you. This doesn’t replace your judgment. That
[08:56] is the biggest limitation. It gets you to the right code fast, and then you verify. So, only analyze software you own or allowed to examine, by the way. That’s it. Let me know what do you think about Riya, and if you have used it anywhere, very keen to know that. Again, please help out the channel by becoming a member. Thank you for all the support.