|
Thread Rules 1. This is not a "do my homework for me" thread. If you have specific questions, ask, but don't post an assignment or homework problem and expect an exact solution. 2. No recruiting for your cockamamie projects (you won't replace facebook with 3 dudes you found on the internet and $20) 3. If you can't articulate why a language is bad, don't start slinging shit about it. Just remember that nothing is worse than making CSS IE6 compatible. 4. Use [code] tags to format code blocks. |
On February 28 2012 13:29 heroyi wrote: I was wondering if anyone can give me a quick run down (just a general idea) of how one is able to reverse engineer a software (or how to be able to see the coding to it). I am interested in hacking NOT cracking.
do you just use some sort of decompiler and from the result do you just go and play around with the coding? Or is it more of you looking at the code and trying to find holes that you can try to exploit?
i am still new to the whole programming world. I am an aspiring programmer xD sry for my noobines
edit: I am currently learning c++ and lets assume the program I am trying to hack uses C or C++ I don't know much about how to in a very skilled manner... I do know however that you can compile your own code and check out the generated assembly. With GCC you can use on the command line "gcc -c -S filename.c", and that will make a text file to check out the assembly code generated from your written code.
You can also try a dissassembler to take an EXE and transform it into assembly code. However I think this would be really messy, as compilers do a lot of heavy and tricky optimization that makes for very unreadable assembly.
So from what little I know, you'll likely need to be able to work proficiently with very low-level assembly.
|
On February 28 2012 13:29 heroyi wrote: I was wondering if anyone can give me a quick run down (just a general idea) of how one is able to reverse engineer a software (or how to be able to see the coding to it). I am interested in hacking NOT cracking.
do you just use some sort of decompiler and from the result do you just go and play around with the coding? Or is it more of you looking at the code and trying to find holes that you can try to exploit?
i am still new to the whole programming world. I am an aspiring programmer xD sry for my noobines
edit: I am currently learning c++ and lets assume the program I am trying to hack uses C or C++
You'll need a bit more knowledge about general computer arthitecture and how a program exists and runs in memory before you can do this.
These are by no means complete, but should point you in a good direction.
http://en.wikipedia.org/wiki/Computer_architecture http://en.wikipedia.org/wiki/Machine_code http://en.wikipedia.org/wiki/Disassembly
|
On February 28 2012 15:42 Pawsom wrote:Show nested quote +On February 28 2012 13:29 heroyi wrote: I was wondering if anyone can give me a quick run down (just a general idea) of how one is able to reverse engineer a software (or how to be able to see the coding to it). I am interested in hacking NOT cracking.
do you just use some sort of decompiler and from the result do you just go and play around with the coding? Or is it more of you looking at the code and trying to find holes that you can try to exploit?
i am still new to the whole programming world. I am an aspiring programmer xD sry for my noobines
edit: I am currently learning c++ and lets assume the program I am trying to hack uses C or C++ You'll need a bit more knowledge about general computer arthitecture and how a program exists and runs in memory before you can do this. These are by no means complete, but should point you in a good direction. http://en.wikipedia.org/wiki/Computer_architecturehttp://en.wikipedia.org/wiki/Machine_codehttp://en.wikipedia.org/wiki/Disassembly so..if say I wanted to hack windows 7 (or w.e software) I would just activate disassembly program and it would show me the assembly language? And I guess from there you can read the assembly and work there (if you can read and work with assembly?
edit: I am somewhat familiar with the idea of compilers to assembly to machine. edit: 2 --> I was wondering how one would go about and try to learn some concept of programming. I guess I am asking where does one go and learn how the compiler works. I am interested to know so that I can try to learn and have more fun coding instead of fighting the code and being fearful whenever I have to change something and risk the chance of having cascading error reports...
|
you block out errors by having a test suite for your program that just tells you if some change of your code broke some piece of functionality somewhere else. That's the right way of getting rid of the "i'm gonna break everything and not notice it until errors fly around everywhere if i change something" fear.
Learning how a compiler works can either be done through reading books on the topic, attending one or several lectures, or even just internet-study by reading wikipedia and linked sources. But learning how a compiler works doesn't really help to prevent you from writing down syntax errors. you have to just do some coding and you'll learn over time which compile errors are the causes and which are consequences. A good example is php, where, if you forget a semicolon at the end of a line, you get a syntax error in the next line, that the compiler/parser doesn't know how to handle the first literal in that line. You are weirded out by that five to ten times, but then you learn to just check for the semicolon in the previous line first whenever you get a "unexpected literal" message somewhere in your code. You really can't learn that through general compiler knowledge.
|
I'm surprised this hasn't been posted sooner... but !!!!!!!!!!!!!!!!!!!!!!!!
So psyched.
Some context: $35 computer. Yes, it's too slow to run WoW on. No, it won't quite fit into an Altoids can. But it's still AMAZING.
|
Does anyone here have any Gamebryo experience? I'm trying to set it up to link with VS2010 on a fresh computer. I've linked additional dependencies etc, but apparently I should have an installer or something with my gamebryo folder, which simply isn't there D:
Not really looking for precise help obviously, I was just wondering if anyone with more than my 3 months of experience with the engine could point me in the direction of an actual forum for the programming side that isn't dead/all shader tuts 
EDIT License is through campus/educational. A lot of people across the years have had issues installing it on non-networked computers (i.e. off-campus). However in all these cases there has been a setup exe which generates the actual filepaths required to include the gamebryo libraries. It seems that adding the local paths manually into dependencies doesn't do the trick...
Are you suggesting I try re-downloading directly onto the computer? I'd have to check but I'm not sure if I'd be personally licensed to do that.
|
|
On February 28 2012 19:06 MisterD wrote: you block out errors by having a test suite for your program that just tells you if some change of your code broke some piece of functionality somewhere else. That's the right way of getting rid of the "i'm gonna break everything and not notice it until errors fly around everywhere if i change something" fear.
Learning how a compiler works can either be done through reading books on the topic, attending one or several lectures, or even just internet-study by reading wikipedia and linked sources. But learning how a compiler works doesn't really help to prevent you from writing down syntax errors. you have to just do some coding and you'll learn over time which compile errors are the causes and which are consequences. A good example is php, where, if you forget a semicolon at the end of a line, you get a syntax error in the next line, that the compiler/parser doesn't know how to handle the first literal in that line. You are weirded out by that five to ten times, but then you learn to just check for the semicolon in the previous line first whenever you get a "unexpected literal" message somewhere in your code. You really can't learn that through general compiler knowledge. Hey I just read your post.
So I guess in the software field experience is more valuable? If I run into a error, I'll just have to go "google" it out and remember not to make that same mistake?
|
On February 28 2012 22:02 CellGel wrote:Does anyone here have any Gamebryo experience? I'm trying to set it up to link with VS2010 on a fresh computer. I've linked additional dependencies etc, but apparently I should have an installer or something with my gamebryo folder, which simply isn't there D: Not really looking for precise help obviously, I was just wondering if anyone with more than my 3 months of experience with the engine could point me in the direction of an actual forum for the programming side that isn't dead/all shader tuts EDIT License is through campus/educational. A lot of people across the years have had issues installing it on non-networked computers (i.e. off-campus). However in all these cases there has been a setup exe which generates the actual filepaths required to include the gamebryo libraries. It seems that adding the local paths manually into dependencies doesn't do the trick... Are you suggesting I try re-downloading directly onto the computer? I'd have to check but I'm not sure if I'd be personally licensed to do that. I've never worked in Gamebryo, but I have worked in other game engines, so hopefully this will help.
Your DLL's need to go into the lib folder in the visual studios SDK directory. Any .h files need to go in the Headers folder in the same directory. At least some of the DLL's must also go into System 32. Last, if you're on a 64 bit OS, they need to go into SysWow as well.
Hope that helped.
|
On February 28 2012 15:42 heroyi wrote:Show nested quote +On February 28 2012 15:42 Pawsom wrote:On February 28 2012 13:29 heroyi wrote: I was wondering if anyone can give me a quick run down (just a general idea) of how one is able to reverse engineer a software (or how to be able to see the coding to it). I am interested in hacking NOT cracking.
do you just use some sort of decompiler and from the result do you just go and play around with the coding? Or is it more of you looking at the code and trying to find holes that you can try to exploit?
i am still new to the whole programming world. I am an aspiring programmer xD sry for my noobines
edit: I am currently learning c++ and lets assume the program I am trying to hack uses C or C++ You'll need a bit more knowledge about general computer arthitecture and how a program exists and runs in memory before you can do this. These are by no means complete, but should point you in a good direction. http://en.wikipedia.org/wiki/Computer_architecturehttp://en.wikipedia.org/wiki/Machine_codehttp://en.wikipedia.org/wiki/Disassembly so..if say I wanted to hack windows 7 (or w.e software) I would just activate disassembly program and it would show me the assembly language? And I guess from there you can read the assembly and work there (if you can read and work with assembly? edit: I am somewhat familiar with the idea of compilers to assembly to machine. edit: 2 --> I was wondering how one would go about and try to learn some concept of programming. I guess I am asking where does one go and learn how the compiler works. I am interested to know so that I can try to learn and have more fun coding instead of fighting the code and being fearful whenever I have to change something and risk the chance of having cascading error reports...
You've asked two unrelated questions.
The answer to your first question is to learn how to read, understand, and write assembly. Most of the hacking you see is someone busting out a hex editor against a target and reverse engineering what the code does. You cannot do this without pretty solid knowledge of how assembly works on the target platform (probably x86). Once you understand assembly you can then start working your way backwards and understanding more complex concepts like calling conventions and picking out standard conventions/optimizations that will lead you to believe certain things are going on.
The answer to your second question is to actually read the specifications of the language/compiler you're using and stop guessing at things. You're afraid of breaking things because you don't grasp what you don't know. Your ancillary question about learning how compilers work is a lot more simple: to learn how compilers work you would want to research compilers.
If you want a free working draft of the C++11 standard (there are a couple of problems, but it's more or less OK outside of constexpr and noexecpt) you can download this: http://open-std.org/JTC1/SC22/WG21/docs/papers/2011/n3242.pdf
Otherwise I'd suggest it might even be more beneficial to work through Bjarne's book on C++: http://www.amazon.com/Programming-Language-3rd-Bjarne-Stroustrup/dp/0201889544
Keep in mind those aren't really good ways to teach yourself C++ in most cases, but they are amazing references. If you need to know how something works or the desired outcome based on inputs then those are going to answer whatever question you have.
Lastly, making errors and fixing them is the best way to learn. Stop being afraid to screw things up.
|
On February 29 2012 01:44 heroyi wrote:Show nested quote +On February 28 2012 19:06 MisterD wrote: you block out errors by having a test suite for your program that just tells you if some change of your code broke some piece of functionality somewhere else. That's the right way of getting rid of the "i'm gonna break everything and not notice it until errors fly around everywhere if i change something" fear.
Learning how a compiler works can either be done through reading books on the topic, attending one or several lectures, or even just internet-study by reading wikipedia and linked sources. But learning how a compiler works doesn't really help to prevent you from writing down syntax errors. you have to just do some coding and you'll learn over time which compile errors are the causes and which are consequences. A good example is php, where, if you forget a semicolon at the end of a line, you get a syntax error in the next line, that the compiler/parser doesn't know how to handle the first literal in that line. You are weirded out by that five to ten times, but then you learn to just check for the semicolon in the previous line first whenever you get a "unexpected literal" message somewhere in your code. You really can't learn that through general compiler knowledge. Hey I just read your post. So I guess in the software field experience is more valuable? If I run into a error, I'll just have to go "google" it out and remember not to make that same mistake? experience is almost invaluable in any field, same for software engineering. Sure it helps a ton if you have brains and good intuition and are a fast learner, you can gain experience quickly that way, but you still need it. When you start, you will inevitably run into the most stupid of issues and often enough probably not solve them by asking google, but rather making a helpless post ^^ everybody does that. But with growing experience, you increase your working effectiveness thousandfold.
The good thing to achieve is to get a kind of intuition on how to use something or what's actually wrong when you get error message X. How you gain such knowledge and intuition probably depends a lot on what kind of learner you are? I'm not very good at explaining this. I usually get pretty accommodated to coding environments (be it a framework or a language/compiler) rather fast, but i can't really explain how. Just know that you will write horrible code at any point in time. it's like normal life (at least for me): when you think back about what you did half a year or maybe two years ago, you just can't help but thinking "wow i was an idiot back then!"
But well, everyone has to start. So i guess just go for it and always try to understand what went wrong so you gain knowledge the fastest i guess? i'm really not old enough for wise words ;p
|
I'd say that theoretical knowledge is a good foundation. An undergraduate CS course covers pretty much everything you'll ever see in a real-life situation, plus some. After that, it's a matter of learning how to talk to clients and figuring out what they actually want you to do (instead of what they claim they need you to do), and googling for a library that implements X algorithm in the language you're using.
(At least, that's how it's been for me in my first year as a developer.)
|
well either you are exceptionally good or you just haven't noticed what kinds of bullshit you are designing :D sure, you can do designs, but doing good designs without experience is near impossible imo. At least no-one i know can do that, including myself.
|
Anyone Here good with CSS?
|
I did write some pretty ugly code for the first few months, went back and refactored them afterwards, but the basic approach was solid.
Example: Make a secure login/account control system.
I know that we'll need TLS for secure transmission of data. I know that passwords shouldn't be stored in plaintext, and should be prohibitively difficult to crack even if both the DB and the WAS are pwned. One-way functions! Google for "one-way function password security", find that Blowfish is state of the art, and google for "blowfish java". This implementation transparently uses a salt, so I don't even need to think about how to use it, great! Done in two hours, most of which was reading up on how to set up JEUS (a Korean-brand version of Tomcat) to use TLS.
Apart from designing new systems, a theoretical base lets me recognize when an existing system is stupidly designed.
Example: I've was tasked with tacking on a few features to an existing site. Its 3 different controllers use an average of 80 "else if" statements to figure out what view to display. I change this out with a text file (MUCH easier to read) that is loaded into a hash map (faster execution) that is loaded upon web app start. (Only afterwards did I find out that Spring does this pretty automatically, but I wouldn't have had the time to port everything over to Spring anyways.)
My point is, you might end up re-implementing some things, but they won't be stupidly inefficient, and you'll easily recognize inefficiency when you see it.
|
On March 01 2012 11:46 FoxyMayhem wrote: Anyone Here good with CSS?
I'm good with CSS.
|
On March 01 2012 11:46 FoxyMayhem wrote: Anyone Here good with CSS?
Pretty good here myself, what do you need?
|
On March 01 2012 11:58 BottleAbuser wrote: I did write some pretty ugly code for the first few months, went back and refactored them afterwards, but the basic approach was solid.
Example: Make a secure login/account control system.
I know that we'll need TLS for secure transmission of data. I know that passwords shouldn't be stored in plaintext, and should be prohibitively difficult to crack even if both the DB and the WAS are pwned. One-way functions! Google for "one-way function password security", find that Blowfish is state of the art, and google for "blowfish java". This implementation transparently uses a salt, so I don't even need to think about how to use it, great! Done in two hours, most of which was reading up on how to set up JEUS (a Korean-brand version of Tomcat) to use TLS.
Apart from designing new systems, a theoretical base lets me recognize when an existing system is stupidly designed.
Example: I've was tasked with tacking on a few features to an existing site. Its 3 different controllers use an average of 80 "else if" statements to figure out what view to display. I change this out with a text file (MUCH easier to read) that is loaded into a hash map (faster execution) that is loaded upon web app start. (Only afterwards did I find out that Spring does this pretty automatically, but I wouldn't have had the time to port everything over to Spring anyways.)
My point is, you might end up re-implementing some things, but they won't be stupidly inefficient, and you'll easily recognize inefficiency when you see it.
yes efficiency isn't all that hard when you've heard your share of lectures about runtime complexity. But good design is by far more than just efficiency. Reusability, extendability, but at the same time not overengineering it, you're pretty much bound to fail at all of those most of the time without the proper experience.
|
So, I learned C++ ages ago from this book. Pretty sure it was the oldest C++ specifications.
Since then I've dabbled in Java, Haskell and C# (mostly C#). I'm looking at going back and learning proper C in it's newest form (C11), but I'm not sure where to start. I don't want to buy a book (but you can make suggestions anyway if there's a book you really think I should look at, and I'll try to find a copy), but I'm looking to find somewhere that teaches proper C11 (I don't want to just jump into some C tutorial and find out later that it doesn't teach the most up to date C).
Basically, any suggestions on where to learn C that teaches C11, as opposed to any of the older variants?
|
Maybe someone can help me with this problem: Does anyone know if/how you can enable content assist in Eclipse CDT for included files that are not part of the standard libraries? Content assist works fine for functions like printf etc, but if I include other files like the OpenGL header, it doesn't work even though I have indexing enabled.
Edit: I think my Eclipse is somehow broken. Content assist doesn't even work for variables within the source file...
|
|
|
|