Original Article: REC Studio 4 - How to Use
Author: backerstreet.com
       

REC Studio 4 - Como usar

 
      Uma vez que esta versão ainda é uma versão beta, a interface do usuário requer alguma prática. Seguindo estas instruções simples, você obterá o melhor resultado do Rec Studio

Inicie o executável do Rec Studio. Você verá a página de boas-vindas com uma lista de projetos abertos anteriormente. A primeira vez que você não pode ver a Visualização de comando, a Exibição do projeto e a vista Proc Info. Redimensione o painel inferior para mostrá-los; Você pode então arrastar cada visualização na posição preferida para qualquer lado do quadro principal.

Use o Arquivo> Novo Projeto ... para carregar um arquivo executável. Os arquivos executáveis podem ser arquivos do Windows PE (.EXE, .DLL), arquivos ELF do Linux, arquivos Mac OS X MachO ou arquivos não processados. O nível de suporte para cada formato varia, com o Windows PE com o melhor suporte.

Antes de sair do Rec Studio, guarde o estado atual do projeto com Arquivo> Salvar projeto como ..., para que você possa recarregar o estado na próxima vez que você iniciar o descompilador.

Os arquivos do projeto (.rpj) armazenam as informações inseridas pelo usuário que ajudam o decompiler a gerar melhor saída.

Depois de carregar um projeto ou um arquivo executável, a exibição do desmontagem é aberta automaticamente no ponto de entrada do aplicativo (ou no main se os símbolos estiverem disponíveis). A combinação de padrões é usada para tentar detectar a seqüência de entrada e possivelmente definir símbolos para ajudar a identificar funções de nível superior.

Se você não vir nenhum símbolo no painel do Projeto, navegue na Visualização do Desassemblador com a página para cima e Página para baixo, ou digite as funções de comando de nível superior. "dis 0xXXXXX" para mostrar um endereço específico. Depois de identificar o início de um procedimento, clique com o botão direito do mouse no endereço à esquerda da instrução de entrada e selecione "Definir Entrada de Procedimento" no menu pop-up. Isso iniciará a análise do código dessa instrução; a análise tentará encontrar qualquer outro procedimento chamado recursivamente. No final da análise, os procedimentos encontrados, se houver, serão exibidos na Vista do Projeto

Clique duas vezes em qualquer endereço de procedimento na Vista do projeto (ou digite o comando "rec 0xXXXXX" na Visualização de Comando), para descompilar esse procedimento específico. O resultado descompilado será mostrado em sua própria guia na área central.

Use o comando "help" para ver a lista de comandos suportados.

O comando "decompile output-file-path" irá descompilar todo o executável no arquivo de texto especificado.

O "filemap" ou o comando View > File Map mostra o layout do arquivo executável. Cada link mostrado tentará expandir a parte específica do arquivo.

O comando "strings" mostra as cadeias ASCII que foram detectadas no arquivo.

O comando "calltree" mostra qual procedimento chama qual outro procedimento. Esta função ainda possui alguns problemas e pode interromper o aplicativo.

O comando "showprocs" mostra estatísticas sobre todos os procedimentos descobertos. No futuro, será possível alterar os atributos de um procedimento, como o tamanho e a localização dos locais ou os argumentos de entrada.

O comando "add-proc-dest" é usado para especificar o destino de uma instrução de chamada indireta se o descompilador não puder calcular o destino automaticamente. Fornecer o destino de todos os saltos e chamadas indiretas é extremamente importante para melhorar a qualidade da saída descompilada. O comando é usado como "add-proc-dest 0xXXXXXX 0xYYYYYY" onde 0xXXXXXX é o endereço da instrução de chamada e 0xYYYYYY é o endereço do destinatário.

O comando "add-comment" pode ser usado para salvar comentários para a saída desmontada, para ajudar a lembrar o que um pedaço de código faz.

Todas as informações que você inseriu nesses comandos são preservadas quando você salva o projeto com o comando File > Save Project As....

Carregando arquivos binários

O Rec Studio pode carregar arquivos binários de formatos desconhecidos. Nesse caso, você verá o despejo hexadecimal do arquivo. Você pode impor uma estrutura no arquivo binário com o comando "def-segment", usado assim: def-segment -o 0xOFFSET -a 0xADDRESS -l 0xLENGTH -t TYPE" onde TYPE é 'r', 'w', 'x', 'd', 'i' para ler, escrever, executar, dados, informações, respectivamente.

Se quiser desmontar o conteúdo de um arquivo binário, você deve usar o comando "def-cpu" para permitir que o Rec Studio conheça o processador a ser usado para exibir a desmontagem. Os processadores suportados são: x86, x86_64, MIPS, m68k, Sparc, PowerPC.

Aqui está uma lista de todos os comandos e seus parâmetros:

pe-dump -[htsierdbcf] Mostre o conteúdo de várias áreas PE COFF no arquivo binário.

-h Show PE COFF header
-t Show PE COFF symbol table
-s Show PE COFF string table
-i Show PE COFF import table
-e Show PE COFF export table
-r Show PE COFF resource tables
-d Show PE COFF debug table (limited)
-b Show PE COFF base relocation table
-c Show PE COFF certificate table
-f Show PE COFF load configuration table

mac-dump -[ht] Mostre o conteúdo de várias áreas de Mach-O no arquivo binário.

-h Show Mach-O header
-t Show Mach-O symbol table

elf-dump -[htsy] Mostrar o conteúdo de várias áreas ELF no arquivo binário.

-h Show ELF header, Program headers and section headers
-t Show ELF symbol table
-ty Show ELF dynamic symbol table
-s Show ELF string table
-y Show ELF dynamic section
help Mostra a lista de todos os comandos
jumptbls -j jumpAddr -t tableAddr -n numDests -m {a4|a8|o2|o4|o8} definir uma tabela indireta de salto
-j jumpAddr : especifica o endereço da instrução de salto indireto
-t tableAddr : especifica o endereço da tabela de dados usada pela instrução de salto indireto. Esta tabela de dados é usada para obter o endereço dos possíveis destinos do salto indireto.
-n numDests : especifica quantas entradas existem na tabela, ou seja, quantos destinos possíveis podem ser alcançados a partir das instruções de salto.
-m {a4|a8|o2|o4|o8} : especifica o modo do cálculo do endereço. a4 significa que a tabela de endereço contém endereços absolutos, cada 4 bytes de comprimento; similarmente, a8 significa que a tabela de endereço contém endereços absolutos, cada um com 8 bytes de comprimento. o2 significa que a tabela contém offsets a partir das instruções de salto, cada 2 bytes de comprimento; o4 offsets são 4 bytes; o8 As compensações são de 8 bytes.
Neste momento, apenas os modos a4 e a8 são implementados.
type-tree type_name Mostra a hierarquia de tipos para o tipo especificado. A hierarquia para um typedef inclui o tipo concreto.
strings Mostra a lista de cordas detectadas. Uma string é uma seqüência de caracteres ASCII. O programa tenta identificar cadeias de caracteres procurando nas regiões de dados uma seqüência de caracteres ASCII o tempo suficiente para ser considerada uma palavra ou uma frase.
calltree Mostra a árvore de chamada, e quais são as funções chamadas por qual outra função.
showsyms Mostra a lista de endereços nomeados (tabela de símbolos de baixo nível). Estes podem incluir variáveis, pseudo-símbolos, rótulos definidos pelo usuário etc..
proc-range Este comando não é implementado.
rec -a addr [-v] [-O] descompilar um procedimento.
-a addr : especifica o endereço do procedimento para descompilar
-O0-9 : especifica o nível de otimização. O nível é o mesmo mostrado no menu View + Options.
-vbpilf : mostra muita informação detalhada: b = informação do bloco, p = informação do proc, l = informação da vida da variável, f = informações do quadro do procedimento.