Binary Bomb Lab :: Phase 5
A note to the reader: For explanation on how to set up the lab environment see the “Introduction” section of the post. If you’re looking for a specific phase: Here is Phase 1 Here is Phase 2 Here is Phase 3 Here is Phase 4 Here is Phase 5 Here is Phase 6 Ok, let’s get right to it and dig into the <phase_5> code: So, what have we got here? First things first, we can see from the call to <string_length> at <phase_5+23> and subsequent jump equal statement our string should be six characters long.
Read MoreBinary Bomb Lab :: Phase 4
A note to the reader: For explanation on how to set up the lab environment see the “Introduction” section of the post. If you’re looking for a specific phase: Here is Phase 1 Here is Phase 2 Here is Phase 3 Here is Phase 4 Here is Phase 5 Here is Phase 6 Phase 4 In my opinion, this is where things start to get tricky. In this phase, it is not enough to simply understand the assembly. Some pattern-recognition will be required. As usual, let’s start by taking a look at the code for this phase’s function to see if we can find a vector through which to understand what’s happening. I’m going to do so by running gdb with a test string and using disas:
Read MoreBinary Bomb Lab :: Phase 3
A note to the reader: For explanation on how to set up the lab environment see the “Introduction” section of the post. If you’re looking for a specific phase: Here is Phase 1 Here is Phase 2 Here is Phase 3 Here is Phase 4 Here is Phase 5 Here is Phase 6 By now you know the drill. Off to our objdump file! Woah. There are a lot of conditionals here. Maybe you’re an IA32 warrior who can take one look at this code and immediately tell what is going on, but for the rest of us, an iterative approach might work better here.
Read MoreBinary Bomb Lab :: Phase 2
A note to the reader: For explanation on how to set up the lab environment see the “Introduction” section of the post. If you’re looking for a specific phase: Here is Phase 1 Here is Phase 2 Here is Phase 3 Here is Phase 4 Here is Phase 5 Here is Phase 6 Ok, now things get a lot more interesting a lot more quickly. Let’s get started the same way we did last time, by looking at our objdump file for clues:
Read MoreBinary Bomb Lab :: Phase 1
A note to the reader: For explanation on how to set up the lab environment see the “Introduction” section of the post. If you’re looking for a specific phase: Here is Phase 1 Here is Phase 2 Here is Phase 3 Here is Phase 4 Here is Phase 5 Here is Phase 6 Phase 1 is sort of the “Hello World” of the Bomb Lab. You will have to run through the reverse engineering process, but there won’t be much in the way of complicated assembly to decipher or tricky mental hoops to jump through. To begin, let’s take a look at the <phase_1> function in our objdump file:
Read MoreBinary Bomb Lab :: Set Up
The first step on your way to getting through the bomb lab will be setting up your environment. This page will assume that you have decided to do the lab for fun and profit. If you are a student, you’ve probably already been given these materials by your professor. Get to work. You can find all the necessary files on the “Lab Assignments” page of Bryant and O’Hallaron’s website, or you can download all the pieces individually.
Read More10 Tech Movies To Get You Coding Again
Every creative person goes through phases where they question their commitment to their work, and software developers are no different. Maybe a recent project failed, maybe a simple app turned into a beast, or maybe you’ve been up to your eyeballs in debugging for weeks and you’re wondering, “Why do I do this again?” During these times of disrelish, we tend to forget about the spark of excitement that got us coding in the first place. We become so focused on the excruciating details of whatever issue we’re fighting with that we fail to see the magic we create when we write software.
Read MoreYou Can't JavaScript Under Pressure
A fun little Javascript game was forwarded around my office recently, and I had a great time revisiting my elementary programming skills while defeating each of its levels. It’s called “You Can’t Javascript Under Pressure”. I would recommend that everyone take the next 10-30 minutes out of their life to check it out. While I found the game relatively easy, I figured it might be nice to share my solutions with the web. This game is great practice for the elementary-level software developer, and working through tough problems with a cheat sheet can be an excellent way to learn new topics. Even if you don’t need any help solving these problems, it can always be fun to see solutions that are different than your own. So, without any further ado, here are my solutions to each of the 5 levels:
Read MoreMy Take on the Bullet Journal
My memory is terrible. It always has been. When left to my own devices, I forget names, addresses, appointments, book titles and pretty much everything in between. As such, I’m always looking for a better way to keep my thoughts organized. I’ve tried a variety of organizational methods to combat this problem. As a student, I used to keep a daily agenda where I would religiously write down my assignments and due dates. This kept me well-organized, but I always felt limited by the finite amount of space the planner gave me for each day. The pre-designed boxes left no room for notes, thoughts or events. There was no way for me to easily remember the title of the obscure film I had heard about that day, or take notes on the interesting computer science concept I had just stumbled across.
Read More

