Have you ever wondered how to make sense of hexdumps?
e1a02000e5d00000 e3500000012fff1e e3a00000e2800001 e7d23000e3530000 1afffffbe12fff1e
Or been curious to know what exactly does a bxeq lr instruction mean in assembly?
![<br />
0: e1a02000 mov r2, r0<br />
4: e5d00000 ldrb r0, [r0]<br />
8: e3500000 cmp r0, #0<br />
c: 012fff1e bxeq lr<br />
10: e3a00000 mov r0, #0<br />
14: e2800001 add r0, r0, #1<br />
18: e7d23000 ldrb r3, [r2, r0]<br />
1c: e3530000 cmp r3, #0<br />
20: 1afffffb bne 0x14<br />
24: e12fff1e bx lr<br />](http://farm7.static.flickr.com/6222/6310844790_b549a75205.jpg)
If so, then you should sign up for the introduction to assembly programming and reverse engineering class. You can learn assembly programming and machine architecture using reverse engineering techniques on your own code. In this class we will write code, compile it into an executable and then disassemble it to learn about registers, stacks, branches, function calls and argument passing, structs and other common idioms.
Experience with any programming language is required; the examples in the class with be in C, with dissassembly into ARM assembly. Bring your own laptop with arm-elf-gcc and associated binutils installed to follow along.













