Figuring out how a program works menu

Shout-Out

User Tag List

Results 1 to 10 of 10
  1. #1
    Fishy80's Avatar Contributor
    Reputation
    113
    Join Date
    Apr 2006
    Posts
    536
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Figuring out how a program works

    I'm wondering how people figure out how programs and systems work? for example...

    how does someone figure out how the blizzard authenticator system works, and program their own custom authenticator...

    or how do people find out exactly what warden was doing? (to make something like that warden watching program)

    no I don't actually want to do that, but I would love to know the process behind it... which skillset is needed? I'm assuming reverse engineering.. maybe programming to understand what your reading? both? is it as simple as attaching a debugger and then... well I dunno, I've messed with ollydbg before, so I know that outputs some things, but is it just ollydbg and then understand what its saying?

    any suggested programs or tutorials? places to start? sorry if anything like this has been asked already or if it seems like a stupid question, I just really don't know...

    Thanks for the user bar MysterioussouL!

    Figuring out how a program works
  2. #2
    chaddiablo's Avatar Member
    Reputation
    6
    Join Date
    May 2009
    Posts
    117
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Try spy++ . It comes with microsoft visual studio. I do not know how ever if you can get separate.
    Spy++ looks at the window/process and it reads it out to see what that window/process is doing.

  3. #3
    DarkLinux's Avatar Former Staff
    CoreCoins Purchaser Authenticator enabled
    Reputation
    1627
    Join Date
    May 2010
    Posts
    1,846
    Thanks G/R
    193/539
    Trade Feedback
    16 (100%)
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)
    IDA Pro + XRAY
    Just look at The Pirate Bay . org

    You Will find a free copy...

  4. #4
    Carebear's Avatar Member
    Reputation
    1
    Join Date
    May 2007
    Posts
    28
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Olly debugger is the best way to go, but takes some time to learn.

  5. #5
    Fishy80's Avatar Contributor
    Reputation
    113
    Join Date
    Apr 2006
    Posts
    536
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Thank you guys, now I do have somewhere to start =) and I do understand it a bit more now, makes sense =)

    time to hit the books =)

    Thanks for the user bar MysterioussouL!

  6. #6
    kixer's Avatar Master Sergeant
    Reputation
    34
    Join Date
    May 2010
    Posts
    78
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Disclaimer: This is my point of view.

    There are two main programming languages used on PCs today used for the "runnable programs". C and it's successors (C, C++, C#) and Java. C, C++ translate (compile) the program to bytecode (let's call this one native code) - set of instructions interpreted by CPU. C# and Java translate the program to another program (let's call this one bytecode), that is interpreted by a Virtual Machine (.Net or Java VM) - this is similar to CPU, the VM just translates the bytecode to native code.

    To find out how program works:

    1) you have the source code and understand it - this is pretty straight forward
    2) you have the bytecode and a decompiler - this is very easy option. The current languages are well structured and there are many decompilers that will translate the bytecode or machine code back to the program in C, C++, C# or Java. I prefer this option. Works best with Java.
    3) you have the bytecode and understand it - not many people understand the bytecode
    4) you understand the native code - you can view the program in some dissasembler, that will show you the exact instructions interpreted by CPU. You can also hook such program to currently running program in memory. You will also see it's open handlers (like which file/library is it using) and memory range that it is addressing.

    You can call 2,3 and 4 reverse engineering.

    Where to start

    I am not sure what is the best approach to start understanding programs. I've followed this path:

    0) learned BASIC and ZX80 assembler (language of the native code instructions) myself. This is pretty much useless now, but I can figure out the native code of the today's processors more or less (but I don't do that).

    1) very easy procedural programming language that looks similar to english - in my case this was Pascal (useless again), but you can start with lua, this is used in many games to alter their behaviour.

    2) usefull procedural language - in my case that was C/C++

    2.5) Haskell and Prolog at the University...

    3) OOP (object oriented programming) language - in my case this was Java, the money maker...

    4) scripting languages, very popular today. I've learned groovy, python and lua (started this weekend )

    How Blizzard Authenticator works

    This one should be pretty easy. There exists a Java authenticator for mobile phones. Mobile phones use very simple Java and the Authenticator is quite a simple program itself. So what you can do is download the Java authenticator, unpack the java archives, decompile it to Java source code. The program usually misses some variable names, but overall looks much like the original. And then study it.

    All the modern languages looks pretty much the same, you won't make a mistake by learning any of them. If you want to perform reverse engineering, you should learn low-level stuff like assembler, C/C++, how memory allocation and addressing works and so on. You should learn the basics of operating system libraries, memory and file management.

    If you want to make money, go for C# (Windows) or Java (everything else).

  7. #7
    danielrhodea's Avatar Master Sergeant
    Reputation
    11
    Join Date
    Apr 2010
    Posts
    107
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    wow!!! I understood parts of this thread, but not all of it. I believe the person wants to know how you know what a program is doing / how it uses it's data by viewing it in a debugger. The answer is, with lots and lots of practice, downloading idapro and xray will probably confuse you, as will trying to learn 4-5 languages (as the last post suggests).

    I'd go with another option, learn the basics so get an understanding of asm and build a list of asm commands and what they do (so google mov ecx,0x50 for example), get a debugger like ollydbg, a hex editor like xvi32 and open up say wow.exe in ollydbg, then open a file in xvi, use an adt for example (conviniently forgetting extract the adt from the Mpq I know), then in ollydbg do a function search for the extension of the file, wow has countless %s.extensions, for finding specific file types, you can then follow the code copy and paste the asm and set about understanding it using google, forums and past experience.

    To be completely honest I have been doing this for a while now and I've nearly given up trying to understand wow (it works on a rolling-release system so stuff keeps on changing, what you learn this week will be outdated in a month or so's time), it also means you'll need to look at the data instructions are operating on, so you may need to dump the programs memory a few times, check the registers, flags etc, it's one massive headache and if you simply want to do a few edit's it can be best to join a group of like-minded gamers

  8. #8
    Dragonef22's Avatar Contributor
    Reputation
    178
    Join Date
    Jan 2011
    Posts
    252
    Thanks G/R
    0/3
    Trade Feedback
    4 (100%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Short:

    there are programs to read packets =) with some skills your able to understand how it works

  9. #9
    Sychotix's Avatar Moderator Authenticator enabled
    Reputation
    1441
    Join Date
    Apr 2006
    Posts
    3,999
    Thanks G/R
    294/585
    Trade Feedback
    1 (100%)
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Dragonef22 View Post
    Short:

    there are programs to read packets =) with some skills your able to understand how it works
    um.... no. Packets are only showing you it interactions with external servers, not how the program itself works.

    And you bumped something from 4 weeks ago.

  10. #10
    Dragonef22's Avatar Contributor
    Reputation
    178
    Join Date
    Jan 2011
    Posts
    252
    Thanks G/R
    0/3
    Trade Feedback
    4 (100%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Sychotix View Post
    um.... no. Packets are only showing you it interactions with external servers, not how the program itself works.

    And you bumped something from 4 weeks ago.
    You might be right

    Sorry for bumping this old thread, didn´t realize it, won´t happen again I guess

Similar Threads

  1. Figured out how to open more than 1 Diablo 3 Game
    By Sharkown in forum Diablo 3 General
    Replies: 14
    Last Post: 06-14-2012, 03:31 PM
  2. Epic exploit, but can't figure out how to repeat
    By hpdark in forum World of Warcraft General
    Replies: 7
    Last Post: 03-14-2011, 08:49 AM
  3. [Help]Can't figure out how to update models.
    By Babek in forum WoW ME Questions and Requests
    Replies: 1
    Last Post: 10-27-2009, 02:53 PM
  4. I cannot figure out how to use a Model Changer!
    By Lolmodelchanger in forum WoW ME Questions and Requests
    Replies: 1
    Last Post: 04-26-2008, 09:13 PM
All times are GMT -5. The time now is 06:45 AM. Powered by vBulletin® Version 4.2.3
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Google Authenticator verification provided by Two-Factor Authentication (Free) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search