Recuperar o de DX-Ball
cálculo da posição sonora esquerda/direita.

Inspecione as instruções originais, identifique a entrada e as constantes e, em seguida, verifique o C recuperado.

Calcular o posicionamento do som estéreo esquerdo / direito

Em DX-Ball, uma batida do tijolo fornece uma posição horizontal da tela. O código de som transforma - o num valor panorâmico esquerdo/direito.

A função inicial, 0x00406400, tem um resultado decompilador curto: uma chamada para __ftol(). REA também retorna suas instruções e chamadores, que dão ao Agente uma maneira de investigar a aritmética ausente.

Novo nestes Termos?
  • Instruções: as etapas que o processador executa, mostradas de forma legível, como MOV ou ADD.
  • Resultado do decompilador / pseudocódigo: a tentativa de uma ferramenta de análise de transformar as instruções de volta em código C-like. Pode perder partes, como neste exemplo.
  • Chamador: uma função que chama este. Mostra quais valores são transmitidos.
  • Endereço: um local no programa, escrito em hexadecimal, como 0x00406400.
  • Constantes: números fixos armazenados no programa, lidos como bytes brutos e decodificados.

Três elementos de prova, um cálculo

  1. 01 * instruçõesUma entrada inteiraUma leitura de pilha fornece o valor utilizado pelas instruções de ponto flutuante.
  2. 02 * chamadorUma coordenada de ecrãO chamador atingido por Tijolos passa 20 + 30 × tile_x.
  3. 03 * bytes de dadosAs constantes numéricasOs bytes referenciados descodificam para 1.5625, 500.0 e um valor de escala.

pan = (x × 1.5625 − 500.0) × scale

REA fornece as instruções, a relação função-chamada e os bytes. O agente interpreta-os em conjunto.

Pergunte sobre o comportamento

Após conectando REA ao seu agente e criação de uma ferramenta de análise de programas de código de máquina, forneça o executável local e uma pergunta:

Que Ferramenta de análise devo utilizar?

REA precisa de um destes para ler programas nativos:

  • Hopper (macOS ou Linux): a configuração do REA detecta-o ou oferece-se para instalá-lo. No macOS, abra o Hopper uma vez e escolha o modo de demonstração ou ative uma licença antes da sua primeira análise.
  • Ghidra (macOS ou Linux; experimental em Windows): gratuito, mas necessita de um Ghidra 12.1 existente.x Instalação e um JDK de 64 bits 21 ou mais recente.
  • IDA (Windows): para uma configuração IDA existente com um registo MCP.

Ver Configurar a análise de programas de código de máquina para os passos.

O seu agente de codificação

Use o REA para descobrir como o DX-Ball calcula o posicionamento do som estéreo. Explique o cálculo e mostre o código.

Exemplo de alerta. Dê ao seu agente o caminho para o executável local DX-Ball 1.07. REA não inclui DX-Ball, então use sua própria cópia ou Faça o mesmo tipo de pergunta sobre outro pequeno programa Windows que você possui.

Como obtenho o caminho completo de um ficheiro?
  • Windows : no Explorador de Ficheiros, clique com o botão direito do rato no ficheiro e escolha Copiar como caminho. Em Windows 10, mantenha pressionada a tecla Shift enquanto clica com o botão direito do mouse.
  • macOS : no Finder, clique com o botão direito do rato no ficheiro, mantenha premida a opção e escolha Copiar " ... " como caminho.
  • Qualquer sistema: arraste o arquivo para uma janela de terminal e seu caminho será exibido.

Leia os resultados do REA

Leia a entrada

Trecho de instrução REA * 0x406409
MOV EAX, dword ptr [EBP + 0x8]
MOV dword ptr [EBP + -0xc], EAX
FILD dword ptr [EBP + -0xc]

As instruções carregam um argumento inteiro e o convertem para aritmética de ponto flutuante. Esta é a entrada ausente da primeira visualização de pseudocódigo.

Siga o chamador

Trecho do chamador REA * 0x411f5b
ADD EAX, 0x14
PUSH EAX
CALL 0x00406400

REA identifica o chamador atingido por tijolo. Suas instruções anteriores multiplicam a coordenada do bloco por 30; adicionando 0x14 (20) indica a posição do ecrã do tijolo.

Leia as constantes referenciadas

Resultados do byte REA * interpretados como duplos little-endian
0x420068  000000000000f93f  → 1.5625
0x420070  0000000000407f40  → 500.0
0x4210a0  000000000000f03f  → 1.0

A aritmética faz referência a esses endereços. A leitura dos bytes fornece os valores reais; a ordem de instrução informa ao agente como eles são usados.

Escrever e verificar a função recuperada

Excerto c * recuperado
pan = (double)x;
pan = pan * 1.5625;
pan = pan - 500.0;
pan = pan * dxball_pan_scale;
return (DxBallInt)pan;

Com uma escala de 1,0, as posições da tela 0, 320 e 640 são mapeadas para -500, 0 e 500 antes da conversão de inteiros. O cálculo coloca o centro da tela no centro do campo estéreo.

O agente utilizou as conclusões do REA para escrever o C. verificações separadas compararam 3.205 entradas com a função x86 original e reproduziram todos os 63 bytes compilados da função completa.

Ver o inquérito completo e a comparação entre a montagem e a c

Experimente com seu próprio binário

Conecte uma análise do provedor de programas de código de máquina, em seguida, dê ao seu agente um executável ou biblioteca local e um recurso para investigar. Perguntas iniciais úteis incluem "como este arquivo é analisado?"ou" qual função lida com esta ação do menu?”

Se já souber o nome ou endereço de uma função, pode consultá-la a partir do terminal. Para uma instalação Ghidra configurada:

Análise de funções
npx -y rea-agents@latest function /absolute/path/to/program main \
  --provider ghidra --json

Substituir o caminho de destino e main com o seu próprio nome ou endereço de função. Cada invocação CLI importa e analisa o binário e, em seguida, fecha sua sessão. As consultas MCP do seu agente reutilizam o binário importado enquanto essa sessão está aberta.

Leia o pseudocódigo juntamente com instruções e referências. Quando um resultado deixa uma chamada ou valor sem solução, use esse local como a próxima pergunta.

Top