I personally learned hacking from other people and their codes.
For example, i used to download bases of people and study them untill i knew what they did.
Msdn helps alot, along the way you learn the most from actually trying and experimenting with codes and so forth.
I learned assembly, c++, directx, etc all from just trying and not giving up.
But remember that it takes time, i can say i'm a decent coder for the last year.
Knowing i'm programming for over 5 years, you see it takes a while.
But if you study real hard you can do it probably within 2 years.
I hope this helped a bit, if not let me know!