What if you knew how computers work? The x86 Adventures series teaches you your computer's language - x86 Assembly language, from scratch. No prior knowledge is assumed. [Part 0xa] Dancing with WinDbg Hello human assemblers, and welcome to part 0xa of x86 Assembly Adventures! In this part we are going to learn about the WinDbg debugger, and how to use it to find and solve problems in our programs. A debugger is a program that could be used to inspect the operation of another program. In this part we are going to study WinDbg and use it to "debug" our programs. We will learn by example, trying everything in real world situations. WinDbg is the professional choice for debugging on the Windows operation system. It is free to download from Microsoft, and is actually being used internally by Microsoft. Topics covered in this part:
- Introduction to debuggers and how they work.
- Downloading and Installing WinDbg.
- Basic control with WinDbg.
- State inspection with WinDbg (How to read and change different values of our program when it is paused).
- Using software and hardware breakpoints with WinDbg.
- Dealing with Exceptions using WinDbg.
This part is definately not a complete course on WinDbg (There is so much more to learn), but it does cover the main topics you need to know to begin working with WinDbg. Why learn x86 Assembly Language?
- You are the kind of person who really likes to know how things work. In this course you are going to get solid understanding on how computer programs work from the inside.
- Become a better programmer - Knowing how things work down there will help you take better decisions, even as a high level programmer. If you were always wondering what is the stack, or what are those pointers everyone talks about, you came to the right place.
- Write faster code - When you really want to get the most of your processor, writing in raw Assembly is needed. We are not going to talk about optimizations in this course, however you will get a solid foundations so that you can continue exploring on your own.
- You want to become a reverse engineer or a security researcher, read the code of viruses or look for software vulnerabilities. As most of the time the original source code will not be available to you, solid understanding of x86 Assembly Language is mandatory.
The course is made of video lectures. A lecture could be from a presentation, or a real world example, showing me doing stuff at the computer. Almost every video lecture is accompanied by some kind of exercise (You will be told during the lecture, don't worry :) ) The exercises are open source. They are attached here as a rar file, however you could also get them on github. (See "About this course" video for more information). It is crucial that you complete the exercises. You will learn a lot from the lectures, but it is pretty much a waste of your time and money if you don't do the exercises. (Or at least verify that you know how to do them, if you are more experienced). Course tech stack
No prior knowledge is assumed for this course, but I do assume some things regarding your system, so make sure that everything here describes you:
- You are using a Windows operation system. (The course videos use Windows 7). It is recommended to use at least Windows XP.
- You have an intel x86 processor. (If you don't know what you have then you have x86 processor, trust me).
For the tech savvy, some more details about the tools we are going to use in this course:
- Assembly flavour: x86 32 bits protected mode.
- Assembler: The Flat Assembler (FASM)
- Debugger: WinDbg.
? Most of the exercises were ported to linux, however the videos show me using windows 7. Contact me if you are not sure.