HN user

gbarboza

784 karma
Posts4
Comments5
View on HN

As a regular CTF competitor for over 4 years now, I cannot emphasize the value in simply playing CTFs if you really want to learn this stuff. So many people seem to think there's a secret manual laying around that teaches you all that is involved in going from a compiled binary to a shell. The referenced book should be used as a resource for when you come across a new topic and need some help. If you want to get started here are some useful links.

http://smashthestack.org/

https://ctftime.org/

http://overthewire.org/wargames/

http://repo.shell-storm.org/CTF/

https://github.com/ctfs/write-ups

The way compilers works at CMU is by the end of the first lab you have a fully functional compiler lexing/parsing -> code generation for a subset of the C0 language. With each subsequent lab, you implement more and more features of the language. http://www.cs.cmu.edu/~fp/courses/15411-f13/assignments.html

This is definitely closer to what is described in this post than most compilers courses, but not entirely the same.

I agree with the post in that the current common method of starting with _just_ parsing/lexing is wrong. It's a shame that the first part of the compiler you write in these courses is, in my opinion, the most boring and least relevant to compiler theory. CMU's method of giving you the whole, although fuzzy, picture within the first two weeks wasn't viewed as wrong by me, my lab partner, or anyone else I knew who took the compilers course. In fact, everyone I knew who successfully completed the course highly recommended it to everyone they knew. This is a pretty good measure of success for a course.