Programming / hacking

Posts 16 of 6 · Page 1 of 1
Programming / hacking
Hey!

Im gonna try and make myself quick.

I have lately become very interested in programming and everything that has to do with hacking and game hacking. I have started out with C# like two weeks ago and I spend around 2-3 hours per day, each day, on programming. I have around 4-5 printed books as well as tons of ebooks and tutorials on the internet and I spend normally around 1-2 hour on reading and 1-2 on writing code.

The thing is that I find this really fun, like i have never felt so stimulated as i feel when i read about or do programming. It is very challenging and it takes alot of energy doing this, which is why i dont spend more time than 3-4 hours per day. After all, i have a full time job to take care of, so i guess the time and effort i put down is quite good.

The reason why i started with this is because i have felt so bored and frustrated lately. I have felt like i just wake up, go to work, come home, eat and sleep, and i do this all the week and on the weekend i go mindlessly partying and then i just repeat the same thing.

So instead of just playing games and just spend time on boring stuff I started to read some books etc about programming to give it a try, and I got really caught into it. Like i said, its easily the most fun and stimulating thing i have ever done in my life, I rather spend my weekend (like today) on reading about programming and learning instead of going out.

This is also the reason to why I am doing this thread.

There are alot of skilled programmers/hackers here and I obviously want the same knowledge as you possess. My question to you is how did you become so good? Where did you learn everything? How long did it take to become a good programmer?

I am 20 atm and I aim going to the university in Jan 2015 which is in a little more than half a year. I wanna study something that involves programming so I wanna get as good as I possible can until then. I think Im learning quite fast, i dont really consider myself a natural, but I do think I learn it fast. I have always been good at logical stuff and even if im learning it step by step the things I learn feels so logical! Its beautiful how logical it really is.

Thing is, I wanna learn so much. I wanna learn not only C#, but also C++, C, Perl, PHP, Python etc. I wanna learn everything there is to learn about assembly and machine language and how a CPU truly works (down on the low levels with cache, registry etc). I wanna learn Linux and Kali/Backtrack and learn how to use exploits and further in future I wanna learn how to make my own exploits, I also wanna learn game hacking, to make my own aimbots etc. I dont plan on become a hacker that does things for malicious purposes, I just wanna learn it for the knowledge, I wanna truly understand how a computer works, I wanna understand how the process in the CPU works on detail level, from the moment it gets the instruction and executes it, how does the computer go through the code of instructions bit by bit? I wanna get a higher understanding of how everything works, almost everything in our society runs by or in connection with computers, if you truly understand and know how it all works, then you have a great deal of power. And I want that.

As you can see, there is alot that I wanna learn. And the biggest problem I have, which is why I am contacting you, is that I wanna learn it all at once. So once again, how did you learn all that you can? In what "order" did you learn all this? And what order do you think I should learn all the above?

For example, since I have already started with C# and purchased material and stuff Im gonna stick to it, atleast until I know it on a decent level. But after that, what should I learn? Should I go over to C, C++ or some other language? When should I learn assembly, and at what time would it be good to start learning Linux and everything it has to offer (bash scripting etc)? I know it will take like 5+ years until you are considered a good coder, unless maybe you are a natural, so I know that learning all this stuff will take a huge amount of time. But as I said, this is the most fun and stimulating thing Ive done, so I dont really see what else I would do with my time.

I live in Sweden so english is not my native language, Im sorry if the text is a little bit disjointed.

Cheers!
First of all, I'd like to say your English is excellent for someone who speaks it as a second language. Here in the US rarely do people get actually taught foreign languages. They'll have classes on it, but the method of teaching and student expectations are so low that nobody learns the language.

Anyway, this is probably the longest and most serious post I've ever written. I'd like to say, for anyone else reading this post, I would love for you continue reading and see my perspective as well.

Now, I'm very impressed with your eagerness to learn. It's sad when I take a programming class and only perhaps a quarter or less actually want to learn the language, and only three or so actually seem to have a real passion for it.

I have several suggestions for you, some are direct, but some are more of a warning than anything else.

I would recommend learning C++ and not C, but I wouldn't recommend you ignore it, unless you're trying to get into OS dev or something. If you plan on contributing to open source software sometime, you'll see C a bunch too, depending on what software you choose. It helps to have a general sense of awareness of things. C++, for the most part, is an extension to C that makes it much easier to do almost everything. Most aspects of C programs will run just fine when dumped into C++, but C++ has various features and included library classes/functions that make many of the tricky bits easier without doing much to sacrifice performance if you use it correctly. I would recommend looking into Boost libraries if you want to use C++; it's extremely useful and you will encounter it over and over again.

Python is an interesting language to learn, but make sure you don't become dependent on the abstractions it gives you. I would recommend learning a lower-level language such as C++ before Python. Doing it this way will make Python seem really easy once you actually get to it, and additionally, you won't have to tear out misconceptions about how a computer actually works by learning a lower level language AFTER a higher level one. That's just my subjective opinion, though; there are people that will tell you differently.

I don't have that much experience with Perl, besides needing to read Perl embedded in bash scripts, so I don't feel qualified giving you recommendations other than that it's worth it to be familiar with.

PHP is an awful language. Seriously, it's terrible. It began as an extremely simple platform to make basic dynamic websites with, but then got various features and tidbits piled onto it by demand essentially without planning until it gradually turned into the abomination it is now. Quoting the original author of PHP, "I don’t know how to stop it, there was never any intent to write a programming language […] I have absolutely no idea how to write a programming language, I just kept adding the next logical step on the way". There are many critical problems, including == not being transitive, ternaries being left grouping (which was literally just a total error on the programmer's part, but by the time people seriously wanted it fixed it was in use so much that changing the way ternaries grouped could break past usage), and comparison operators being inconsistent (NULL is less than one, yet equal to zero at the same time). The last one can cause problems with sorting algorithms. Every library function has random names and parameters and generally nothing makes sense. For more information, see PHP: A fractal of bad design and PHP Sadness.

As an alternative to PHP, I could suggest node.js, which is what I use these days. Django looks really good too, though I haven't used it myself. This is more down to your personal preference, though; in some ways, node.js can be more convenient though, since the web server as well as the browser use the same programming language.

I would advise learning JavaScript and acknowledging that it's not perfect, but it's the only thing we have available to us. Gradually, people seem to be moving more and more towards web-based applications instead of native, simply because it is easier, often safer, (Any arbitrary program can be run, and you're putting trust in the security of the browser rather than trust that the guy making the program didn't write something to harm your computer. Of course, it's still possible to get through the security, but it's extremely difficult, instead of effectively opening the door the moment you run the program.) and cross-platform, too. JavaScript is only going to become more important in the future. However, there are many projects in active development that will compile other languages into JavaScript (or asm.js, which I won't go off on a tangent on here). The most notable one today is Emscripten. By "compile to JavaScript", I mean you literally write a C++ program, tell Emscripten to compile it, and out comes JavaScript instead of machine code. It's very cool.

Also, I would strongly recommend once you are comfortable with programming to be aware of what functional programming is like and how to use it- not necessarily to use it regularly, if it's not your thing. I'm in the process of learning Haskell myself right now.

Linux is a really great thing to use and learn. I would highly recommend learning bash as well, once you get to it. It's not a language people use to make the next-gen FPS or do serious numerical computation or anything, but it's useful and, in the process of using Linux, any complicated things you do in the command prompt will rely on you understanding at least part of it. Also, even if you don't use Arch Linux, their documentation for a whole lot of Linux related things (that often will be in your distro as well) is really, really good. They have a wiki with all this good stuff in it. Just so you know.

Now, onto hacking... The sort of "game hacking" people do here doesn't really interest me, and I don't participate in it. I honestly can't take it very seriously, either. This is going to sound like a rant, and it is. The fact is, I've seen many consistent patterns that define the programming community here, that haven't changed or gone away with time. I'm not saying there aren't any good programmers here, but the good programmers are few and far between. There is a dangerous amount of Dunning-Kruger syndrome that goes on here, and it would be sad to see another fall into the swirling hivemind many seem to occupy. I see a lot of terrible code here regularly and little signs of improvement, nor anyone noticing how terrible it is because they don't know how to write anything better. There are a significant number of people in this forum who are a dangerous learning resource.

However, it is possible to get out of the whirlpool. There are many communities of good programmers. Questions and answers alike on StackOverflow will rarely take you in the wrong direction. On reddit, r/programming and r/netsec are good ones. The ##programming channel on freenode (you'll need an IRC client to go there) is pretty good, though some users there are better than others.

If you want to get into one type of "real" hacking, I would suggest Exploit Exercises and especially Smash the Stack. These require SSH, and deal with many types of buffer overflow exploits and other related topics. They're super awesome, and I'm going through Smash the Stack now as well (though I've been halted recently by exams and projects being due).

Also, many times people will tell you "don't reinvent the wheel", but sometimes reinventing parts of it are a good learning experience. Don't ever be afraid to try to write something yourself. Your greatest amount of skill will come from what you write yourself, not from what others write.

Thanks for reading, and if you have any questions, feel free to ask.
Quote Originally Posted by wtfiwantthatname View Post
The only problem I have with Shanks post is his comments about PHP. Please see http://blog.ircmaxell.com/2012/04/ph...i-like-it.html.
I will address his points below.
  • No Debugger - I won't contest this, as xdebug is an interactive PHP debugger. However, note that it's an external library that you have to install, then modify php.ini to use. Node.js, which I will use for comparison in this post, has easy interactive debugging built in because it uses V8.
  • Lack Of Threading - This is terrible. This is really just embarrassing. There is absolutely no reason this would be an advantage. I will repeat this many times in this post: limiting functionality is not a positive attribute to a platform.
  • == Is Useless - No, it is still useless. It's not about "being used appropriately", unless "being used appropriately" means "avoiding the fact that it doesn't express equality" because it behaves entirely arbitrarily in multiple situations that conflict with itself.
  • Scoping Issues with Globals - This is not cleverness, this is redundancy. There's a reason why no other language does this. Being forced to mention a variable that you've declared in global scope when you already know it is is a waste of time without any advantages. There's only an extra line in every function that uses something from global scope.
  • Constants Are Defined By A Function Call - Keep in mind that it was only in PHP 5.3 that they finally made const work in the global scope during their continuous attempts to mop up their own failures. Now we have two methods of defining constants, one's completely idiotic and pre-5.3 code will always be using it, and the other is incompatible and different from the original.
  • Static Variables Inside Instance Methods are Global - Exactly, that's the problem. In another language such as Java, if you try to declare a static variable inside an instance method the compiler will tell you "WTF are you doing" because that doesn't make any sense. You run an instance method that declares and defines a static variable inside it twice, and something different happens the second time. This is another flaw in PHP.
  • PHP Is Naturally Tied to Apache - I have no comment on this. PHP is most easily deployed on Apache, but it's not that hard.
  • There Is No Easy Way To Insulate A PHP App - I've never had to do this, so I have no comment on it.
  • The Entire Missing Features Section - Many of these excuses are weak at best - for example, Python has better solutions (you can return a class from a function). "PHP doesn't have an XSS filter, but Python and Ruby don't either (the frameworks do)" ... you are the one claiming PHP was "designed for the web"!

  • "However, there's one thing that it can do that almost no other popular language can: Be useful to non-developers. All you need to do is look at the open source web application space to see that PHP really wins." No. People using a language doesn't make it good; good language design makes a language good. PHP entered the market at an opportune place at an opportune time, and snowballed into the abomination it is now. That doesn't change anything.
  • "HTTP is a first-class citizen." You mean HTTP related variables and functions are polluting the global scope?
  • "SAPI is a first-class citizen (Server API, mod_php vs CGI vs FastCGI, etc)." You mean PHP doesn't differentiate between the CLI and what it outputs as an HTTP response, forcing people to create roundabout ways to deliver the information that doesn't interfere with the page? Take FireBug for example. By comparison, in node.js, someone makes a request, and bloop, I can print anything I want in the real CLI using console.log.
  • "Application lifecycle is per-request. This is actually one of the negatives identified by the original post." Holy god dude, are you really going to say that's a plus? That it recompiles all the scripts used to deliver the page each request? Are you joking? Are you joking? The advantage you cite is that it "keeps PHP horizontally scalable", (which is something other server platforms can do just fine) while compiling your scripts once upon startup instead of thousands or millions of times. In node.js, I can keep information exclusively associated with one request or use variables that are in the global namespace accessible to everything in the whole process. Note that I say "process" without a plural because node.js compiles it all once and then just waits- and then directly runs the code you wrote to respond to requests whenever they happen. Lack of features is not a feature.
  • "Absolutely gigantic user base." I addressed this earlier.

"Thoughts?" Here they are, sir.
Quote Originally Posted by Shanks_ View Post
I will address his points below.
  • No Debugger - I won't contest this, as xdebug is an interactive PHP debugger. However, note that it's an external library that you have to install, then modify php.ini to use. Node.js, which I will use for comparison in this post, has easy interactive debugging built in because it uses V8.
  • Lack Of Threading - This is terrible. This is really just embarrassing. There is absolutely no reason this would be an advantage. I will repeat this many times in this post: limiting functionality is not a positive attribute to a platform.
  • == Is Useless - No, it is still useless. It's not about "being used appropriately", unless "being used appropriately" means "avoiding the fact that it doesn't express equality" because it behaves entirely arbitrarily in multiple situations that conflict with itself.
  • Scoping Issues with Globals - This is not cleverness, this is redundancy. There's a reason why no other language does this. Being forced to mention a variable that you've declared in global scope when you already know it is is a waste of time without any advantages. There's only an extra line in every function that uses something from global scope.
  • Constants Are Defined By A Function Call - Keep in mind that it was only in PHP 5.3 that they finally made const work in the global scope during their continuous attempts to mop up their own failures. Now we have two methods of defining constants, one's completely idiotic and pre-5.3 code will always be using it, and the other is incompatible and different from the original.
  • Static Variables Inside Instance Methods are Global - Exactly, that's the problem. In another language such as Java, if you try to declare a static variable inside an instance method the compiler will tell you "WTF are you doing" because that doesn't make any sense. You run an instance method that declares and defines a static variable inside it twice, and something different happens the second time. This is another flaw in PHP.
  • PHP Is Naturally Tied to Apache - I have no comment on this. PHP is most easily deployed on Apache, but it's not that hard.
  • There Is No Easy Way To Insulate A PHP App - I've never had to do this, so I have no comment on it.
  • The Entire Missing Features Section - Many of these excuses are weak at best - for example, Python has better solutions (you can return a class from a function). "PHP doesn't have an XSS filter, but Python and Ruby don't either (the frameworks do)" ... you are the one claiming PHP was "designed for the web"!

  • "However, there's one thing that it can do that almost no other popular language can: Be useful to non-developers. All you need to do is look at the open source web application space to see that PHP really wins." No. People using a language doesn't make it good; good language design makes a language good. PHP entered the market at an opportune place at an opportune time, and snowballed into the abomination it is now. That doesn't change anything.
  • "HTTP is a first-class citizen." You mean HTTP related variables and functions are polluting the global scope?
  • "SAPI is a first-class citizen (Server API, mod_php vs CGI vs FastCGI, etc)." You mean PHP doesn't differentiate between the CLI and what it outputs as an HTTP response, forcing people to create roundabout ways to deliver the information that doesn't interfere with the page? Take FireBug for example. By comparison, in node.js, someone makes a request, and bloop, I can print anything I want in the real CLI using console.log.
  • "Application lifecycle is per-request. This is actually one of the negatives identified by the original post." Holy god dude, are you really going to say that's a plus? That it recompiles all the scripts used to deliver the page each request? Are you joking? Are you joking? The advantage you cite is that it "keeps PHP horizontally scalable", (which is something other server platforms can do just fine) while compiling your scripts once upon startup instead of thousands or millions of times. In node.js, I can keep information exclusively associated with one request or use variables that are in the global namespace accessible to everything in the whole process. Note that I say "process" without a plural because node.js compiles it all once and then just waits- and then directly runs the code you wrote to respond to requests whenever they happen. Lack of features is not a feature.
  • "Absolutely gigantic user base." I addressed this earlier.

"Thoughts?" Here they are, sir.
#rekt
:^)
There are alot of skilled programmers/hackers here and I obviously want the same knowledge as you possess. My question to you is how did you become so good? Where did you learn everything? How long did it take to become a good programmer?
[1] How do you become a good hacker/programmer? Practice and having the ability to absorb information and wanting to learn more. You have to dedicate yourself as this isn't something like, 'ooh let me try this' and I'm sure your aware and it seems you have what you need, also READING is key. Reading Books, documentation, watching videos and all sorts of ways of absorbing information. Also ASK/GOOGLE things in an instant if you don't understand something, so that you know what it is and it doesn't trouble you in the future.

[2] Where to learn ? BOOKS, VIDEOS, FORUMS [MPEGH ] and All sorts of ways that you can learn!

[3] How long? There are different levels of hacking and different methods and what matters isn't the fact that you get there but how and the time taken to learn these is very key as it would take a long time but it is worth it. For example if a complete N00B wanted to start hacking he would first want to learn programming and to get to an intermediate level would take about 4 months imo, and then he would focus on hacking only and methods of hacking and along the way you learn that everything you learn applies to one another, and actually it depends on the person.

HOPE I MADE SENSE ( A BIT CONFUSED MYSELF THERE :3 ) BUT OVERALL I HOPE IT HELPS A BIT.
Posts 16 of 6 · Page 1 of 1

Post a Reply

Similar Threads

Tags for this Thread

None

Need help?