Having analyzed firmware ROMs with the aid of a disassembler a number of times I'm personally quite used to the process, but it was still interesting to follow your thoughts. Looking up the port addresses from the hardware schematics was a nice touch. And, as others have pointed out in the comments, you explained everything very well so it should be a good introduction to those who haven't done similar work before.
Thank you, that was very interesting. I was especially interested in how you locate look-up tables as the disassembler can't help with that. Some may find this boring but including this information really aids in understanding the overall troubleshooting process. Regards, David
That was helpful. You made it easy to get my head around the idea of decompiling and reverse engineering code. Key learning for me: start with an understanding of the CPU and machine architecture.
Correct. Actually without an understanding of the CPU and instruction set then a listing would not be useful anyway. Having said that this is an excellent way of learning about different processors. It is also a lot of fun.
This is what I was looking for, many thanks!. Clearly a good knowledge of processor instructions set is essential, but your method is really logic and intuitive. A great lesson.
Just finished watching. This was a GREAT video and I appreciated it VERY much. Everything was explained from ground up so that someone who's never done something like this before can understand it all. While I have some experience in RE and a lot of experience as a programmer, most of this stuff was new to me, and it was great to see a problem worked through from start to finish, INCLUDING the "boring" and "obvious" tasks. Sometimes my mind trailed off a bit and I had to scroll back, and pay better attention, but I'm entirely happy to do that because it's par for the course with extremely technical material. Definitely not "boring" or "unwanted" in any way - it's exactly the kind of thing that teaches people the most. I really really liked that you used the simplest tools available, rather than have an IDE do work for you. While, yes, doing this tutorial video in vim would be something that *I* could understand, doing it in something extremely primitive like Word or Wordpad means that *anyone* can understand it. That's what makes this great! No "magic" happening, every step is beautifully obvious. Would love more videos about reading assembler and the likes. Maybe you could also show us a buffer overflow or some othr exploit in a piece of code. Or maybe you could show us how to patch a binary. I wonder if you could do some tutorial videos on FPGA design, something simple. This sort of thing will become more and more popular as old digital chips simply stop existing. Thanks so much, your videos are ALWAYS great and every time I can afford the time I give them a watch, but this one was very near to my interests! Thank you!
@@JerryWalker001it's very fortunate - i hate working "in an ide" so I am extremely appreciative of you showing how every step works without magical toolchains. Anyways, please keep these coming!
If you find it useful then you should use it but I find it much easier and MUCH faster to use the process I showed. It is mostly using the LA to check where the code is getting and this cannot be done in a software only environment. Remember I am showing how to repair hardware and not software.
20:42 It helps if you've memorised ASCII encoding, because then runs of bytes falling within the alphabetic ranges really jump out at you. The bytes shown starting at address 0AD7 read 'System "boot"(1-Rev. F) from floppy disk in progress'. And, obviously, once you've identified a string which talks about booting, any code which refers to the address of that string is likely to be boot-related, so the strings help you identify the code. Alternatively, just have a window open on a hex-plus-ASCII dump (like the memory editor shown at 04:00), which makes the strings easy to spot.
Any ASCII text strings can simply be read in the binary file as they are shown as 'characters'. However the reason I used the term lookup tables rather than text strings was because most of the lookup tables in this ROM are CPU to CPU data exchange sequences used in communication between the two processors. There are also a large number of encoded byte sequences where the first byte is the code and the following byte(s) are the code sequences. Unfortunately these do not result in human readable strings but they are still lookup tables, hence my terminology and approach. It is also worth mentioning that many of the machines I work on are from other countries so the 'text strings' are not in English. Remember that ASCII values are simply hex values which also appear in instructions.
A very useful tutorial on disassembly., Many thanks. By the way, a google search on wordpad would suggest that Microsoft Windows are killing it off on their next update! 😢
Yes they are, along with many other useful utilities as Windows becomes nothing more than a social media platform. That is why I no longer upgrade my OS. You can however simply copy it from older versions if you want to retain it after upgrades. They removed Hyperterminal some time ago but I still use a copy from an older version of windows. I find it very sad that PC's are becoming useless for anyone actually interested in computing by the very same company that first made them so popular.
@@JerryWalker001 Yes, I agree with your sentiments. A great pity that Microsoft are doing this, apparently it’s called ‘progress’! I’m still using Windows 10, it was allegedly supposed to be their last OS and simply updated regularly infinitum, then came Windows 11! Thanks for the tip on how to retrospectively install wordpad onto modern windows. By the way, your Z80 series is excellent! 👍
Having analyzed firmware ROMs with the aid of a disassembler a number of times I'm personally quite used to the process, but it was still interesting to follow your thoughts. Looking up the port addresses from the hardware schematics was a nice touch. And, as others have pointed out in the comments, you explained everything very well so it should be a good introduction to those who haven't done similar work before.
Thank you, that was very interesting. I was especially interested in how you locate look-up tables as the disassembler can't help with that. Some may find this boring but including this information really aids in understanding the overall troubleshooting process. Regards, David
That was helpful. You made it easy to get my head around the idea of decompiling and reverse engineering code. Key learning for me: start with an understanding of the CPU and machine architecture.
Correct. Actually without an understanding of the CPU and instruction set then a listing would not be useful anyway. Having said that this is an excellent way of learning about different processors. It is also a lot of fun.
This is what I was looking for, many thanks!. Clearly a good knowledge of processor instructions set is essential, but your method is really logic and intuitive. A great lesson.
Knowing how it's done and what it looks like, I am satisfied 👍
Awesome video!! Really liked it!
Just finished watching. This was a GREAT video and I appreciated it VERY much. Everything was explained from ground up so that someone who's never done something like this before can understand it all. While I have some experience in RE and a lot of experience as a programmer, most of this stuff was new to me, and it was great to see a problem worked through from start to finish, INCLUDING the "boring" and "obvious" tasks. Sometimes my mind trailed off a bit and I had to scroll back, and pay better attention, but I'm entirely happy to do that because it's par for the course with extremely technical material. Definitely not "boring" or "unwanted" in any way - it's exactly the kind of thing that teaches people the most. I really really liked that you used the simplest tools available, rather than have an IDE do work for you. While, yes, doing this tutorial video in vim would be something that *I* could understand, doing it in something extremely primitive like Word or Wordpad means that *anyone* can understand it. That's what makes this great! No "magic" happening, every step is beautifully obvious.
Would love more videos about reading assembler and the likes. Maybe you could also show us a buffer overflow or some othr exploit in a piece of code. Or maybe you could show us how to patch a binary.
I wonder if you could do some tutorial videos on FPGA design, something simple. This sort of thing will become more and more popular as old digital chips simply stop existing.
Thanks so much, your videos are ALWAYS great and every time I can afford the time I give them a watch, but this one was very near to my interests! Thank you!
Thanks, Unfortunately an IDE will not help here as it would not know what the hardware inputs would be.
@@JerryWalker001it's very fortunate - i hate working "in an ide" so I am extremely appreciative of you showing how every step works without magical toolchains. Anyways, please keep these coming!
for a large complex program you really speed up things using an interactive dissembler like Ghidra or IDA, both support Z80.
If you find it useful then you should use it but I find it much easier and MUCH faster to use the process I showed. It is mostly using the LA to check where the code is getting and this cannot be done in a software only environment. Remember I am showing how to repair hardware and not software.
20:42 It helps if you've memorised ASCII encoding, because then runs of bytes falling within the alphabetic ranges really jump out at you. The bytes shown starting at address 0AD7 read 'System "boot"(1-Rev. F) from floppy disk in progress'. And, obviously, once you've identified a string which talks about booting, any code which refers to the address of that string is likely to be boot-related, so the strings help you identify the code. Alternatively, just have a window open on a hex-plus-ASCII dump (like the memory editor shown at 04:00), which makes the strings easy to spot.
Any ASCII text strings can simply be read in the binary file as they are shown as 'characters'. However the reason I used the term lookup tables rather than text strings was because most of the lookup tables in this ROM are CPU to CPU data exchange sequences used in communication between the two processors. There are also a large number of encoded byte sequences where the first byte is the code and the following byte(s) are the code sequences. Unfortunately these do not result in human readable strings but they are still lookup tables, hence my terminology and approach. It is also worth mentioning that many of the machines I work on are from other countries so the 'text strings' are not in English.
Remember that ASCII values are simply hex values which also appear in instructions.
A very useful tutorial on disassembly., Many thanks. By the way, a google search on wordpad would suggest that Microsoft Windows are killing it off on their next update! 😢
Yes they are, along with many other useful utilities as Windows becomes nothing more than a social media platform. That is why I no longer upgrade my OS. You can however simply copy it from older versions if you want to retain it after upgrades. They removed Hyperterminal some time ago but I still use a copy from an older version of windows. I find it very sad that PC's are becoming useless for anyone actually interested in computing by the very same company that first made them so popular.
@@JerryWalker001 Yes, I agree with your sentiments. A great pity that Microsoft are doing this, apparently it’s called ‘progress’! I’m still using Windows 10, it was allegedly supposed to be their last OS and simply updated regularly infinitum, then came Windows 11! Thanks for the tip on how to retrospectively install wordpad onto modern windows. By the way, your Z80 series is excellent! 👍
Dear dog that's some serious LA hookup right there, damn!
Windows XP:
Want another guess?
Interesting but I couldn't take anything seriously after seeing MS Word used for code.
MS Word was not used for code. It was used to provide easy formatting. The files are simply text files.