7 ms·
Reverse Engineering for Beginners [pdf]
- dang 7y agoA thread from 2016: https://news.ycombinator.com/item?id=12185586 https://news.ycombinator.com/item?id=12185586 2015: https://news.ycombinator.com/item?id=10812055 https://news.ycombinator.com/item?id=10812055 2014: https://news.ycombinator.com/item?id=8161316 https://news.ycombinator.com/item?id=8161316 https://news.ycombinator.com/item?id=7726213 https://news.ycombinator.com/item?id=7726213
- reidacdc 7y agoI more or less compulsively downloaded this, and started skimming it. I'm not an assembly-language programmer, but I thought I at least knew how to read an assembly listing. But right there on page 8, in the MIPS and ARM "functions that return a constant", is an example of "branch delay slots", which (a) I've never heard of, and (b) failure to grok them makes a two line function incomprehensible. Fortunately, I like learning things.
- sabas123 7y agoISA's can get very complex very fast, so I would suggest, like the author wrote down in next sentence, to realize that some complexity is best left for a later time. Now that I think about it, ISA's/assembly are a really good example of how lots of tiny small things combined can become really hard to understand fast.
- saagarjha 7y agoMIPS’s choice to shove details from the instruction decoding pipeline into its visible execution model is still kinda annoying though…
- pests 7y agoBranch delay slots on MIPS come about because the instruction decoder already has the next instruction ready by the time the conditional runs. The architecture decides to unconditionally run this instruction instead of potentially throwing it away due to the results of the branch.
- nickysielicki 7y agoBranch delay slot gives you something to do while you're not sure where you're going. In the best case, you don't take the branch, and you have made progress down the correct path without knowing that it was the correct path. However, it's not always possible to fill the branch delay slot with useful instructions, so a lot of the time it ends up just being a nop.
- FillardMillmore 7y agoAny input from beginners who have dipped their toes into this? Is the content explained fairly intuitively or in a way that is simple to understand? I'm also curious - for those in the know - is the pursuit of knowledge regarding reverse engineering something that has proven valuable in a job or is it primarily an academic pursuit? If it has proven valuable, how so?
- ackbar03 7y agoI've followed this book for a bit when learning. Most of it is just examples however. You basically write the program in c, compile and assemble it, disassemble it, and see what it looks like. It's a good exercise though and repeating the motions help. After following it a bit you can then pick ones which you find more interesting. Also I didn't follow it all the way through, the content later in might be a bit different
- nekitamo 7y agoThe book is good and it explains stuff very well. It can be a bit dense in the beginning, if you're looking for a gentler introduction look at the Lena151 tutorials I linked to elsewhere in this thread. Ultimately reverse engineering is a hard and dry topic to learn. Different people learn in different ways. Try several different tutorials and learning resources before finding what works for you. Reverse engineering has been invaluable for my career. It helps you understand the intricacies of modern systems, and makes it so you're never afraid to dive under the hood of something. You approach all software with a can-do attitude, because you know that no matter what, with enough effort you will be able to understand it and make it do what you want. It has also opened up many interesting career paths for me in game anticheat, software exploitation, and tamper resistance. The jobs pay well and are very interesting :)
- souprock 7y agoI'm one "in the know", so I'll answer that part. Heck yeah it is valuable. My area has numerous employers that are eager to hire people with that skill set. It pays more than the typical software development jobs. Most of the jobs seem to be related to how things get hacked into. One can play defense or offense. I post about my employer in the "Who is hiring?" sometimes: https://news.ycombinator.com/item?id=21422735 https://news.ycombinator.com/item?id=21422735
- Havoc 7y agoFor beginners...1054 pages of assembly. Sometimes I think the entire IT sector is on the spectrum.
- strbean 7y agoAckshually, all matter emits black body radiation and is therefore on the spectrum. /s
- gen_greyface 7y agoSarcasm that needs to be declared with /s is not sarcasm. /s
- sitzkrieg 7y agobeginners to reverse engineering, nothing otherwise implied
- anaphor 7y agowouldn't "Introduction to Reverse Engineering" imply you're a beginner at RE if you're reading it?
- icholy 7y agoFound the web developer
- nekitamo 7y agoThis looks like a great resource for beginners, albeit a bit dense and overwhelming. If you're looking for a very gentle introduction the Lena151 video tutorials are great: https://tuts4you.com/e107_plugins/download/download.php?list.17 https://tuts4you.com/e107_plugins/download/download.php?list... They're a bit dated, but all the concepts are still relevant. I wish we had all these great learning resources around when I was starting with W32Dasm + Hiew lol
- therein 7y agoLena151's tutorials were how I got into RE back when I was yet to install WinXP SP1.
- Avery3R 7y agoThe Lena151 tutorials will only teach dynamic analysis, not static analysis. What most people do in industry is a combination of static and dynamic analysis. Static analysis being used to figure out the overall structure and function of a binary, and dynamic analysis being used to fill in details that would otherwise be tedious to figure out with a pure static approach.
- voltagex_ 7y agoLiveOverflow's channel on YouTube has been fantastic and may be slightly more up to date.
- ngcc_hk 7y agoScience and engineering is sort of revere hacking of the world code. If you believe moral is built in, it is also a discovery and “hacking” process. Only in arts ... may be even that if you are more Plato than hacksmann
- ngcc_hk 7y agoVery readable. Highly recommended.
- 0x4a42 7y agoUnfortunatly the french translation is very bad and hardly readable.
- haecceity 7y agoWhy does he have a bulletin board in the beginning of his book?
- ims 7y agoIf you enjoy this format, the same author also wrote "SAT/SMT By Example" which I learned a lot from: https://yurichev.com/SAT_SMT.html https://yurichev.com/SAT_SMT.html
- xorpd 7y agoSome very serious work was put in writing this book. I admit I never fully read it from beginning to end, but from the parts I did read I think it is very well written. My general advice for beginners who want to get into reverse engineering is to read less books, and try to actually reverse engineer small and self contained programs. Reverse engineering has been my job for many years now, but it still very difficult for me to consume a long text talking about a reverse engineering project without touching the code on my own. If you are interested in a hands-on experience, I recently made a self learning kit for learning reverse engineering for beginners. It is called ReversingHero. (https://www.reversinghero.com https://www.reversinghero.com). It is one binary file made of 15 levels of increasing difficulty, teaching reverse engineering. It works in Linux environment, on the x64 series, and can also be completed using WSL (Windows subsystem for linux). ReversingHero also contains an accompanying (paid) video solutions. The video solutions contain 12+ hours of step by step solutions to all the levels.
- bmer 7y agoMaybe you can make the "hex editor", "debugger" and "disassembler" bold words into links to good FOSS implementations of each tool? Otherwise, this looks very interesting :)
- good_guy 7y agoHow do you prevent from reversing some standard function (eg: MD5, base64, blowfish etc.) from a mangled source?