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.
On Assembly:
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.
On disassembling:
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.
On hacking:
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.