digitalcourage.social is one of the many independent Mastodon servers you can use to participate in the fediverse.
Diese Instanz wird betrieben von Digitalcourage e.V. für die Allgemeinheit. Damit wir das nachhaltig tun können, erheben wir einen jährlichen Vorausbeitrag von 1€/Monat per SEPA-Lastschrifteinzug.

Server stats:

820
active users

#disassembly

0 posts0 participants0 posts today

Another detour on the Time Machine #Pinball #disassembly project, I think the processor specification I've been using is incomplete. There are a lot of instances of indexed addressing being interpreted as an offset from the current address. This is making it hard to figure out where in RAM different pieces of data live without manually calculating the address.

Time to learn #Sleigh and patch the processor definition. Maybe the extension author will even accept a pull request.

Cool. After my productivity speedbump of last night, my Time Machine #pinball #disassembly project has moved forward. I now have a python script which exports the #ghidra program into an info file which a real 6800 disassembler reads to produce assembly which should actually be able to be reassembled into a final binary.

I'll use ghidra to continue analyzing the code, and when I'm ready to actually start writing my own patches, I'll do that outside of ghidra as though it were a source file.

Haven't worked on my #Pinball code #disassembly much directly, but I have been working to get all the tools I need collected. It seems like once I've used #Ghidra to annotate and explore the code I'll want to bring the disassembled "source" into a real editor to actually make my changes.

To ensure the actual disassembly is compatible with assembling back to EPROM images, I plan to write a script to convert ghidra's code representation into a file that will drive a dedicated 68xx disassembler

If #Radare2 vs #Rizin makes no sense to you, perhaps #Python will. It is pretty solid tool for driving #Capstone :-)

Transcript:

raw = open('/home/jarkko/work/nnn/nnn', 'rb')
from elftools.elf.elffile import ELFFile
elf = ELFFile(raw)
symtab = {s.name: s for s in (elf.get_section_by_name('.symtab')).iter_symbols()}
sym = symtab.get('move_cursor')
addr = sym['st_value']
size = sym['st_size']
text = elf.get_section_by_name('.text')
offset = addr - text['sh_addr'] + text['sh_offset']
raw.seek(offset)
payload = raw.read(size)
from capstone import Cs, CS_ARCH_ARM64, CS_MODE_ARM)
disasm =  Cs(CS_ARCH_ARM64, CS_MODE_ARM)
for opcode in disasm.disasm(payload, addr):
    print(f"0x{opcode.address:x}:\t{opcode.mnemonic}\t{opcode.op_str}")

Just got a bit familiar this. The main benefits are obviously:

  • Recursive traversal #disassembly (vs linear sweep style in objdump)
  • Re-usable analysis
  • No boundaries how you can post-process the analysis (or visualize it)

I find this super fascinating!

I am very proud to present the results of my latest project...

...the first-ever fully documented and annotated disassembly of Lander on the Acorn Archimedes.

Lander was the very first game released for the ARM platform, and is arguably the only game ever written explicitly for the original ARM1 processor (there are famously no MUL instructions in there). And, of course, it's the second bona fide classic from the genius of David Braben, as this is the game he wrote next after his astonishing work on Elite.

I will be adding a number of deep dives to the site over the coming weeks, but for now, I hope you enjoy the results, which you can see here:

lander.bbcelite.com

And as always there is also a GitHub repository containing fully buildable source code that you can play with:

github.com/markmoxon/archimede

I hope you like it!

Теперь и я разобрал новый Steam Deck OLED Limited Edition.

Судя по тому, что я увидел, винты крепящие заднюю стенку корпуса всё-таки унифицировали. Я их не смешивал, но вроде как все 8 винтов в этот раз одинакового размера. От крестовых ушли к Torx. А в Limited Edition они ещё и покрашены в красный 😆

WiFi наконец-то разнесли с SSD и шилдик, под которым они расположены крепится только двумя винтами (плюс одним корпусным).

И самое замечательное - то, что Valve не стали творить всякую дичь как делаю с устройствами на Android, например, где для каждого устройства свой билд ОС, а сделали единую кодовую базу SteamOS и после перекидывания кастомного жирного SSD в новый Deck при загрузке SteamOS предложила обновить UEFI и всё заработало как будто оно так и было изначально.

#Valve#Steam#Deck

#PocketViewer finally (carefully!) disassembled! Damn, that required some finesse and "I wonder what Casio's engineers were thinking" pondering and poking.
Anyways, now I might finally get a better angle from which I can poke at the serial port.

ps.: Thanks @rostiger for the stickers! They arrived recently and I've been putting them on things so I become more attached to them. Hopefully that will give extra motivation for their maintenance.

cc: #electronics #theFoundry #disassembly