Learning help!

Discussion about hacker.org's server
Post Reply
igornre
Posts: 1
Joined: Thu Jun 07, 2007 5:52 am

Learning help!

Post by igornre »

i dont hav much hacker skills, in deed i'm a beginner :(
i wanna know what do u guys recommend for me to learn, what books to read, or sites or anything that helps me to improve my skills
thx a lot :D
Jerry
Posts: 6
Joined: Sun Jun 03, 2007 11:54 am

Re: Learning help!

Post by Jerry »

igornre wrote:i dont hav much hacker skills, in deed i'm a beginner :(
i wanna know what do u guys recommend for me to learn, what books to read, or sites or anything that helps me to improve my skills
thx a lot :D
Man i think that first you need it's to learn English or slang because you have mixture.And language for hacker is very important :P
And about books try to search in Google.And what are you going to hack?
If you try to break covputer defend try not to be arresred
Captain Segfault
Posts: 67
Joined: Sat May 05, 2007 6:11 pm
Location: San Carlos, CA
Contact:

Re: Learning help!

Post by Captain Segfault »

Jerry wrote:Man i think that first you need it's to learn English or slang because you have mixture. And language for hacker is very important :P
It's important among wannabes, and being able to communicate well is a huge asset, but at the end of the day it's all about skill/talent/accomplishment.
igornre wrote:i wanna know what do u guys recommend for me to learn, what books to read, or sites or anything that helps me to improve my skills
The primary thing, more aimed at some of the other people here, comes out well as an anecdote. A few weeks ago the four year old son of one of my coworkers was playing some Nintendo DS Frogger game, and found it hard. He kept asking me to help him through the first level. I did so a bit, but then I kept telling him that he needed to play the game himself. You don't win a game by completing levels, you win it by figuring out how to play it, and once you know how to play it then you just win the levels.

The same is true of "hacking" in general; we're really talking about a more general skill ("problem solving").

I'll guess you're probably young (middle school/high school?). So, the big trick here, that I wish I'd known back then: you don't need to wait!! You gain wisdom and experience with age, but there are plenty of people who do big things when they're still in grade school. But give schoolwork and everything else due priority too; a lot of it is useful, but the important thing is getting good at thinking. ("how to play it")

Play around with some programming languages. Perl might be a decent place to start; the 'learning perl' book is fairly good for that, and Perl is an excellent language for attacking the puzzles on this site.

Take a look at http://www.catb.org/~esr/faqs/hacker-howto.html. The guy isn't right about everything, but it's the right general mindset.

I could go on for ages here. but I have to pack for a flight tomorrow...
ShardFire
Posts: 26
Joined: Wed May 30, 2007 4:26 pm
Location: United Kingdom

Re: Learning help!

Post by ShardFire »

Jerry wrote:
igornre wrote:i dont hav much hacker skills, in deed i'm a beginner :(
i wanna know what do u guys recommend for me to learn, what books to read, or sites or anything that helps me to improve my skills
thx a lot :D
Man i think that first you need it's to learn English or slang because you have mixture.And language for hacker is very important :P
And about books try to search in Google.And what are you going to hack?
Now, the funniest thing about this, is that his comment is better than yours in every possible way:
1) The English is actually better than yours not only because in the context of the internet, contractions such as 'hav; wanna; thx' are all deemed acceptable, but because it is coherent and makes sense. And his grammar is almost perfect except 'much' should be 'many'. Your English is however, complete rubbish. But I need not continue for the next point...
2) Criticizing people's English is public forums is both rude and off topic 99% of the time. Even if the criticism is written politely and true.
END OF DISCUSSION

Now, to answer the guy's question, don't worry about being a beginner. I think the first steps for you would be to learn how a computer functions inside so you can learn to think like a computer. Anyway, in basic terms, all that a computer does is performs calculations, stores data and follows lists of instructions written by programmers. Remember however, that computers cannot actually think. They have no intelligence. They just blindly follow whatever code they have been given until an error occurs.

Then you need to learn a programming language that will allow you to write programs for your computer. Learn about all kinds of loops, and if statements, variables, procedures and functions, data types...

If you don't have a compiler/interpreter that is suitable for your needs then microsoft has kindly provided some express versions of their products. I would recommend Visual Basic for the beginner, but you may also wish to try C++. I wouldn't bother with C#, or J# particularly. And I'm sure you are capable of using google for any other help you need with programming. Also, if you don't want to download all the help files, you can access the full set on the web at http://www.msdn.com/library.


Best of luck,

ShardFire


(Extra note: if you don't want to use Microsoft's proprietory software and depend on the huge libraries, and you want to program in C++ you may find Dev-C++ to be worthwile.)
Captain Segfault
Posts: 67
Joined: Sat May 05, 2007 6:11 pm
Location: San Carlos, CA
Contact:

Re: Learning help!

Post by Captain Segfault »

ShardFire wrote: If you don't have a compiler/interpreter that is suitable for your needs then microsoft has kindly provided some express versions of their products. I would recommend Visual Basic for the beginner, but you may also wish to try C++. I wouldn't bother with C#, or J# particularly. And I'm sure you are capable of using google for any other help you need with programming. Also, if you don't want to download all the help files, you can access the full set on the web at http://www.msdn.com/library.
I wouldn't bother with J#, but C# is actually a rather nice language; as a language it is certainly better designed than Java or C++. (This is to be expected!) I personally would not use anything other than C# if I were making a .NET application.

Although VB is a better language than it used to be, as a beginner language I'd avoid it in favor of Perl or Python. Python has a reputation for being a good starter language, too...
ShardFire
Posts: 26
Joined: Wed May 30, 2007 4:26 pm
Location: United Kingdom

Post by ShardFire »

Umm, yeah, I haven't tried C# myself. And I don't know anyone that uses it (or they didn't tell me). So if it was so much better I'm sure I would know about it already. How does it compare if you're trying to perform low-level tasks? I'm sure C# doesn't have memory pointers and such like. Well it's your own choice anyway. No language is perfect for all tasks, that's one thing we can be sure of.
Captain Segfault
Posts: 67
Joined: Sat May 05, 2007 6:11 pm
Location: San Carlos, CA
Contact:

Post by Captain Segfault »

ShardFire wrote:Umm, yeah, I haven't tried C# myself. And I don't know anyone that uses it (or they didn't tell me). So if it was so much better I'm sure I would know about it already. How does it compare if you're trying to perform low-level tasks?
C# isn't really designed for systems programming, though it isn't really out of the question. For the most part I'd compare it to Java.

I was rather impressed by it when I first tried it out, and that was back when I still rather disliked MS. It's not like it's the best language for all tasks, but it definitely did learn from the mistakes Java made.

For the CLR and .NET, I'd think of C# as being sorta like C is in UNIX; it is sorta the preferred language. You still wouldn't use C# for everything, any more than you'd use C for everything in UNIX...
ShardFire wrote: I'm sure C# doesn't have memory pointers and such like.
C# does have pointers, but you have to declare sections of your code "unsafe" to use them. On the other hand, memory management is a huge source of mistakes and complexity and I'd just as soon avoid doing it as much as possible...
ShardFire wrote: Well it's your own choice anyway. No language is perfect for all tasks, that's one thing we can be sure of.
Yes
ShardFire
Posts: 26
Joined: Wed May 30, 2007 4:26 pm
Location: United Kingdom

Post by ShardFire »

Captain Segfault wrote:C# does have pointers, but you have to declare sections of your code "unsafe" to use them.
Wow, that made me laugh. Really? I'd love to hear their definition of safe in this context.


A: Oh my god, it's a pointer that points to REAL PHYSICAL MEMORY!!! We cannot be having this in our abstracted HLL world! And besides, it is bound to create a number of problems for unexperienced programmers with memory access violations and such things.
B: So what are we going to do about it chief?
A: Well stop people using it of course.
C: But, I am quite sure that there are a lot of reasons why professional programmers would want direct access to the memory to optimize their programs.
A: True. Ok another plan. How about making it so difficult to use, that no one will try to use it except those who know what they are doing, and they will be forced to find other, more acceptable, high level ways to accomplish their goals.
C: Wait, if you make it too difficult I don't think they will be able to take the language seriously for any low level tasks.
A: Ok, rather than making really complicated, we can make it just plain annoying and use any other kind of deterrents that will prevent usage by the casual user and make sure C# can be regarded as a truly high level language.
D: Umm, sounds ok... I don't think making it annoying will help much. But what could possibly deter a hardcore programmer from going down to the low levels of computing?
B: I know, if we can make it so that this low level coding will look 'dangerous' in some way!
A: Brilliant idea, but how?
D: I suppose it would be ok to just encapsulate or prefix this code using some keyword. Not sure what though.
B: Couldn't we just use 'dangerous'?
C: Nah, no point in having it so long. That's just inconvenient.
B: What about just 'unsafe'?
A: I like your thinking there. 'unsafe' it is.
D: OK, isn't there going to be a lot of extra work involved in making the compiler able to check all these special pieces of 'unsafe' code that I thought this language wasn't intended to use?
A: Yes, but if you think about it, the people who will be using this stuff are much less likely to make mistakes! What's the point in checking it at all. We can just compile it like in C++ and just let it be.
C: But obviously, people of less experience will be able to use it by just copying code from better people. This isn't going to stop or deter them using it at all! And then they will wonder what has gone wrong when their programs crash through unexpectedly through no fault of their own.
B: I know! All we need is to stop this code being compiled by default and bring up an error on it right away. So if their programs don't work it is because they have allowed this potentially unsafe code to be compiled, therefore it is their own fault, and that covers the integrity of our language too.
A: So how are we going to make it so that the code will be compiled when needs to be?
D: Oh that's easy, we just need to add a compiler option, like... '/unsafe'
A: Oh yes, of course. Well, all this stuff is gold. This language is going to be the best ever! Now we just need to make sure we have solved all the problems that exist in other languages and C# will be supreme.
C: You absolutely sure about this?
A: How dare...
D: I think I speak for everybody here: can we go and get coffee now?
A: A grand idea. We've got through a lot right now. Well done. We deserve a break.
C: But I hate coffee.
A: Really? Shocking. It's ok though, we have tea.
C: Umm... sigh...


Wow 'unsafe' is #1 in Google as in the C# definition from the MSDN, rather than the English word itself from Answers.com. That must mean people use it A LOT. (#3 was an episode from Smallville. This has got to be one of the worst google searches I have ever done...) This for me is solid evidence that people do in fact want to have low level access at least sometimes for software running specifically on one OS, whatever suitable language they may be programming in.


Now onto other matters:
memory management is a huge source of mistakes and complexity and I'd just as soon avoid doing it as much as possible...
Well, I could just call you lazy, but that would be far too silly. It's not like people have time to fuss themselves with unnecessary details about memory locations, and how much data a program uses. Why do that when your language can do it all for you?

But you are missing many vital points. With complete control over your memory, you can access your data in any way you like and stop your compiler from wasting time doing stupid things behind your back. You don't need to think about how your language handles data or how much it uses. You already know that.

And you are also missing out on a whole lot of fun using HLLs. For example, self-modifying code. Imagine how efficient, adaptable, cool or hilarious programs could be if you were able to modify the code while it was in memory, and how easy it would be to totally confuse hackers who are trying to understand your disassembled code! This stuff is all possible, but not with HLLs. This is what makes low-level programming so great.

In a horribly twisted quote: 'I need assembly codes. They are the only thing that keep me insane."


</rant>
Captain Segfault
Posts: 67
Joined: Sat May 05, 2007 6:11 pm
Location: San Carlos, CA
Contact:

Post by Captain Segfault »

ShardFire wrote:
Captain Segfault wrote:C# does have pointers, but you have to declare sections of your code "unsafe" to use them.
Wow, that made me laugh. Really? I'd love to hear their definition of safe in this context.
In all seriousness, wrapping pointer usage in an "unsafe" block lets programmers call C functions while allowing some strong guarantees about non-unsafe code. You can safely run "safe" code in a sandbox, but arbitrary pointer usage would let the program p0wn the runtime and break out.

Note that it's theoretically impossible ("RE-hard") to prove that arbitrary pointer accesses will be safe.
Well, I could just call you lazy, but that would be far too silly. It's not like people have time to fuss themselves with unnecessary details about memory locations, and how much data a program uses. Why do that when your language can do it all for you?
You sound like an unholy cross between me a decade ago and me now making fun of me a decade ago. :-)
And you are also missing out on a whole lot of fun using HLLs. For example, self-modifying code. Imagine how efficient, adaptable, cool or hilarious programs could be if you were able to modify the code while it was in memory, and how easy it would be to totally confuse hackers who are trying to understand your disassembled code! This stuff is all possible, but not with HLLs. This is what makes low-level programming so great.
I understand someone did a masters thesis on a sort of object oriented self modifying code design. I don't think it really caught on...
Post Reply