Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
dconstruct — Um desmontador & decompilador experimental para scripts TLOU2 DC. | Kitploit
Ferramentas/GitHubGitHub/deepquantum/dconstruct
Análise EstáticaEngenharia ReversaDepuradoresAnálise de BináriosAnálise de Firmware
GitHubdeepquantum/dconstruct

dconstruct

Um desmontador & decompilador experimental para scripts TLOU2 DC.

Ver Repositório
23219há 20 diasRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Version License: CC BY-NC-ND 4.0

dconstruct

Animação completa de desmontagem e descompilação

Abrir o MP4 de origem

dconstruct é uma ferramenta de engenharia reversa para os arquivos DC-Script usados em The Last of Us Part II. Possui um desmontador e um descompilador.

Ele gera arquivos .asm contendo as estruturas desmontadas e bytecode, bem como arquivos .dcpl (DC Pseudo Language) contendo pseudo-código semelhante a C.

Você também pode fazer edições nos arquivos via linha de comando, incluindo a substituição de estruturas inteiras com pouco esforço. Isso torna extremamente fácil criar mods que simplesmente alteram alguns valores dentro dos arquivos .bin.

Principais funcionalidades

  • Otimizado para velocidade. A desmontagem e descompilação de arquivos são extremamente rápidas.
  • Reconstrução precisa do código-fonte original, especialmente o fluxo de controle.
  • Interpretação automática precisa de todas as estruturas na desmontagem.
  • Desmontagem e descompilação de vários arquivos ao mesmo tempo. Descompilar cada arquivo .bin do jogo leva apenas alguns segundos.
  • Fazer edições via a flag -e, criando novos arquivos que você pode usar para mods.
  • Carregar sidbases personalizados para usar na desmontagem.

Como usar

Primeiro, é recomendado que você mova o diretório dconstruct descompactado para algum local seguro, como C:\Program Files.

Para tornar o dconstruct o mais fácil de usar possível, é recomendado que você adicione o diretório .\bin dentro da pasta dconstruct ao seu PATH. Você pode saber mais aqui, ou seguir estes passos rápidos:

  • Vá na barra de pesquisa do Windows e digite "variáveis de ambiente", você deve obter uma opção que diz "Editar as variáveis de ambiente do sistema".
  • Após selecionar essa opção, você deve obter uma janela com o título "Propriedades do sistema". Acima dos botões "Ok", "Cancelar" e "Aplicar", você deve ver um botão que diz "Variáveis de Ambiente...".
  • Após clicar neste botão, outra janela deve aparecer. Aqui, vá para a segunda tabela (intitulada "Variáveis do sistema") e encontre a entrada com o nome da variável "Path". Clique duas vezes nela.
  • Nesta caixa de diálogo, selecione a opção "Novo" à direita. Agora cole o caminho para o diretório .\bin. Deve se parecer com algo assim:

a

  • Certifique-se de que seu caminho termina em "\bin" e NÃO "\dconstruct".
  • Clique em 'OK' em todas as caixas de diálogo abertas.
  • Para verificar se funcionou, abra um novo prompt de comando e digite dconstruct --about. Você deve ver alguma saída do programa e nenhuma mensagem de erro.

Execute um comando como este na linha de comando para gerar seu primeiro arquivo desmontado:```shell dconstruct my_bin_file.bin

Isto irá então gerar um ficheiro chamado `my_bin_file.bin.asm` no mesmo diretório que o seu ficheiro de entrada. Pode então abrir esse ficheiro usando um editor de texto/código. Recomendo usar algo como VSCode que oferece funcionalidades avançadas de pesquisa e é bom a lidar com ficheiros grandes. O bloco de notas padrão do Windows não é recomendado.

Para descompilar um ficheiro, adicione a flag `--decompile` ao executar o comando.

# Argumentos da linha de comandos

- `-i` - ficheiro ou pasta de entrada. Pode ser omitido se for passado o caminho de entrada como primeiro argumento.

- `-o` - caminho de saída. Se o seu caminho de entrada for uma pasta, este não pode ser um ficheiro. Se não for especificada uma saída, o ficheiro .txt será colocado junto ao ficheiro de entrada. Se a entrada for uma pasta e não for especificada uma saída, o programa criará um diretório "output" no diretório de trabalho atual e colocará todos os ficheiros lá.

- A sidbase é carregada de `sidbase.bin` localizado junto ao executável.

- `--no_decompile` - não emite código pseudo decompilado para um ficheiro .dcpl. O ficheiro será colocado junto ao ficheiro .asm. Isto é falso por predefinição.

- `--no_optimize` - não otimiza e limpa o código dcpl. envolve a inlining de chamadas de funções, remoção de variáveis não utilizadas, transformação de loops for compatíveis em loops foreach e transformação de algumas cadeias if-else em expressões match.

- `--pascal_case` - converte os nomes das funções dos jogos para pascal case na saída dcpl, por exemplo, get-boolean -> GetBoolean.

- `--graphs` - emite ficheiros .svg contendo grafos de fluxo de controlo para todas as funções descompiladas. Cada ficheiro .bin tem a sua própria pasta contendo todos os seus grafos. Isto **significativamente** atrasa a velocidade de descompilação, por isso não é recomendado quando se descompila um grande número de ficheiros ao mesmo tempo.

- `--emit_once` - proíbe que a mesma estrutura seja emitida duas vezes na desmontagem. Se uma estrutura aparecer múltiplas vezes, apenas a primeira instância será totalmente emitida, e todas as outras ocasiões serão substituídas por uma tag `ALREADY_EMITTED`. Isto pode reduzir significativamente o tamanho do ficheiro.

- `-e` - faz uma edição. Mais informações na secção abaixo.

- `--edit_file` - fornece um ficheiro de edição. um ficheiro de edição contém uma edição por linha. usa a mesma sintaxe que a flag -e.

# O que é um desassemblador?

Um [desassemblador](https://en.wikipedia.org/wiki/Disassembler) é uma ferramenta que lê instruções binárias (também conhecido como [bytecode](https://en.wikipedia.org/wiki/Bytecode) ou [código de máquina](https://en.wikipedia.org/wiki/Machine_code)) e traduz cada uma numa versão legível por humanos chamada de [mnemónico](https://en.wikipedia.org/wiki/Assembly_language#Mnemonics). Os desassembladores geralmente não tentam interpretar muito sobre o significado destas instruções e apenas as transformam 1-1 nas suas versões legíveis. Por exemplo, as instruções:```arm
15 00 00 00
4A 01 01 00
43 31 01 00
1C 00 00 01

são desmontados nas seguintes versões legíveis por humanos:```arm LookupPointer r0, 0 LoadStaticU64Imm r1, 1 Move r49, r1 CallFf r0, r0, 1

Todos os números no bytecode são escritos em [hexadecimal](https://en.wikipedia.org/wiki/hexadecimal). A primeira coluna em cada linha representa o `opcode`, ou o tipo de instrução a ser executada. A próxima coluna é o registo de destino, onde o resultado da operação será armazenado. As duas últimas colunas são os operandos 1 e 2, que são registos ou números literais sobre os quais a operação será realizada. Nem todas as instruções usam todos os 4 bytes; por exemplo, a primeira instrução `LookupPointer` precisa apenas de um operando.

O desmontador dconstruct também adiciona algumas informações adicionais destinadas a tornar a leitura das instruções um pouco mais fácil. Ele também insere rótulos (e.g. `L_0`) para tornar mais fácil rastrear a ramificação no código.```arm
15 00 00 00   LookupPointer        r0, 0         r0 = ST[0] -> <is-player-abby?>
4A 01 01 00   LoadStaticU64Imm     r1, 1         r1 = ST[1] -> <player>
43 31 01 00   Move                 r49, r1       r49 = player
1C 00 00 01   CallFf               r0, r0, 1     r0 = is-player-abby?(player)
2F 0D 00 00   BranchIfNot          r0, 0xD       IF NOT r0 => L_0

Isso é útil quando você deseja visualizar o conteúdo bruto do arquivo sem que o programa faça muitas suposições. Mas pode ser difícil de ler para grandes blocos de código, pois não há estrutura alguma. É aí que entra um descompilador.

Baixar ferramenta