Hacker News new | ask | show | jobs
by robertwt7 1016 days ago
where do you start learning reverse engineering things? I'm also curious, as a software eng focusing on web stuff and api, it's getting quite boring.

These things excites me but i never got to start

4 comments

I've made a lot (50+) of videos on Reverse Engineering, with a heavy focus on ARM assembly as well as mobile platforms.

youtube.com/@lauriewired

Self-promotion I know, but I hope someone finds it useful

This is a good place to start. Named "the ultimate game boy talk" dives into the CPU used, the instruction set(s) used by the CPU, how the video instruction sets work(ed) etc. The game boy from 1989 is a pretty simple device to start learning from. From there you can look at how various people emulated the system.

https://www.youtube.com/watch?v=HyzD8pNlpwI

I second this. I also have a web background, and last year I started with this video, and the Gameboy is a great place to start with this sort of thing.

Start making a game, and you'll soon realise how the CPU works, and making a simple emulator will start to seem very possible.

If you're specifically interested in reverse engineering for ARM-based systems (32 and 64 bit), this book is a pretty good introduction:

"Blue Fox: Arm Assembly Internals and Reverse Engineering" by Maria Markstedter

https://www.wiley.com/en-us/Blue+Fox%3A+Arm+Assembly+Interna...

Related article on The Register, also mentioned here on HN (https://news.ycombinator.com/item?id=37336623):

https://www.theregister.com/2023/08/31/a_star_star_domains/

"Maria Markstedter – a noted author, assembly language expert, and security researcher who's written extensively about Arm at the websites she operates – received a cease-and-desist demand from Arm's lawyers. Her offense? According to the letter she shared on Xitter, using the trademark "Arm" in the domain name arm-assembly.com that she used to promote a book she wrote about the ISA."

So, to be clear, I spent my time reverse engineering software rather than the hardware itself. That said, my observation is that a lot of hardware reverse engineering is software reverse engineering since the software helps you understand how the hardware works (the Asahi guys literally built a hypervisor so they could watch macOS interact with hardware).

And software reverse engineering is just grunt work. I'd start with a very well known existing hardware platform with a very simple CPU design--the GBA is actually a really nice platform as the ARM has a very sane ISA and it's all memory mapped I/O--and get a devkit and start experimenting by writing software to run in an emulator so you can get a feel for how the hardware works.

GameBoy Advance is also nice in that whenever you get really stuck most of the answers are available online ;)