Van stokoude code naar pc-port: zo moderniseren hobbyisten…

Pagina: 1
Acties:

  • Croga
  • Registratie: Oktober 2001
  • Nu online

Croga

The Unreasonable Man

Topicstarter
Artikel: review: Van stokoude code naar pc-port: zo moderniseren hobbyisten retrogames
Auteur: @Imre Himmelbauer
Ontwikkelaars gebruiken vaak reverse-engineeringtools als Ghidra om de gecompileerde code van het spel in te zien. Vervolgens pluizen zij de binaire code functie voor functie uit om te kijken wat elke functie doet. Veel functies in de binaire code hebben namelijk geen logische, maar generieke namen. Daardoor moeten de ontwikkelaars stukje bij beetje uitzoeken wat elke functie doet.
Urrrrr wut?!

Als er binaire code is, is dat hooguit met assembler te benaderen als "taal". Assembler kent geen functies. Assembler kent addresseringen die via documentatie te herleiden zijn naar functies en dat ook nog alleen wanneer het built-in functies zijn en niet, zoals veel waarschijnlijker is, routines in de software zelf. Dit hele stuk leest alsof iemand die nog nooit geprogrammeerd heeft het geschreven heeft. Het heeft weinig raakvlak met de echte wereld.

  • Kees
  • Registratie: Juni 1999
  • Nu online

Kees

Serveradmin / BOFH / DoC
Binaire code is niets anders dan code die niet in normale text vorm is geschreven, maar gecompileert is door een compiler vanaf source code en ook non-text characters bevat (alles tussen 0x00 en 0xFF). En omdat je anders wel heel veel 1-0 in je output krijgt als je hem 'binair' wil laten zien vervangen we dat meestal door hexadecimale output.

Dat assembler geen functies kent klopt, daarom deelt een compiler de file ook op in verschillende secties (zie bijvoorbeeld het ELF formaat). En dan heb je ineens wel functies. Een beetje decompiler kan functies vrij eenvoudig herkennen door jumps in de code te analyseren. Helemaal als je zeker weet dat de originele code ook functies had.

De functie verliest wel zijn naam, want je jumped naar een adres. Dus een decompiler geeft zo'n functie een generieke naam. Dat het onmogelijk is om functies te herkennen in decompiled output omdat assembler geen functies kent is niet waar.

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


  • Croga
  • Registratie: Oktober 2001
  • Nu online

Croga

The Unreasonable Man

Topicstarter
Kees schreef op maandag 21 september 2026 @ 09:42:
Een beetje disassembler kan functies vrij eenvoudig herkennen door jumps in de code te analyseren. Helemaal als je zeker weet dat de originele code ook functies had.

De functie verliest wel zijn naam, want je jumped naar een adres. Dus een disassembler geeft zo'n functie een generieke naam. Dat het onmogelijk is om functies te herkennen in disassembled output omdat assembler geen functies kent is niet waar.
Ah! Maar zodra de disassembler zijn werk gedaan heeft spreken we niet meer over binaire code...... Dan is het plots wél leesbare code in een bepaalde taal geworden. Dat is niet wat er in het artikel staat.......

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

(jarig!)
Croga schreef op maandag 21 september 2026 @ 09:46:
[...]

Ah! Maar zodra de disassembler zijn werk gedaan heeft spreken we niet meer over binaire code...... Dan is het plots wél leesbare code in een bepaalde taal geworden. Dat is niet wat er in het artikel staat.......
Maar dan is je suggestie dus om er iets als 'de gedecompileerde binaire code' ervan te maken?

  • Croga
  • Registratie: Oktober 2001
  • Nu online

Croga

The Unreasonable Man

Topicstarter
ACM schreef op maandag 21 september 2026 @ 09:47:
Maar dan is je suggestie dus om er iets als 'de gedecompileerde binaire code' ervan te maken?
Dat maakt het er niet duidelijker op. Wellicht een stuk opnemen dat men de code eerst decompileerd en het resultaat daarvan, wat dus geen binaire code meer is, analyseert.