Nesta página

Engenharia reversa, com seu agente de codificação

Descubra como
o software funciona.

O REA oferece ao seu agente de programação as ferramentas para examinar um programa e explicar o que ele faz.

Já conhece o RE? Ir para os guias de análise

Quer ir mais fundo? Leia o blogue

Configurar REA

Copie este prompt para seu agente de programação:

O seu agente de codificação

Instale o REA e conecte-o a este agente de programação usando npx rea-agents@latest setup. Mostre primeiro as alterações propostas e espere minha aprovação. Depois, verifique a instalação.

Ou execute este comando no terminal:

npx rea-agents@latest setup

Revise e aprove as alterações propostas. Depois, reinicie seu agente.

Primeira vez, ou ausente Node.js ou um agente de codificação? Siga o Guia de configuração passo-a-passo7

O que é engenharia reversa?

Entender como o software funciona examinando o próprio programa.

O objetivo: entender um recurso bem o suficiente para explicar, mudá-lo ou reconstruí-lo.

Por exemplo: por que a calculadora retorna 220 para 200 + 10%?

Antes do REA · Você investiga por conta própria

Original x64 · instruções seleccionadas
0x180124945: MOV EAX, dword ptr [R13 + 0x18]
0x180124949: CMP EAX, 0x5c
0x18012494c: JZ 0x180124aba
0x180124952: CMP EAX, 0x5b
0x180124955: JZ 0x180124aba
0x18012495b: MOV EDX, 0x64
0x180124960: LEA RCX, [RSP + 0x160]
0x180124968: CALL 0x180122650
0x18012496e: LEA RDX, [R13 + 0x160]
0x180124975: LEA RCX, [RSP + 0x78]
0x18012497a: CALL 0x180109720
0x18012497f: MOV RSI, RAX
0x180124982: MOV qword ptr [RSP + 0x28], RAX
0x180124987: LEA RDX, [RSP + 0x160]
0x18012498f: MOV RCX, RAX
0x180124992: CALL 0x180123190
; … value-copy instructions omitted …
0x180124a14: MOV RDX, RDI
0x180124a17: LEA RCX, [RSP + 0xf8]
0x180124a1f: CALL 0x180109720
0x180124a24: LEA R8, [RSP + 0x30]
0x180124a29: MOV RDX, RAX
0x180124a2c: LEA RCX, [RSP + 0xb8]
0x180124a34: CALL 0x180123c10

Descodifica as instruções, segue as chamadas de função e reconstrói o cálculo.

Com o REA · Você pergunta ao seu agente

Um único prompt.

Pergunte ao seu agente com palavras simples.

Exemplo de alerta * Calculadora

Utilizar REA para inspecionar Windows Calculadora. Por que 200 + 10% dão 220?

Exemplo de resposta * com base nas conclusões

Depois de+, o botão % leva uma percentagem do primeiro número.

10% of 200 = 20200 + 20 = 220
O REA fornece
Instruções do manipulador, código descompilado e chamadas.
Seu agente explica
Qual ramificação se aplica, o que calcula e como reconstruí-la.
Conjunto selecionado da DLL da calculadora instalada. Os pensamentos e as respostas ilustram as conclusões. Continue com o exemplo da calculadora

Vamos tentar dois exemplos. Altere a velocidade de um jogo, depois volte à calculadora e reconstrua o botão%.

Exemplo 01 * jogo de dinossauros de Chrome

Por que o dinossauro fica mais rápido?

Objectivo
Reconstrua o jogo com velocidade ajustável.
Por que fazer engenharia reversa?
Para reproduzir sua aceleração, precisamos a regra no jogo de corrida: quão rápido começa, quanto aumenta e quando pára.

Jogue a reconstrução

6 → 10 → 13

Regra Original: comece em 6, depois aumente para 13.

Mova o controle deslizante para definir sua própria velocidade. Espaço ou salto limpa um cacto.

O REA retornou

O script realmente em execução na página. O agente lê sua função de atualização e configurações de velocidade e usa essa regra em um novo jogo.

Exemplo de prompt * jogo de dinossauro

Use REA para inspecionar este jogo de dinossauros. Por que fica mais rápido? Mostre a regra da velocidade, a seguir construa uma versão pequena com uma velocidade ajustável.

Alvo inspeccionado: edição de navegador derivada do Chromium da wayou.

REA * carregado index.js * linhas seleccionadas
if (this.currentSpeed < this.config.MAX_SPEED) {
  this.currentSpeed += this.config.ACCELERATION;
}

Comece às 6. Adicionar 0.001 cada atualização sem colisão, enquanto a velocidade é inferior 13.

Abrir o laboratório de velocidade

O que cada parte faz

  1. 01 * REA Leia o roteiro do jogo em execuçãoDevolva o seu código e definições reais ao agente.
  2. 02 * o seu agenteReconstruir a regra, adicionar um controloUse a aceleração recuperada em um pequeno jogo com um controle deslizante de velocidade.
  3. 03 * VocêAlterar a velocidade e jogarExperimente a aceleração original e escolha o seu próprio ritmo.
Veja o script, verificações e como tentar a análise

O REA inspecionou a edição do navegador HTTP por meio de uma conexão de depuração local e retornou index.js, incluindo a sua fonte e digestão.

Definições seleccionadas a partir do script inspeccionado
ACCELERATION: 0.001,
MAX_SPEED: 13,
SPEED: 6

Chamamos a função de atualização do jogo original em uma verificação controlada do navegador, com obstáculos e programação automática desativados. Após 4.000 atualizações, a velocidade era de 10,0; após 10.000, era de 13,0, arredondado para um decimal.

O novo mini-jogo mantém essa regra de velocidade. Seu código de desenho, salto e colisão é uma pequena implementação de ensino. Abrir o laboratório para ver o novo código e executar a mesma verificação de velocidade.

Para inspecionar o alvo você mesmo, siga o etapas de conexão do navegador utilização a página do dinossauro. Forneça ao seu agente o URL da página e o ponto de extremidade de depuração local e, em seguida, copie o prompt acima.

Código de velocidade inspeccionado · Chromium autores * licença BSD

Exemplo 02 * Calculadora Windows

Recrie o botão % da calculadora.

Vimos porquê 200 + 10% dá 220. Agora vamos recuperar as regras tanto para + quanto para7ivi, e testá-las.

Objectivo
Construa uma pequena calculadora que manipule ambos + E7 corretamente.
Por que fazer engenharia reversa?
O mesmo botão usa regras diferentes depois de + E7X. Inspecionamos o aplicativo instalado para descobrir a qual número a porcentagem é aplicada.

Tente o cálculo

200 + 20

10% de 200 = 20. Então 200 + 20 = 220.

Ilustração interactiva da regra das percentagens inspeccionadas.

O REA retornou

Um ramo divide-se por 100. O outro também se multiplica pelo primeiro número. O agente usa ambos para recriar o botão%.

Para este exemplo, previous = 200 e current = 10.

Exemplo de prompt * reconstruir o botão %

Use REA para inspecionar o botão % da calculadora Windows. Recupere as regras depois de + E7X, em seguida, construir uma pequena calculadora que usa ambos.

Resumo legível do manipulador %
if (operation == multiply || operation == divide) {
  percent = current / 100;
} else {
  percent = current * previous / 100;
}
Com +
Pegue 10% do primeiro número.10% of 200 = 20 → 200 + 20 = 220
Com a ×
Transformar 10% em 0,1.200 × 0.1 = 20

Do aplicativo instalado para um botão % funcional

  1. 01 · REA lê calc.exeEle lança o aplicativo CalculadoraO código abre ms-calculator:. Em seguida, o agente seleciona a biblioteca do aplicativo instalado.
  2. 02 * REA lê a bibliotecaRetorna o código do manipulador % A função verifica o operador e utiliza a constante 100.
  3. 03 * o seu agente interpreta-oExplicar e reproduzir as regrasVerifique o ramo com a fonte da Microsoft e, em seguida, tente + e elimi acima.
Veja o código real e como a resposta foi verificada
REA * instruções originais selecionadas
0x180124945: MOV EAX, dword ptr [R13 + 0x18]
0x180124949: CMP EAX, 0x5c
0x18012494c: JZ 0x180124aba
0x180124952: CMP EAX, 0x5b
0x180124955: JZ 0x180124aba
0x18012495b: MOV EDX, 0x64
IDs do operador * fonte da Microsoft
#define IDC_MUL 92      // 0x5c
#define IDC_DIV 91      // 0x5b
#define IDC_PERCENT 118 // 0x76

0x64 = 100

Inspeccionado com REA 4.1.0: Calculadora Windows 11.2508.4.0, x64. O resumo legível utiliza nomes da fonte pública da Microsoft para explicar o ramo recuperado.

Percentagem de execução · Casos de teste da Microsoft · Guia de configuração nativo

Sua primeira investigação

Tente REA em um pequeno aplicativo.

Baixe nosso exemplo de notas, Rastreie sua exportação CSV e verifique uma entrada alterada.

Experimente o exemplo guiado

Quer se aprofundar?

Diga ao seu agente o que você quer entender ou construir. Com REA, você pode trabalhar junto em qualquer coisa de Clonagem deste website para reconstruir um jogo a partir do seu executável.

Exemplo de pedido * Sítio Web

Use REA para inspecionar https://rea.tools/. Clonar este site para mim.

Sim, esta.

Exemplo de prompt * reconstrução do jogo

Use REA para reconstruir este jogo a partir do seu executável. Recupere a lógica de jogo em C e teste-a contra o original.

Ver estudo de caso DX-Ball

Para as etapas de configuração e análise, escolha o seu destino:

Programas de código de máquina

Inspecione funções, strings, referências e relações de chamada de função em executáveis e bibliotecas.

Análise do Guia de programas de código de máquina

JavaScript & Electron

Mapeie módulos, rotas, IPC e dependências nativas de uma pasta de aplicativo ou arquivo ASAR.

Fluxos de trabalho da aplicação

Atividade do navegador e do tempo de execução

Capture a atividade selecionada do navegador ou do processo e compare os resultados entre as execuções.

Guia de observação do navegador

Alguma dúvida?

Leia as perguntas frequentes, fale connosco em Discord , ou abrir um problema GitHub para bugs e solicitações de recursos.

Participe da comunidade

Compartilhe investigações e obtenha ajuda de outros usuários do REA no Discord . Siga REA em X para atualizações do projeto.

Top