segunda-feira, 27 de abril de 2020

Cross-disassemblers

Tal como nos referimos previamente a cross-assemblers, existem também cross-disassemblers para a plataforma de ZX Spectrum. Dado as limitações de memória da plataforma, é também muito mais conveniente desassemblar e estudar software em plataformas mais recentes.

Entre os disassemblers que existem, usamos mais estes dois para desassemblar binários estáticos:
Existe para Unix, Linux e OS/X. Temos usado em Mac e Linux. Em Linux pode-se simplesmente instalar o pacote com o mesmo nome.

z80dasm -a -l -g 0x4009 -t --block-def=blocks.data ebdt2019STD.p

Como exemplo de uso, para desassemblar um binário:

- a - imprimir o endereço do opcode desassemblado em comentário
- g - o endereço em que o binário é corrido na máquina
- t - imprimir os bytes desassemblados
- block-def - definir zonas de dados

Para mais detalhes, ver o URL com página do manual mais acima.
O dz80 tem binários para Windows. Existem também binários para Linux e alguns antigos para Mac, mas nesse caso, é preferível usar o z80dasm, que é uma evolução deste.

Note-se no entanto que, por exemplo, o formato TAP não está comprimido, os ficheiros Z80 estão comprimidos, e o TZX é o formato de sinais de cassete e não dão para ser desassemblados directamente, pelo que alguns formatos poderão precisar de algum tratamento para serem desassemblados.
A última versão para DOS, de um desassemblador de Z80 de boa qualidade. Pode-se usar em DOSBox em Mac e Linux.
  • SkoolKit
Um kit para desassemblar / documentar trabalhos de disassembly. Output em HTML, mas não é fácil de usar.

Ver também um disassembler online em: https://onlinedisassembler.com/

Nota: não confundir disassemblers estáticos com debuggers, que seguem a execução de código, emulado ou não, em tempo real.

Sem comentários:

Enviar um comentário