Hacker News new | ask | show | jobs
by zokier 3879 days ago
At least for the first stage you don't actually need to run the executable (under gdb or otherwise). You can just get the string with objdump:

    $ objdump -s --start-address 0x402400 bomb|head

    bomb:     file format elf64-x86-64

    Contents of section .rodata:
     402400 426f7264 65722072 656c6174 696f6e73  Border relations
     402410 20776974 68204361 6e616461 20686176   with Canada hav
     402420 65206e65 76657220 6265656e 20626574  e never been bet
     402430 7465722e 00000000 576f7721 20596f75  ter.....Wow! You
     402440 27766520 64656675 73656420 74686520  've defused the
     402450 73656372 65742073 74616765 2100666c  secret stage!.fl
2 comments

It's actually possible to defuse the whole thing by just decompiling it into assembly and reading that, but you have to really know and be comfortable with ASM. There are a handful of students that do it each year at CMU though, so it's not unsurmountable.

Students who are really comfortable with ASM will get through it fast by reading it, and those who are less so will GDB their way to the right answer. Which is exactly how a good CS assignment should work, where it scales for each skill level very well. Hence one of the reasons this book is great!

Cool, thanks for sharing.