For people not used to reading MC8k assembly [1], it's helpful to point out the basic fact that the syntax is in general opcode source, destination which is the other way around from most contemporary ISA:s. So a line like move.l d0, -(a7) will first decrement the value of register a7, then write the contents of register d0 to the resulting address (it's a "push" for a downwards-growing stack). Edit: added Wiki-linka…
Patching 68K Software – SimpleText
11–19 of 19 posts
Re: Patching 68K Software – SimpleText
#12Re: Patching 68K Software – SimpleText
#13This is beautiful, but the real takeaway should be that even proprietary software you only have binaries for is still mutable. The computer runs the code you want it to run. We always need to maintain that and prevent scenarios where general purpose computers stop being the default.
We were always doing this kind of thing on these platforms. This is how we used to hack copy protection out of games. Stepping through, line by line, editing the code and adding JMPs to get around the copy protection code after loading the magic numbers into the register... Happy, happy times.
Re: Patching 68K Software – SimpleText
#14This is beautiful, but the real takeaway should be that even proprietary software you only have binaries for is still mutable. The computer runs the code you want it to run. We always need to maintain that and prevent scenarios where general purpose computers stop being the default.
Android is also about to lock down "sideloading", another "great" dysphemism for "installing software".
Moving the Overton window on this has been so successful, that even people in our industry happily accepted the much maligned dysphemisms of "jailbreaking" and "rooting" for what used to be called "local admin rights" and look upon such access as if it's only something pirates, criminals or malware spreaders would want to do.
I say this as someone who is running an Android phone with a kernel with some backported patches applied and compiled by myself. The fact that I can do it is great. The fact that the entire industry is trying to make it as frustrating as possible for me to do this under the guise of false premises such as "security" is disheartening.
Re: Patching 68K Software – SimpleText
#15I fondly remember patching 68K code in memory on an industrial control system my company was developing. I was able to decode the instructions just by looking at the hex display. Daresay, I could not do that with any modern system.
Re: Patching 68K Software – SimpleText
#16This is beautiful, but the real takeaway should be that even proprietary software you only have binaries for is still mutable. The computer runs the code you want it to run. We always need to maintain that and prevent scenarios where general purpose computers stop being the default.
POKE 35136, 0
thus it ever was.
Re: Patching 68K Software – SimpleText
#17For people not used to reading MC8k assembly [1], it's helpful to point out the basic fact that the syntax is in general opcode source, destination which is the other way around from most contemporary ISA:s. So a line like move.l d0, -(a7) will first decrement the value of register a7, then write the contents of register d0 to the resulting address (it's a "push" for a downwards-growing stack). Edit: added Wiki-linka…
Re: Patching 68K Software – SimpleText
#18Earlier quoted context omitted.
We were always doing this kind of thing on these platforms. This is how we used to hack copy protection out of games. Stepping through, line by line, editing the code and adding JMPs to get around the copy protection code after loading the magic numbers into the register... Happy, happy times.
Then they started loading the protection code from disk doing tricky things. One I cracked recently was a pair of Commodore 1541 sectors that appeared to be the same logical sector (because the drive head is blind). It needed to hit both of them to compile the next portion of the loader. Naturally the segment up to that point was encrypted as well, but nothing survives a VICE breakpoint. https://oldvcr.blogspot.com/2…
Re: Patching 68K Software – SimpleText
#19For people not used to reading MC8k assembly [1], it's helpful to point out the basic fact that the syntax is in general opcode source, destination which is the other way around from most contemporary ISA:s. So a line like move.l d0, -(a7) will first decrement the value of register a7, then write the contents of register d0 to the resulting address (it's a "push" for a downwards-growing stack). Edit: added Wiki-linka…
68K style always made more sense to me: we read left-to-right, after all. Why should we suddenly switch directions for the operand order? It's confusing.