Hacker News new | ask | show | jobs
by ganlaw 1589 days ago
Very interesting read. As a purely front end engineer, I am always fascinated by other peoples ability to reverse engineer everyday systems that I use and complain about. If I wanted to learn more about reverse engineering, do you have any recommended readings or talks?
9 comments

There is tons to reverse engineer on the frontend. When you think about it, we have so much source code we can read through, some of it can hide bad engineering that lets you access something you shouldn't be able to. Like setting the price of an item via hidden form parameter, or finding an endpoint that lists every single promo code

Next time you find a website with a GraphQL API, try running the introspection query[1]. If that doesn't work, try fuzzing[2]. I've found multi-billion dollar companies who've

* Left open their GraphQL playground completely

* Enable introspection

Once you start you can dig into the API, and figure if you found anything interesting

[1] https://blog.yeswehack.com/yeswerhackers/how-exploit-graphql...

[2] https://github.com/nikitastupin/clairvoyance

Some companies/APIs do this on purpose as one of the benefits of graphql is the self documenting nature. If you have a well secured schema this shouldn’t be a problem. If you are doing security through absurdity by having stuff in the schema you don’t want people to discover, you are going to have a bad time.
“security through absurdity” Not sure if typo, but I’m stealing that regardless.
This one is pretty simple. All the communication with the sonos device happens in the clear and the protocols are actually pretty well documented.

Getting good at using wireshark is a good place to start.

This project is pretty dead but I remember using it a few years ago https://github.com/stephen/airsonos

I have something much, much worse: I've got a rabbit hole! Here's two mirrors of a quite old website that is heavy on reverse engineering lore. While technological details may be outdated, many of the teachings certainly still apply.

http://www.darkridge.com/~jpr5/mirror/fravia.org/index.html http://woodmann.com/fravia/

Edit: Sorry that the page is somewhat labyrinthine.

On that first link is a date, it displays for me

"February 3 19122"

Took a look to see what's up with that (I'm not familiar with javascript) but it looks like he was using a function that returned the number of years since 1900, with the "19" hardcoded. So for 1995-1999 it would've worked fine, but since 2000 it has been 19100, 19101, etc.

"19" + years_since_twentieth_century

instead of

1900 + years_since_twentieth_century

RIP +Fravia

Finding his site in 1995 or so taught me an enormous number of things that I don't think I would have learned any other way.

Yes, I genuinely felt a bit sentimental and melancholic just clicking through a few of these pages once again.

F

I wish I’ve found these website when I started using internet :/
There is really not any way to give anyone a guide to doing what this guy does because it's not applying any special techniques to do anything. This isn't a binary reversing guide using a specific way to decode an encrypted executable, or whatever. This is quite literally just a guy who uses what he knows to figure out what is going on, and then learn more as is needed.

It will help not to put yourself into a box beforehand, like calling yourself a "purely frontend engineer." This is the kind of useless label for yourself that only serves to make you yourself think that you should stay in some arbitrary, badly specified corner of CS knowledge.

Literally just read about things, then use that knowledge to deconstruct other things. That's all that's going on.

Start by reverse engineering things in your comfort zone. You must already use a couple of libraries in your front end work. Hone your reverse engineering skills by trying to implement the same thing yourself. It's mostly about the ability to figure out how something works by observing and testing its behavior.
Man, there're so many opportunities to reverse engineer the front-end. One example is the web scraping of a SPA without using a browser. Let's say [reverse-engineering Google Maps pagination][1][2].

People on /r/webscraping are constantly asking about web scraping of JS-rendered websites. As a front-end engineer, you have the experience of front-end debugging and using the browser dev tools. People who come to web scraping from the back-end world don't have this experience and are willing to learn.

[1]: https://medium.com/serpapi/how-we-reverse-engineered-google-... [2]: Disclaimer: I'm the author of this blog post

Start here. Start with the second one - 'From n00b to l33t: An Introduction to Reverse Engineering'.

"This workshop is a 1-2 hour introduction to what reverse engineering is. It assumes no knowledge of assembly and is done on paper worksheets rather than a computer setup for accessibility and to make the most efficient use of time."

It's by Maddie Stone, who's a Security Researcher at Google Project Zero.

She also has Android app reverse engineering

https://www.ragingrock.com//pages/tutorials.html

Later, check out this book:

Reversing: Secrets of Reverse Engineering by Eldad Eilam

https://www.amazon.com/Reversing-Secrets-Engineering-Eldad-E...

https://microcorruption.com/'s a good place to start.
Personally I liked using mitmproxy and Android 86x, it took a little bit of setup but was easy to use after a while