Well ASM is the language to understand, but actually coding in ASM is allmost impossible from my point of view. Understaning ASM is another thing, but writing it - hmm I dunno on that one.
Well impossible is a bit harsh its just im too lazy to dedicate my head to it
I prefer knowing what to look for when debugging/hooking applications than to actually learn its raw code outline.
My personal choice would be C++ sofar because as stated in another post up there its the only language which I have been exposed too and also because I love its relevance to Java, which makes Java a whole lot easier to understand if you know C++.
But since I am spending more and more time on *nix platforms now I really am wanting to get aquainted with C. But lets see everything with its time.
And C# is something I will definately invest in learning cause from what I have seen what .net apps are able to do I am totally for it.
Ohh and Seph, what they mean is that C as it is a predecessor to C++ (C with classes) it has more power over the manipulation of the system itself, you can write C code that will be understood by, I guess, allmost all platforms but C++ is much more architecture sepcific, for example, Coding C++ under Linux will be different to coding C++ under Windows - why? Cause those platforms are already compiled with their default Header file names and so on, accessing a system resource or a shared driver/kernel file would be handled differently under the two platforms. Whereas C is more of a universal language that requires more in depth programming but will achieve in allmost every case the same results under the two platforms.
Bah I think I explained that allright but I think i mixed up a point there somehere, someone have a look!