The C Programming Language by Brian W. Kernighan and Dennis M. Ritchie. Prentice Hall, 1988. The author’s description of C as defined by American National Standard Institute (ANSI), also called the “Old Testament.” It is old-fashioned but remains a must-read. This book also has a home page: http://cm.bell-labs.com/cm/cs/cbook/index.html.
1001 Visual C++ Programming Tips, first edition, by Kris Jamsa. Muska & Lipman, 2001. Not the “Old Testament”, but very good.
“С++ Annotations” by Frank B. Brokken (http://www.icce.rug.nl/documents/ cpp.shtml). This annotated manual on the C++ programming language is a must-read for every self-respecting hacker.
“comp.lang.c Frequently Asked Questions” by Steve Summit (http://www.eskimo.com/~scs/C-faq/top.html) is the best.
The Art of Assembly Language, first edition, by Randall Hyde. No Starch Press, 2003. One of the most highly recommended resources on Assembly.
Write Great Code: Understanding the Machine, first edition, by Randall Hyde. No Starch Press, 2004. In addition to the excellent language description, the book provides information concerning basic computer data representation, binary arithmetic and bit operations, memory organization and access, Boolean logic, and CPU design.
Manuals from Intel and AMD, which, by the way, are available not only for free downloading but also for ordering by mail (also for free).
On the operating system:
SDKs/DDKs from Microsoft, containing toolsets and accompanying documentation. You need these software products, so go and download them.
Advanced Windows, third edition, by Jeffrey Richter. Microsoft Press, 1997. This is a Bible of the application programmer.
Inside the Windows NT File System by Helen Custer. Microsoft Press, 1994. An excellent description of the Windows NT file system, and a must have.
Inside Windows NT by Helen Custer. Microsoft Press, 1992. A detailed in-depth investigation of the Windows NT 4.0 architecture and associated coding implications.
Microsoft Windows Internals, fourth edition, by David Solomon and Mark Russinovich. Microsoft Press, 2004. Written by two gurus of the hacker’s community, this classic book is an in-depth guide to the Windows kernel. The new edition covers all newest Windows versions, including Windows 2000, Windows XP, and Windows .NET Server 2003.
Undocumented Windows 2000 Secrets by Sven Schreiber. Addison-Wesley Professional, 2001. This book, written by a noted investigator of the Windows kernel internals, covers the Windows 2000 debugging interfaces, symbol files, system memory, and kernel objects; the kernel’s native API; Microsoft PDB file format; and other topics.
The Art of Disassembly from the Reversing-Engineering Network (http://www.reverse-engineering.net/). The bible of the disassembly.
Hacker Disassembling Uncovered by Kris Kaspersky. A-List Publishing, 2003. A hacker’s advice related to how to analyze programs without its source code using a debugger and a disassembler.
Phrack (http://www.phrack.org). The best e-zine available containing lots of articles, including the ones focusing on stack overflow.
On the buffer overflow:
UNIX Assembly Codes Development for Vulnerabilities Illustration Purposes (http://opensores.thebunker.net/pub/mirrors/blackhat/presentations/bh-usa-01/LSD/bh-usa-01-lsd.pdf). An excellent manual on the buffer overflow technique and gaining control over remote computers.
Win32 Assembly Components (http://www.lsd-pl.net/documents/winasm-1.0.1.pdf). Ready-to-use components and exploits.
Understanding Windows Shellcode (http://www.hick.org/code/skape/papers/win32-shellcode.pdf). Manual on shellcode development.