Faça engenharia reversa de qualquer app com REA (41 mil estrelas)
Autoria: Prompt Engineer · 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: Reverse Engineer Any App using REA (41k Stars) · Canal: Prompt Engineer · 05:59 · Assistir no YouTube
Tópicos: Agentes de IA, Cibersegurança e segurança de software, Ferramentas de desenvolvimento com IA, Open source e ecossistemas de software
O vídeo apresenta o REA, uma ferramenta open source que analisa aplicativos e fornece descobertas acompanhadas de evidências e limitações. O apresentador instala o CLI no Windows e testa a análise de um app Electron próprio, que o REA examina sem executar o código e no qual identifica corretamente a comunicação IPC. Ele também explica um problema de compatibilidade com a versão do Node.js e mostra que a análise de aplicativos grandes pode gerar arquivos de saída muito volumosos. Por fim, destaca a necessidade de autorização para fazer engenharia reversa e observa que a demonstração cobriu apenas a análise de JavaScript, não a de binários nativos.
Pontos-chave
Seção intitulada “Pontos-chave”- REA é uma ferramenta open source disponível como servidor MCP e como CLI, que analisa aplicativos e associa evidências e limitações às descobertas.
- A ferramenta oferece suporte a diversos alvos, incluindo apps JavaScript e Electron, sites, APKs Android, binários nativos e capturas de rede HAR.
- A instalação recomendada configura integrações com agents; a instalação somente do CLI não registra essas integrações.
- Na máquina do apresentador, o REA exigia Node 22.19 ou mais recente; usar Node 24 via NPX contornou a incompatibilidade sem alterar a instalação do sistema.
- A análise do app Electron de teste identificou o canal save-note, o handler no processo principal e o envio pelo renderer, sem executar o aplicativo.
- O resultado informa limitações importantes: algumas relações do Electron são inferidas da sintaxe, e a cobertura do grafo é incompleta.
- A análise de um app Electron real de aproximadamente 150 MB produziu um arquivo de saída de 577 MB em oito minutos, levando o apresentador a interrompê-la.
- O REA deve ser usado apenas em contextos autorizados, como pesquisa, análise e engenharia reversa de aplicativos próprios ou para os quais se tenha permissão.
Capítulos
Seção intitulada “Capítulos”| Início | Capítulo | Resumo |
|---|---|---|
| 00:01 | O que é o REA e quais alvos ele analisa | O apresentador introduz o REA, seus formatos de uso, os tipos de aplicativos compatíveis e as opções de instalação. |
| 01:42 | Compatibilidade do Node.js e app de teste | Ele explica o requisito de versão do Node.js e descreve o app Electron usado para verificar a análise de JavaScript. |
| 03:14 | Resultados, evidências e limitações | O REA encontra o canal IPC e seus componentes sem executar o app, além de declarar explicitamente o que não conseguiu provar. |
| 04:17 | Uso com agents e problemas encontrados | O apresentador mostra como pedir uma análise a um agent e relata engines ausentes e o grande volume de saída ao analisar um app real. |
| 05:25 | Uso autorizado e conclusão | O vídeo reforça que a engenharia reversa exige autorização e resume o teste antes de indicar o repositório e o site do projeto. |
Citações
Seção intitulada “Citações”É uma ferramenta open source que permite ao seu agent desmontar um app e explicar como ele funciona, com as evidências anexadas. — 00:01
Ele fez tudo isso sem executar meu app. — 03:14
O que não está disponível não deve ser interpretado como ausência. — 03:45
Você é responsável por ter autorização. — 05:25
Conceitos e entidades
Seção intitulada “Conceitos e entidades”- REA (ferramenta): Ferramenta de engenharia reversa que analisa aplicativos e apresenta descobertas acompanhadas de evidências e limitações.
- morluto/rea (repo): Repositório do REA no GitHub, indicado pelo apresentador como fonte do projeto.
- MCP (conceito): Protocolo por meio do qual o REA pode funcionar como servidor para uso por agents.
- CLI (conceito): Interface de linha de comando usada no vídeo para instalar e executar o REA.
- Electron (ferramenta): Plataforma para aplicativos desktop baseada em tecnologias web, usada no app de teste do vídeo.
- Node.js (ferramenta): Ambiente de execução cuja versão mínima exigida pelo REA, segundo o teste, era 22.19.
- Ghidra (ferramenta): Ferramenta de análise de binários nativos que o REA pode usar como engine de análise.
- Hopper (ferramenta): Ferramenta de análise de binários nativos citada como opção de engine para o REA.
- IDA (ferramenta): Ferramenta de análise de binários nativos citada como opção de engine para o REA.
- HAR (conceito): Formato de captura de tráfego de rede que o REA aceita como alvo de análise.
- IPC (conceito): Mecanismo de comunicação entre processos do app Electron de teste, usado para enviar e tratar o canal save-note.
Tradução completa (pt-BR)
Seção intitulada “Tradução completa (pt-BR)”00:01 Certo, neste vídeo vamos conhecer o REA, sigla de “fazer engenharia reversa de qualquer coisa”. É uma ferramenta open source que permite que seu agent de IA desmonte um aplicativo e explique como ele funciona, com as evidências anexadas. E você pode ver na tela que o gráfico de estrelas sobe quase em linha reta em outubro, chegando a cerca de 41 mil estrelas. Vale dizer que eu não me limitei a ler o README. Instalei a ferramenta no meu próprio laptop com Windows, executei em um aplicativo Electron real e vou mostrar exatamente o que funcionou e o que deu errado. Vamos testar. Então, o que é? REA é um servidor MCP e também funciona como uma ferramenta normal de linha de comando
00:35 Você aponta a ferramenta para um alvo, e ela retorna descobertas. Cada descoberta vem acompanhada das evidências que a sustentam e de uma lista das próprias limitações. Os alvos compatíveis incluem binários nativos por meio do Hopper, Ghidra ou IDA, aplicativos JavaScript e Electron, sites, capturas de rede de arquivos HAR, APKs Android, assemblies .NET, firmware, bytecode EVM e até o comportamento gravado de processos. A licença é MIT, então você pode usar a ferramenta livremente. A configuração exige dois comandos. O recomendado é npx rea agent setup. Ele pergunta quais agents você usa, mostra as alterações que pretende fazer, faz backup da sua configuração
01:08 existente e, em seguida, você reinicia o agent. Claude Code, Codex, Cursor e Gemini CLI estão todos na lista. Se você quiser apenas a linha de comando, use npm install -g rea-agents e depois rea --help. Foi o que fiz, e a versão que obtive foi a 6.2.0. Quando executei rea --help, você pode ver uma longa lista passando na tela. Contei e há cerca de 97 comandos aqui. Há analyze, decompile, compare, capture web screenshot, capture electron scenario, extract artifact, export web scripts e um comando chamado doctor, que verifica
01:42 se sua máquina está pronta. O comando que nos interessa hoje é analyze JavaScript application, porque funciona sem Ghidra, Hopper ou qualquer mecanismo nativo. Agora, aqui está a primeira coisa que me pegou de surpresa — e vale dizer que isso não está na página inicial do README. O REA exige Node 22.19 ou mais recente. Meu laptop tem Node 22.16, então executei o comando e você pode ver o erro à esquerda: incompatibilidade de integridade do artefato, alteração na entrada do diretório antes de abrir main.js. Essa mensagem dá a impressão de que meu arquivo está corrompido, mas não está. O problema é a versão do Node. Então, o que você pode fazer
02:13 é executá-lo pelo npx com Node 24, assim: npx -p node@24 -p rea-agents rea, seguido do seu comando. Nada muda no sistema e simplesmente funciona. Para o teste, escrevi de propósito um aplicativo Electron minúsculo, para saber qual é a resposta correta. Ele tem dois arquivos. Em main.js, ipcMain.handle escuta em um canal chamado save-note e grava o texto em um arquivo usando fs.writeSync. Em pre.js, uma bridge de contexto expõe uma função chamada save, que envia o
02:44 texto pelo ipcRenderer.invoke para o mesmo canal. Esse é o aplicativo inteiro. Portanto, a resposta correta é: um canal, um handler, um emissor. Vamos executar. O comando é rea analyze JavaScript application, o caminho para a pasta do aplicativo e --json. Ele imprime uma linha de progresso e, cerca de 23 segundos depois, você tem um resultado. A saída é um JSON de 441 KB. Agora, se você olhar o bloco de resumo, verá: janelas do navegador, uma; APIs de bridge de contexto, uma; e, em IPC: canais literais, um; handlers principais, um; transmissões do processo de renderização, uma; transmissões do processo de renderização pareadas, uma
03:14 e ambíguas, zero. Isso corresponde exatamente ao que criei. A ferramenta encontrou o canal save-note. Encontrou que o processo de renderização envia dados para ele, que o processo principal os trata e pareou os dois. Analisou dois arquivos JavaScript e percorreu 93 nós de sintaxe, tudo isso sem executar meu aplicativo. O REA diz explicitamente na saída que o JavaScript foi analisado como texto interno e que nada foi executado. Isso é importante porque você pode apontar a ferramenta para um código em que ainda não confia. E esta é a parte que eu realmente respeito. No
03:45 fim do resultado, há uma lista de limitações, e ela não é propaganda. Ela diz que as relações do Electron são derivadas da sintaxe interna e que o registro em tempo de execução e a aplicação de regras continuam sem comprovação. Também diz que a cobertura do grafo é incompleta e que fatos indisponíveis não devem ser interpretados como ausência. Ou seja, a ferramenta informa o que não conseguiu comprovar. Quando um agent escreve um relatório com base nisso, você sabe quais afirmações são sólidas e quais são suposições. Agora, é com o uso por meio de um agent que a coisa fica interessante. Depois da configuração, basta descrever em palavras simples o que você quer. Por exemplo: descubra como a busca funciona
04:17 no aplicativo de notas, mostre as evidências e depois crie algo parecido para o meu projeto. O agent chama as ferramentas do REA, rastreia o código e retorna arquivos e referências a linhas, em vez de um resumo vago. A linha de comando que mostrei usa o mesmo mecanismo. Você só está operando a ferramenta manualmente. Agora, vou ser sincero sobre o que não funcionou para mim. Executei rea doctor, e ele relata problemas de integridade. O Node aparece sinalizado, como já sabemos. Hopper, Ghidra e IDA estão todos marcados como mecanismos de análise ausentes. Portanto, a descompilação de binários nativos não está disponível neste laptop até eu instalar um deles e configurar GHIDRA_INSTALLED. Nenhum dos
04:50 agents foi registrado também, porque instalei apenas a CLI. Portanto, considere minha demonstração como a parte de JavaScript do REA, não a parte nativa. Mais uma coisa: também apontei a ferramenta para um aplicativo real nesta máquina, o Open Code, que tem cerca de 150 MB de código Electron. Depois de oito minutos, o arquivo de saída já tinha 577 MB, então interrompi o processo. Em aplicativos grandes, você vai querer restringir o escopo, e vou dizer claramente que ainda não encontrei as opções corretas para fazer isso. Então, é algo a explorar na documentação, na página da CLI. Por fim, um aviso, porque isso importa. O README diz que o REA se destina à engenharia reversa lícita, à pesquisa, à análise e à reconstrução, e que você é responsável por obter autorização. Também diz que o projeto não emitiu nenhuma criptomoeda nem token. Portanto, se você encontrar um token usando o nome REA, ele não é afiliado ao projeto. Use a ferramenta com seus próprios aplicativos, com aplicativos para os quais você tenha permissão e com projetos open source. Neste vídeo, vimos o que é o REA, como instalá-lo, a armadilha da versão do Node no Windows e uma execução real em que a ferramenta encontrou meu canal save-note e pareou o emissor com o handler, declarando as limitações com honestidade. Se tiver interesse, o repo está em morluto/rea no
05:25 GitHub, e o site é rea.tools. Experimente em um dos seus próprios aplicativos e me conte o que a ferramenta encontrou. Até a próxima. Confira o próximo vídeo.
05:59 O GitHub e o site são rea.tools. Vá em frente e teste em um dos seus próprios apps e me conte o que ele encontra. Vejo você em outro vídeo. Confira o próximo vídeo.
Transcrição original
[00:01] All right, in this video we are going to look at REA, which stands for reverse engineer anything. It is an open-source tool that lets your AI agent take apart an app and tell you how it works with the evidence attached. And you can see on the screen that the star chart goes almost straight up in October to around 41,000 stars. Now, mind you, I did not just read the readme. I installed it on my own Windows laptop, ran it on a real electron app, and I will show you exactly what worked and what broke. Let’s go ahead and test this out. So, what is it? REA is one MCP server, and it also works as a normal command line
[00:35] tool. You point it at a target, and it returns findings, and every finding comes with the supporting evidence and a list of its own limitations. The targets it supports are native binaries through Hopper, Ghidra, or IDA, JavaScript and electron apps, websites, network captures from HAR files, Android APKs, .NET assemblies, firmware, EVM bytecode, and even recorded process behavior. It is MIT licensed, so you can use it freely. Setup is two commands. The recommended one is NPX REA agent setup. It asks which agents you use. It shows you the changes it wants to make, backs up your
[01:08] existing configuration, and then you restart your agent. Cloud Code, Dex Cursor, Gemini CLI are all in the list. If you only want the command line, it is npm install -g REA agents, and then REA –help. That is what I did, and the version I got is 6.2.0. Now, when I ran REA –help, you can see a long list scrolling by. I counted it, and there are about 97 here. There is analyze, decompile, compare, capture web screenshot, capture electron scenario, extract artifact, export web scripts, and a command called doctor that checks
[01:42] whether your machine is ready. The one we care about today is analyze JavaScript application, because it works without Ghidra or Hopper or any native engine. Now, here’s the first thing that bit me, and mind you, it is not in the readme front page. REA wants Node 22.19 or newer. My laptop has Node 22.16, so I ran the command and you can see the error on the left, artifact integrity mismatch, directory entry change before open main.js. That message sounds like my file is corrupted, but it is not. It is the Node version. So, what you can do
[02:13] is run it through NPX with Node 24, like NPX -p node at 24 -p REA agents REA and then your command. Nothing on the system changes and it just works. For the test, I wrote a tiny Electron app on purpose, so I know the right answer. It has two files. In main.js, ipcMain.handle listens on a channel called save-note and writes the text to a file with fs.writeSync in pre.js. A context bridge exposes one function called save, which sends the
[02:44] text over ipcRenderer.invoke to the same channel. That is the whole app. So, the correct answer is one channel, one handler, one sender. Let’s run it. The command is REA analyze JavaScript application, the path to the app folder, and dash dash JSON. It prints a progress line and then about 23 seconds later, you have a result. The output is 441 KB of JSON. Now, if you look at the summary block, you can see browser windows, one, context bridge APIs, one, and under IPC, literal channels, one, main handlers, one, render transmissions, one, paired
[03:14] render transmissions, one, and ambiguous ones, zero. So, that matches exactly what I built. It found the save-note channel. It found that the renderer sends to it and the main process handles it and it paired the two. It parsed two JavaScript files and visited 93 syntax nodes and it did all of this without running my app. REA says right in the output that the JavaScript was parsed as inner text and nothing was executed. That matters because you can point it at code you do not trust yet. And this is the part I actually respect. At the
[03:45] bottom of the result, there is a limitations list and it is not marketing. It says Electron relationships are derived from inner syntax, runtime registration, and enforcement remain unproven. It says graph coverage is incomplete and unavailable facts must not be read as absence. So, the tool tells you what it could not prove. When an agent writes a report from this, you know which claims are solid and which are guesses. Now, the agent way is where this gets interesting. After setup, you just describe what you want in plain words. For example, find out how search works
[04:17] in the notes app, show me the evidence, and then build something similar for my project. The agent calls REA tools, traces the code, and comes back with files and line references instead of a vague summary. The command line I showed is the same engine. You’re just driving it by hand. Now, let me be honest about what did not work for me. I ran REA doctor and it reports healthy faults. Node is flagged, which we already know. Hopper, Ghidra, and IDA are all marked missing analysis engine. So, native binary decompiling is not available on this laptop until I install one of them and set GHIDRA installed there. None of
[04:50] the agent registrations were set up either because I only installed the CLI. So, treat my demo as the JavaScript half of REA, not the native half. One more thing, I also pointed it at a real app on this machine, Open Code, which is about 150 MB of electron code. After 8 minutes, the output file was already 577 MB and I stopped it. So, on big apps, you will want to narrow the scope and I will say plainly that I have not yet found the right flags for that. So, that is something to explore from the docs on the CLI page. Last, a disclaimer because it matters. The readme says REA is for
[05:25] lawful reverse engineering, research, analysis, and reconstruction and you’re responsible for having authorization. It also says the project has not issued any cryptocurrency or token. So, if you see a token using the REA name, it is not affiliated. Stay with your own apps, apps you have permission for, and open source. So, in this video, we have seen what REA is, how to install it, the node version trap on Windows, and a real run where it found my save-node channel and paired the sender with the handler with limitations stated honestly. If you’re interested, the repo is morluto/rea on
[05:59] GitHub and the website is rea.tools. Go ahead and try it on one of your own apps and let me know what it finds. I will see you in another one. Check out the next video.