In Chapter 2,1 presented a short tutorial on using the GNU debugger. This chapter is dedicated to those curious souls who yearn to look under the hood and see how debuggers actually work. I will begin by discussing the different types of debuggers and then showing you how they perform basic debugging tasks (e.g., breakpoints and single stepping). Later on in the chapter, we will look more closely at symbolic debuggers and I will offer suggestions with regard to how they can be implemented. For those engineers interested in protecting intellectual property, I will end the chapter with a collection of techniques that can be used to thwart reverse-engineering tools.
KeywordsVirtual Machine System Call Machine Instruction Instruction Pointer Assembly Code
Unable to display preview. Download preview PDF.