This book is absolutely excellent. One of the best, if not the best security book I have ever read.
As previously stated numerous times, it will require you have Assembly and C knowledge. If you don't know either one the book will move lightning fast and you will probably not have the ability to keep up. If you do know both, you should be able to take the book at a nice and steady speed.
Aside from difficulty, the rumors that it contains syntax errors ARE true. There are a few little errors in places like this (showing a typical off-by-one error to prove that C doesn't check boundries on arrays):
#include <stdio.h>
int main() {
int array[5] = {1,2,3,4,5};
printf("%d",array[5];
}
While these errors ARE numerous and slightly annoying, the important thing to understand is that you get the general concepts they are trying to teach you. Anybody can fix the syntax to work correctly but if they don't know the logic behind the syntax it's no different than a car mechanic trying to fix a F-16 jet.
I am willing to overlook the syntax and lexical errors that appear in this book and give it a 5/5. I may be too light, but I think it's an absolutely essential book that everybody should read.
If you find yourself wanting to get a book, whether it be Hacking: The Art of Exploitation, Reversing: Secrets of Reverse Engineering, Rootkits: subverting the Windows kernel, or The Art of Computer Virus Research and Defense, while all excellent books (which I highly recommend you all read if this book interests you), if you have the ability to get The Shellcoders Handbook: Discovering and Exploiting Security Holes, you should.