Transcrição do vídeo
Texto das legendas disponíveis; pode conter erros.
Imagina descobrir como funciona um aplicativo, mesmo sem ter acesso ao código fonte. E mais, pedir para uma inteligência artificial investigar esse programa e tentar reconstruir suas funcionalidades. >> Pois é, uma ferramenta chamada Ria promete justamente isso. E ela já ultrapassou de 300 mil estrelas no GitHub. Mas será que ela funciona mesmo? Hoje vamos entender essa tecnologia e no final do vídeo eu vou mostrar na prática como utilizar o Ria integrado ao Codex para fazer engenharia reversa com inteligência artificial. >> [música] >> Camila, o que você pensaria de um projeto que tem código aberto e em poucos meses conseguiu ultrapassar as 300 mil estrelas no GitHub? >> Eu diria que alguma coisa muito interessante está acontecendo. Esse é justamente o caso do Ria, sigla para Reverse Engineer Anything. Faça engenharia reversa de qualquer coisa. O repositório foi criado em 14 de abril de 2026 e na nossa consulta hoje já tinha mais de 320 mil estrelas e 80 mil forks. É um crescimento impressionante em aproximadamente seis meses. Mas Silvio, quando falamos em tantas estrelas e forks, podemos concluir que toda essa gente está utilizando a ferramenta? >> Provavelmente sim, mas não necessariamente, tá? Uma estrela no GitHub, ela pode representar um interesse, reconhecimento ou simplesmente alguém que pretende acompanhar o projeto. Já o fork é uma cópia do repositório que pode servir para estudar, para experimentar ou desenvolver modificações nesse repositório. Esses são números então que não comprovam que centenas e milhares de pessoas estejam usando o Ria em produção, tá? Mas eles demonstram algo importante. Existe um imenso interesse, né? Um interesse gigantesco na integração de IA e engenharia reversa. >> E o mais curioso é justamente a proposta, porque investigar o funcionamento interno de um software sem usar o código fonte sempre foi uma atividade bastante associada a especialistas e ferramentas bem mais complexas. Agora temos agentes de IA tentando automatizar parte desse processo. E é isso que torna o RIA tão interessante. >> Mas Camila, antes de falarmos dos exemplos, acho importante entender uma coisa. Como essa tecnologia funciona por debaixo dos panos? Afinal, quem realmente faz a engenharia reversa? É o Codex, o RIA ou alguma outra ferramenta? >> Na verdade, eles trabalham juntos, mas cada um tem uma responsabilidade diferente. Primeiro, precisamos lembrar o que que é a engenharia reversa. Na programação tradicional, partimos de uma especificação e produzimos um programa. Na engenharia reversa, fazemos quase um caminho contrário. Partimos de um programa que já existe e tentamos descobrir como é que ele funciona. Isso pode envolver uma análise de executáveis, instruções de máquina, estrutura de dados e comportamentos observáveis. E existem ferramentas especializadas para isso há muito tempo, como o Ghidra, o IDA e o Hopper. O RIA entra justamente para conectar essas ferramentas aos agentes de inteligência artificial. >> Exatamente. E é importante destacar que o RIA não é um novo descompilador que surgiu do nada. Ele funciona como uma camada de integração, que usa inclusive o protocolo MCP para fazer isso, e coordenação dessas ferramentas. Nós vamos usar o Codex no final desse vídeo como exemplo, tá? O Codex é o agente de IA que recebe essa solicitação e uma vez que ele recebeu uma solicitação em linguagem natural, ele decide quais informações precisa investigar e pode utilizar ferramentas para realizar essa investigação, inclusive essas que a Camila acabou de falar. O RIA, ele disponibiliza essas ferramentas por meio de uma interface padronizada usando o MCP, que é o Model Context Protocol. Assim, o agente consegue solicitar essas análises sem precisar interagir manualmente com cada interface de um descompilador. >> E o funcionamento fica bastante interessante quando observamos o fluxo completo. Podemos resumir a proposta em três etapas: descompilar, compreender e recriar. Na primeira etapa, quando necessário, uma ferramenta especializada examina o executável e recupera informação com instruções, funções e referências. Na segunda, a inteligência artificial utiliza essa informação para investigar como determinada funcionalidade opera. E na terceira, o agente pode tentar reconstruir essa funcionalidade em um novo código. Mas é importante lembrar que nem toda investigação precisa obrigatoriamente passar pelas três etapas. >> Tem um detalhe bem interessante que esse processo ele não precisa acontecer uma vez só, né? Imagina que queremos descobrir como um programa calcula um determinado resultado, por exemplo. O agente ele pode começar procurando uma função relacionada àquele cálculo, depois ele pode investigar quais outras funções são chamadas e quais dados são utilizados, né? E também quais caminhos de execução são os caminhos possíveis. Conforme ele encontra novas informações, ele pode formular novas perguntas e solicitar análises adicionais. É um processo interativo, então. O agente investiga, reúne evidências, formula hipóteses e aí assim ele vai aprofundar a investigação. >> Ou seja, a gente não tá falando simplesmente de perguntar para a IA como um programa funciona. A gente tá falando de permitir que ela utilize ferramentas especializadas para investigar um programa real. E existe um componente fundamental nesse processo, que são as evidências. Porque seria relativamente fácil uma inteligência artificial gerar uma explicação convincente sobre como um programa funciona. O problema é saber se aquela explicação corresponde à realidade. Por isso o RIA retorna a informação estruturada e referências que ajudam a fundamentar a conclusão do agente. >> Exatamente. E essas informações elas podem variar conforme o tipo de programa. Em um executável nativo, podemos obter o pseudo código, instrução de máquina, endereços e também relações entre funções, tá? Ah, agora uma aplicação como Electron, por exemplo, ela vai gerar um outro tipo de artefatos. Nós podemos investigar módulos JavaScripts e a comunicação entre processos tá dentro. Agora existem também mecanismos para analisar aplicativos Android, arquivos .NET, firmware e outros artefatos, tá? O RIA ele reúne essas possibilidades, mas cada tipo de análise possui seus próprios requisitos e também as suas limitações. >> E outra distinção importante é entre análise estática e análise dinâmica. Na análise estática, a gente investiga o programa sem necessariamente executá-lo. Podemos examinar a estrutura, o código compilado ou suas dependências. Na análise dinâmica, a gente observa os aspectos do comportamento durante a execução. Dependendo do software e das ferramentas disponíveis, o RE pode ajudar nesses diferentes tipos de investigação. Então, a gente não ganha uma capacidade mágica de compreender qualquer programa. Ele passa a ter acesso a recursos que antes exigiam muito mais interação manual. >> Isso nos leva a uma última distinção importante. Reconstruir uma funcionalidade não significa necessariamente recuperar o código fonte original. Você não vai descobrir o nome da função e exatamente o que que o programador desenvolveu. Pelo contrário, você olha para o software rodando ou por outras interfaces estáticas, como a Camila disse, e durante a compilação diversas informações elas podem ser perdidas, como o nome de variáveis, comentários, estruturas de alto nível. E então nós podemos conseguir reproduzir o comportamento de uma função, mas sem necessariamente descobrir exatamente como o desenvolvedor escreveu essa função. >> É por isso que a validação é tão importante. Um código reconstruído pode parecer correto em alguns testes e falhar em outros. O ideal é confrontar os resultados com o comportamento original, sempre que possível. E agora entendemos como o RE funciona. Vale conhecer alguns exemplos reais. >> O mais interessante é que já existem demonstrações concretas do RE. Um exemplo envolve o Notion, por exemplo, aquele aplicativo que é bastante conhecido, né, para fazer anotações de produtividade. Os desenvolvedores utilizaram o RE para investigar como o Notion copia conteúdo formatado para a área de transferência. Embora pareça simples, essa funcionalidade ela envolve a comunicação entre diferentes componentes e uma aplicação Electron. O RE ajudou a rastrear esse caminho, passando pela interface, pelos mecanismos de comunicação internos e pelo processo principal da aplicação. >> Isso é sempre bem interessante, porque ele representa algo muito próximo da realidade daquilo que a gente desenvolve o software. Imagina que você encontra uma funcionalidade bem implementada em outro aplicativo e queira compreender quais mecanismos poderiam produzir aquele comportamento. Mas existe outro exemplo que eu achei ainda mais curioso, o DX Ball, um jogo clássico de quebra blocos. Nesse caso, utilizaram o Rion para reconstruir uma função relacionada ao posicionamento do áudio. E os resultados chamaram a atenção. Foram realizados 3200 testes comparativos com o comportamento original e a reconstrução conseguiu reproduzir exatamente os 63 bytes compilados de uma função. >> Esse caso traz uma lição importante. Não basta aí a produzir código que parece correto. Nós precisamos verificar se ele realmente corresponde ao comportamento investigado. Inclusive uma das dificuldades que sempre existiu da engenharia reversa é que o pseudocódigo gerado por um descompilador, ele pode estar incompleto ou representar incorretamente alguma operação. Então muitas vezes é preciso retornar às instruções de máquina para confirmar essa hipótese. >> Isso se aplica também aos aplicativos de celular. Outro estudo de caso oficial envolve o Aegis Authenticator, um aplicativo Android utilizado para autenticação. Nesse exemplo, a investigação buscou compreender a geração de códigos temporários de autenticação. A análise envolveu um APK com mais de 3000 classes. >> Mas o Rion, ele não se limita a aplicativos Android. Sua documentação também apresenta suporte a JavaScript, .NET, firmwares, WebAssembly e diferentes formatos de binários antigos. Existe ainda um caso envolvendo o Touhou 4, um jogo antigo que serve para computadores PC-98. Nesse trabalho, o Rion ele foi utilizado para investigar cálculos de ângulos relacionados aos padrões de projetos desse jogo. Esse tipo de aplicação, ele é bastante interessante para preservação digital, já que permite compreender e reconstruir funcionalidades de programas muito antigos. Mas precisamos fazer uma ressalva. Nem todos esses formatos podem ser analisados automaticamente em qualquer computador. Tem algumas dependências, diferenças entre sistemas operacionais e limitações de ferramentas que podem ser utilizadas. >> Então, já temos aplicação envolvendo ferramentas de produtividade, aplicativos de autenticação e jogos antigos. Isso ajuda a mostrar que a engenharia reversa não se limita à segurança ofensiva. Ela também pode contribuir para compreender tecnologias, preservar softwares e estudar implementações que não possuem mais um código fonte, por exemplo. Agora, Silvio, além do crescimento impressionante do repositório original, já começaram a aparecer ferramentas construídas a partir do REA? >> Sim, essa é uma outra parte interessante da história, porque o projeto acumulou mais de 81.000 forks e um dos forks identificados, por exemplo, né, ele tinha aproximadamente 692 estrelas quando nós estávamos gravando esse vídeo. Mas também tem outros projetos independentes que tentam ampliar ou simplificar a proposta, como, por exemplo, o Lean REA, que representa uma abordagem bastante diferente. >> Esse projeto é interessante porque o seu desenvolvedor questiona justamente a necessidade de uma arquitetura mais elaborada para executar determinadas tarefas. Em vez de utilizar um servidor MCP, a proposta é trabalhar com uma skill compacta e ferramentas de linha de comando. O autor afirma que essa abordagem pode ser mais rápida e econômica em determinados cenários. É claro que esses resultados foram divulgados pelo próprio projeto, então a gente não pode tratar ele como uma comparação independente. Mas isso levanta uma discussão técnica bastante válida. Será que sempre precisamos de um MCP para integrar ferramentas nos agentes? >> Boa pergunta, né? E muitas vezes eu acredito que sim, o MCP ele traz bastante possibilidade porque ele tem essa habilidade justamente de permitir que codex, por exemplo, ele consiga se comunicar com diversas ferramentas de maneira padronizada e provavelmente, na verdade, para essa pergunta não tem uma única resposta, tá? Em alguns cenários uma integração simples com ferramentas de terminal pode até ser suficiente. Em outros interfaces padronizadas, gerenciamento de exceções e mecanismos de controle podem acabar justificando uma arquitetura mais estruturada. O interessante é que a comunidade tá experimentando essas alternativas desde agora. >> Também encontramos plugins para integração com outros agentes, recursos complementares de reconstrução de software e repositórios dedicados a compartilhar essas experiências. Ou seja, o REIL não chamou atenção apenas pelo número de estrelas, ele também começou a estimular um ecossistema de experimentação em torno da engenharia reversa com IA. >> Mas agora eu vou fazer uma pergunta provocativa, Camila. Se um agente consegue investigar um executável e reconstruir funcionalidades, será que estamos caminhando para o fim do código fechado? >> Eu não diria isso não. Primeiro porque um executável não contém necessariamente todas as informações de um código fonte original. Segundo, porque sistemas complexos dependem de serviços externos, como banco de dados, configurações e componentes que nem sempre estão disponíveis para essa análise. E terceiro, porque compreender uma funcionalidade não significa conseguir reproduzir um sistema inteiro com a mesma segurança, confiabilidade e desempenho. O que a ferramenta como o REIL [limpando a garganta] pode fazer é reduzir o esforço necessário para investigar determinados comportamentos. E isso, por si só, já representa uma mudança muito importante. >> Eu concordo contigo, mas também tenho outra preocupação. Se essas ferramentas tornam a engenharia reversa mais acessível, isso também pode facilitar atividades maliciosas? Sem dúvida, a engenharia reversa é uma tecnologia de uso dual. Ela pode ser utilizada legitimamente para auditorias, investigação de vulnerabilidades e preservação digital, mas também pode ser utilizada de forma indevida, por exemplo, para investigar sistemas sem autorização ou tentar extrair informações confidenciais. Existe uma segunda questão, a possibilidade de confiar demais nas respostas da inteligência artificial. Um agente pode apresentar uma explicação muito convincente e ainda assim interpretar incorretamente o funcionamento de uma função. Exatamente, isso não é um problema que surgiu agora com o REIL, né? A alucinação da IA ela já vinha antes e ela continua em todos os problemas, inclusive essa aplicação. E uma característica importante do REIL é a sua preocupação com as evidências que sustentam as conclusões, a rastreabilidade. Mas preservar evidências também não significa automaticamente que uma interpretação ela será 100% correta. Precisamos avaliar a qualidade dessas evidências e sempre que possível confrontar a reconstrução com o comportamento original. Aliás, isso nos leva a uma outra preocupação. Quando utilizamos um agente de IA para investigar um software proprietário, para onde que vão as informações coletadas, hein? >> Essa é uma questão bem importante para ambientes corporativos. Segundo a documentação do RIA, a análise do programa acontece localmente. Entretanto, se o agente utiliza um modelo hospedado na nuvem, por exemplo, as evidências transmitidas ao modelo podem chegar ao provedor. Então, precisamos distinguir duas coisas: onde acontece a análise e para onde são enviadas as informações que o agente utiliza. Quando estamos lidando com softwares proprietários, segredos industriais ou informações confidenciais, essa distinção é bem fundamental. >> Camila, olhando para tudo isso, você acha que o principal impacto do RIA está na engenharia reversa em si ou na maneira como os agentes passam a participar do desenvolvimento do software? >> Eu acho que a grande transformação está justamente na aproximação entre esses dois processos. Durante muito tempo utilizamos a IA principalmente para gerar código a partir de descrições. Agora estamos começando a utilizar os agentes para investigar softwares existentes, reunir evidências, formular hipóteses e construir novas implementações. É quase um caminho inverso da programação tradicional. Na programação partimos de uma especificação e produzimos uma implementação. Na engenharia reversa partimos da implementação e tentamos recuperar seu funcionamento. Com os agentes de IA esses dois processos começam a se aproximar. >> Isso abre uma oportunidade interessante para o desenvolvimento de software, pesquisa científica e também para segurança da informação, mas também provoca uma pergunta inevitável: ferramentas assim vão substituir os especialistas em engenharia reversa? Eu acho que não. Eu acho que elas podem automatizar parte do trabalho operacional, como explorar programas, navegar entre funções, organizar evidências, ah, mas formular hipóteses relevantes, identificar inconsistências, determinar se a sua reconstrução é confiável, ela continua ainda exigindo um conhecimento técnico que muitas vezes somente o humano consegue fazer daquela maneira que realmente precisa ser feita. >> E talvez seja um ponto bem importante sobre o futuro da própria engenharia de software. A medida que os agentes conseguem executar tarefas mais complexas, cresce também a importância de saber avaliar os seus resultados. Afinal, não basta uma IA produzir uma resposta, um código ou uma reconstrução. É necessário demonstrar que aquilo realmente funciona. >> Exatamente. E agora que já entendemos a proposta, a arquitetura e também os principais limites do Ria, vamos ver como isso funciona na prática? >> Chegou a parte que a gente prometeu lá no começo. Até agora vimos os conceitos, os exemplos, os resultados publicados. Mas será que conseguimos identificar aquelas etapas que explicamos? O agente solicitando a análise, o Ria utilizando ferramentas especializadas e as evidências sendo nos retornadas? >> É justamente isso que nós vamos observar. Para essa demonstração, vou utilizar o Ria integrado ao Codex, que é um agente de programação da OpenAI. E nosso objetivo será investigar uma funcionalidade de um programa simples e observar quais evidências ele consegue recuperar. Se você escrever no Google Ria, ou Ria Reverse Engineering para ter mais certeza, o primeiro resultado que vai aparecer é o próprio Git, né? E além do GitHub deles, você pode até pegar diretamente o link para o site, que é ria.tools. Se você abrir o GitHub, você também pode acessar mais abaixo aqui um link que leva diretamente ao website deles, tá bom? Então eu vou clicar aqui em website, ele vai ter aqui alguns exemplos de como começar, ele explica certinho, tá? Então inclusive eu segui esses exemplos no na prática que eu vou mostrar para vocês daqui a pouquinho. Mas o próprio site, ele já tem aqui, se você clicar em em See an Example, você consegue ver aqui ele fazendo a engenharia reversa do joguinho do dinossauro. Olha que legal. Então você você jogar aqui e tudo mais, e que você pode pedir, ó, "Use o Ria para inspecionar o jogo do dinossauro". "O que faz, ah, o que faz para ele ser mais rápido, né? Como ser mais rápido?" "Mostre a regra de velocidade". Então, crie um, uma pequena versão com uma velocidade ajustável. E olha que interessante, ele tem justamente isso, eu consigo deixar mais rápido ou mais devagar o jogo. Isso aqui foi feito, então, com engenharia reversa, né? Essa é a demonstração que eles mesmos mostram aqui no site deles. Pergunta sobre a speed, né? Você faz a primeira pergunta, tenta entender qualquer regra, depois você encontra a regra, então, ó, o Ria, ele vai deixar o agente ler o código do jogo enquanto ele tá rodando, então, ele vai capturar os dados do binário através de uma análise dinâmica e ele vai perceber, então, quais são as velocidades. Por exemplo, ele percebe que a velocidade começa no seis e vai até o velocidade um pouco abaixo do três, né? Então, é basicamente assim que o jogo funciona e uma vez que você entendeu isso através do Ria, você pode, então, fazer o seu próprio jogo. Você pode rebuild, ou seja, você recria, tá? Não é que você vai decompilar o jogo, você vai, sim, recriar o jogo a partir daquilo que você conseguiu observar através do Ria e dos agentes, certo? Bom, então, é, ele tem esse exemplinho aqui, depois tem outros exemplos com calculadora, etc, tá, gente? Mas o legal é que nós podemos clicar aqui, ó, um guide example, que ele mostra justamente como começar o Ria, tá? Então, uma das maneiras de fazer isso é através do Codex, como eu vou mostrar para vocês, e depois, a partir daí, esses passos aqui a gente pode executar diretamente no Codex. Então, agora, eu vou fazer o download do Codex e a gente vai começar a fazer isso na prática. Para baixar o Codex, você pode escrever no Google, por exemplo, download ChatGPT Windows e você acessa essa versão aqui e vai aparecer aqui a opção para você fazer o download, certo? Como eu já fiz isso para gravar o vídeo, eu já estou com o meu ChatGPT já configurado. Então, quando eu abro ele, ele aparece essa set, essa janelinha aqui, né? Para quem ainda nunca usou o Codex. E aí você pode escolher, então, aqui, se você for na sua página inicial, se você quer usar o Codex ou o ChatGPT, tá? No nosso caso, nós realmente queremos usar o Codex e não o ChatGPT, porque é o Codex que permite que nós integremos, né, com o Ria. E olha só como eu utilizei, né? Vou mostrar para você aqui qual foi a minha interação do zero com o Ria tá? Ah, através do Codex. A primeira mensagem que eu mandei foi justamente a mensagem que ele me traz lá da, do site do, do Ria. Porque olha que legal, né? Por mais que o site do Ria esteja em português, ah, ou melhor, esteja em, em inglês, nós conseguimos escolher a versão, né, do idioma que nós queremos que ele mostre para a gente. Então, eu consigo inclusive pegar os prompts em português para ficar mais acessível. Tá vendo aqui em cima? English, eu posso mudar para português Brasil. E aí ele me dá aqui o prompt completo para eu fazer, então, a instalação, tá? Eu copiei esse prompt, joguei ele aqui para o Codex e aqui ele já conseguiu recuperar, então, a, o próprio Ria, ele conseguiu já salvar aqui os arquivos de configuração, tudo bonitinho. Ao longo do processo, aconteceram alguns erros, né? E ele gerou um script para eu executar diretamente na minha máquina. E eu perguntei: "Como é que eu executo esse script?" Ele me falou: "Ah, você pode abrir o PowerShell no menu iniciar, executa esse comando, né?" Então, ele me deu aqui é o comando com o, o endereço exato do script que ele mesmo gerou. Então, eu não precisei criar esse script, tá? O próprio Codex gerou para mim esse scriptzinho aqui e ele falou para eu executar. Eu executei e deu um erro. E aí eu copiei o erro e colei para ele. Bom, esse aqui é o erro, né? Assim como ele pediu, né? "Se aparecer eu copio a mensagem e envio aqui." Eu mandei aqui o erro, ele já me deu uma solução. Ó, "Corrigi o script, execute novamente." Executei de novo e novamente deu erro, né? Eu joguei mais uma vez o erro para ele. Então, assim, eu não estou nem lendo o que está acontecendo, né? Eu só fui passando os erros para o Codex, ele foi resolvendo e aí quando veio ele me surpreendeu. Ele falou: "Olha, eu já corrigi a configuração, a verificação agora retornou health true e você não precisa nem executar o script novamente". Ou seja, a partir da terceira vez que ele tentou corrigir o erro, ele corrigiu e já executou, tá? E eu perguntei: "Bom, beleza, e agora, né? O que que eu faço?" Eu fechei e abri de novo, ele já conseguiu verificar, né? Eh, depois que eu fechei e abri o ChatGPT, né, o Codex, eu já perguntei: "Ó, verifique se o Ghidra está, eh, conectado". E ele falou assim: "Ele está configurado, mas não está disponível nessa sessão". Aí eu descobri que eu precisava vir aqui em Task Manager, né, no gerenciador de tarefas e achar aqui o ChatGPT. Então, achei ele aqui na na lista de processo. E aí depois que eu achei eu finalizei o processo todo, né? Codex, ChatGPT, tudo que tiver ChatGPT, o Codex, né, que são várias coisinhas, né, vários processinhos, a gente pode excluir todos eles, tá? Eh, excluir não, né, fechar. Então, feito isso, né, aí sim eu consegui fazer com que o Codex funcionasse, tá? Então, eu abri uma nova janela, inclusive, que foi uma das coisas que eu precisei fazer para funcionar, tá? E aí eu perguntei logo de cara aqui para quando eu abri a janela: "Verifique se o Ghidra está conectado". Aí ele já me disse: "Não, agora sim o Ghidra está conectado respondendo ao Codex. A versão é essa, ferramentas MCP 207, nenhum arquivo está aberto para análise. O Ghidra não está configurado". Mesmo sem eu falar em Ghidra, ele já me falou aqui sobre o Ghidra e disse que ele não estava configurado e ele me disse que isso não não impede a conexão nem o uso das ferramentas independentes dele, certo? Então, ah, o próximo passo, que já dizia lá no tutorial, era para eu executar essa esse comandinho aqui, né, esse prompt, na verdade. Esse prompt dizia: "Baixar" e ele colocou aqui o link do próprio Ghidra, que é um software, eh, feito no Electron, que ele serve para fazer notas, né, fazer anotações. Eu inclusive baixei esse software e executei para mostrar para vocês como é que funciona. Eu vou mostrar para vocês agora em seguida como o que que é esse software, tá? Mas é um software bem simples. E aí o o prompt já fala que é para ele baixar e uma nova pasta de exemplo, né, descompactar, usar o ria para encontrar o que acontece quando eu clico em exportar notas, porque essa é uma das funcionalidades que tem esse sistema, e mostrar onde o notes.csv está escrito, quais os campos que contém os seus cheiros e linhas relevantes, tá? Então, isso aqui é o prompt que o próprio site do ria me deu para fazer o exemplo. E aí eu executando ele, né, eu consegui já de fato baixar o arquivo. Então, o próprio ria baixou, eu não precisei acessar nenhum site, tá? Eh, ele já colocou lá em outputs, example, notes example. Esse aqui é o exemplo de como seria o software em execução, tá? Porque eu executei ele diretamente, ele não executou ele mostrando para mim o botão, ele fala qual linha do meu código HTML que está aquele botão. Então, nesse caso aqui, né, como é electron, ele mistura aí eh JavaScript, HTML, né? E aí ele tem o export notes, tem o o ID export, então ele tá detectando várias coisas internas, né, do funcionamento do meu sistema. Eh, depois ele percebeu que quando eu clico lá na linha 1 a 3, eu tenho o render.js, ele chama o windows.note.export.csv, então eu sei qual função que ele tá usando agora para poder fazer essa exportação, ele mostra onde ele tá sendo salvo, tá? Esse destino aqui é onde o próprio sistema escolhe, certo? Depois ele mostra, então, ah, outros detalhes, né, invocando, por exemplo, esse canal notes.exports, ele mostra aqui que o que o canal ele é tratado para montar o destino, gravar o CSV em UTF-8 e devolver depois o caminho. Então, percebe que é um fluxo bem simples, mas ele conseguiu, através do ria, entender completamente como ele funciona. Então, olha que legal, ele pega exatamente aqui os detalhes, mostra onde que tá tá ah, salvo a informação, né? Então, o nodes.csv tá sendo salvo em download. Ele mostra que tá sendo feito em UTF-8, tá? Detalhe, pessoal, essa análise aqui, ela foi uma análise estática. Ó, então, ele até mostra aqui, ó, sem executar a aplicação nem criar nodes, tá? Então, o só dessa forma, eh, a gente já conseguiu ver que o Ria, ele consegue fazer essa engenharia reversa. Mas, como foi falado mais cedo no vídeo, além da análise estática, existe também a análise dinâmica, tá? Se vocês quiserem depois repetir esses passos, deixa aqui no comentário que eu posso passar para vocês essa conversa inteira. Ah, mas, além disso, eu depois eu dei um passo além, tá? Eu pedi, bom, eu queria, na verdade, fazer com que o próprio Codex fosse analisado. E aí sim, para o vídeo não ficar muito extenso, pessoal, eu tô mostrando para vocês aqui os passos que eu já executei, né? E até onde eu consegui, tá? O objetivo desse vídeo aqui não é fazer uma engenharia reversa completa, mas sim mostrar como que é o passo a passo para você interagir com o Codex e conseguir fazer engenharia reversa, tá? E aí eu falei, quero analisar o executável do ChatGPT com o Ria. Como eu faço? Localizei o arquivo completo, daí eu passei para ele, né? E para analisar o ChatGPT, eh, executável mesmo, aí já seria uma análise dinâmica, não seria mais análise estática que eu fiz antes, tá? Então, para isso eu precisaria do Ghidra, né? E aí ele detectou que o Ghidra estava faltante, né, aqui. E aí eu tinha entendido até errado, né? Eu fiquei, ué, mas não tá disponível? Como assim? Saiu do ar, será? Porque eu vi que hoje, dia 18, né, já tinha, ontem, na verdade, dia 18, já tinha saído uma nova atualização do Ria. Eu fiquei pensando, será que eles tiraram o suporte para o Ghidra? Mas não, né? Eh, ele me disse que ele se expressou mal, na verdade, a integração está ainda disponível e o que não estava disponível era no meu ambiente, tá? E aí eu falei, bom, então vamos instalar o Ghidra, por favor, me ajude, né? E aí ele me deu aqui um script de instalação para que eu conseguisse então executar esse script e instalasse o Ghidra, tá? Consegui instalar tudo bonitinho. Ah, de primeira ele deu um erro de execução, eu fiz login com administrador, ele não conseguiu também, então eu tive que gerar realmente o script através do codex e executar esse essa linha de comando aqui, né, que já executa aquele script completo, tá? Fechando e abrindo o codex, né, reiniciei ele, ele já conseguiu identificar que a instalação deu certo, ele já confirmou que o Ghidra 12.1.4 estava disponível, a versão do Java também e o de computador nativo. Então, ele percebeu que já estava tudo certo, eu tive que apenas colocar esses dados aqui, que é o Java Home, o Ghidra Install Dir e o Real Analysis Provider, né, então tudo isso aqui eu precisei deixar nas minhas variáveis de ambiente. Então, eu tive que fechar e abrir o codex e aí ele disse: "Agora deu certo, já tá com essa versão do Real do Ghidra, essa versão do Java JDK, né, que é o Java Development Kit". E aí já tá tudo certo, então pra fazer uma decompilação nativa e com todos os requisitos prontos pra passar na verificação, tá? E eu falei: "Beleza, vamos em frente". Ele executou, já conseguiu fazer o início da análise. Aí tem só um detalhe, eh, o Ghidra, por padrão, ele tem um limite de 330 segundos. E aí, como ele excedeu esse limite, ele não conseguiu continuar, tá? E aí eu parei pra pensar: "Bom, o que eu queria mostrar pra vocês é como fazer, né, e não necessariamente o resultado completo, até porque fazer todo esse processo com o chatgpt.exe, eh, e o codex, enfim, seria algo bastante longo e a ideia do vídeo é ser um vídeo introdutório. Então, nesse momento vocês já sabem como começar e a partir daqui seria simplesmente seguir a conversa, né? Ah, estourou o limite? Continua, ah, aumenta o limite, ah, enfim, aí você conseguiria interagir da forma que você bem entenda, tá? Então, o propósito desse vídeo, pessoal, eh, dessa parte do vídeo, dessa parte prática, é mostrar realmente como funciona e agora vocês têm a liberdade pra interagir com o Real através do codex e fazer o que vocês bem entenderem. Mas é importante que vocês sempre fiquem atentos, né, também para os requisitos legais, fazer engenharia reversa de softwares, ah, proprietários e depois lucrar com isso ou, enfim, expor segredos comerciais, pode acabar gerando penalidades e sanções. Então, é importante que você verifique se o que você está fazendo não é nada ilegal e nem antiético ou que fira alguma política, beleza? >> Depois dessa demonstração fica ainda mais interessante pensar no futuro da engenharia de software. Se antes da inteligência artificial nos ajudava principalmente a escrever programas, agora ela também começa a nos ajudar a descobrir como os programas existentes funcionam. >> E estamos caminhando para um cenário em que tanto a produção quanto a compreensão do software pode ser cada vez mais automatizado. Nesse contexto, o diferencial do engenheiro de software talvez seja cada vez menos simplesmente produzir código e cada vez mais se compreender sistemas, avaliar decisões e comprovar que eles funcionam corretamente. O Ghidra, ele é um exemplo interessante dessa transformação. >> Mas isso não significa que a engenharia reversa se tornou uma tarefa trivial. Ainda existem limitações técnicas, riscos e muita questão relacionada com a confiabilidade da reconstrução. E agora queremos saber a sua opinião. Você acha que ferramentas como o Ghidra representam uma revolução na engenharia reversa ou que ainda estamos superestimando a capacidade dos agentes de IA? >> Conta pra gente nos comentários e se você gosta de IA, engenharia de software e cibersegurança, acompanha o CodeFolio e também o nosso CodeTalk. Toda segunda-feira teremos um novo episódio. >> Até o próximo episódio. Tchau. >> Até a próxima e depois me conta se você achou o easter egg escondido nesse vídeo.
Assuntos: Agentes de IA. Publicado no YouTube em 2026-10-19.