Reverse Engineering Embedded Firmware Code

Поділитися
Вставка
  • Опубліковано 24 лют 2024
  • In this video I show one method I use to reverse engineer embedded firmware.
  • Розваги

КОМЕНТАРІ • 26

  • @unclezebulon
    @unclezebulon 4 місяці тому

    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.

  • @davidv1289
    @davidv1289 5 місяців тому +1

    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

  • @MichaelEhling
    @MichaelEhling 5 місяців тому

    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.

    • @JerryWalker001
      @JerryWalker001  5 місяців тому +1

      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.

  • @mymessylab
    @mymessylab 5 місяців тому

    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.

  • @EricLikness
    @EricLikness 5 місяців тому

    Knowing how it's done and what it looks like, I am satisfied 👍

  • @juanmiguelcortarello6823
    @juanmiguelcortarello6823 4 місяці тому

    Awesome video!! Really liked it!

  • @cheater00
    @cheater00 5 місяців тому

    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!

    • @JerryWalker001
      @JerryWalker001  5 місяців тому

      Thanks, Unfortunately an IDE will not help here as it would not know what the hardware inputs would be.

    • @cheater00
      @cheater00 5 місяців тому

      @@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!

  • @IvanStepaniuk
    @IvanStepaniuk 5 місяців тому

    for a large complex program you really speed up things using an interactive dissembler like Ghidra or IDA, both support Z80.

    • @JerryWalker001
      @JerryWalker001  5 місяців тому

      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.

  • @SheeplessNW6
    @SheeplessNW6 5 місяців тому +1

    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.

    • @JerryWalker001
      @JerryWalker001  5 місяців тому

      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.

  • @michaelboyd9434
    @michaelboyd9434 4 місяці тому

    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! 😢

    • @JerryWalker001
      @JerryWalker001  4 місяці тому +1

      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.

    • @michaelboyd9434
      @michaelboyd9434 4 місяці тому

      @@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! 👍

  • @charlesdorval394
    @charlesdorval394 5 місяців тому

    Dear dog that's some serious LA hookup right there, damn!

  • @betapacket
    @betapacket 5 місяців тому

    Windows XP:

  • @iwasinnamuknow
    @iwasinnamuknow 5 місяців тому

    Interesting but I couldn't take anything seriously after seeing MS Word used for code.

    • @JerryWalker001
      @JerryWalker001  5 місяців тому

      MS Word was not used for code. It was used to provide easy formatting. The files are simply text files.