Deprecated: The behavior of unparenthesized expressions containing both '.' and '+'/'-' will change in PHP 8: '+'/'-' will take a higher precedence in /home/iano/public_html/tpforums-vb5/forum/includes/class_core.php on line 5842

PHP Warning: Use of undefined constant MYSQL_NUM - assumed 'MYSQL_NUM' (this will throw an Error in a future version of PHP) in ..../includes/init.php on line 165

PHP Warning: Use of undefined constant MYSQL_ASSOC - assumed 'MYSQL_ASSOC' (this will throw an Error in a future version of PHP) in ..../includes/init.php on line 165

PHP Warning: Use of undefined constant MYSQL_BOTH - assumed 'MYSQL_BOTH' (this will throw an Error in a future version of PHP) in ..../includes/init.php on line 165

PHP Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in ..../includes/functions_navigation.php on line 588

PHP Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in ..../includes/functions_navigation.php on line 612

PHP Warning: Use of undefined constant misc - assumed 'misc' (this will throw an Error in a future version of PHP) in ..../global.php(29) : eval()'d code(6) : eval()'d code on line 1

PHP Warning: Use of undefined constant index - assumed 'index' (this will throw an Error in a future version of PHP) in ..../global.php(29) : eval()'d code(6) : eval()'d code on line 1

PHP Warning: Use of undefined constant misc - assumed 'misc' (this will throw an Error in a future version of PHP) in ..../includes/class_bootstrap.php(1422) : eval()'d code(4) : eval()'d code on line 1

PHP Warning: Use of undefined constant index - assumed 'index' (this will throw an Error in a future version of PHP) in ..../includes/class_bootstrap.php(1422) : eval()'d code(4) : eval()'d code on line 1

PHP Warning: Use of undefined constant onlinestatusphrase - assumed 'onlinestatusphrase' (this will throw an Error in a future version of PHP) in ..../includes/class_core.php(4684) : eval()'d code on line 6

PHP Warning: Use of undefined constant onlinestatusphrase - assumed 'onlinestatusphrase' (this will throw an Error in a future version of PHP) in ..../includes/class_core.php(4684) : eval()'d code on line 6

PHP Warning: Use of undefined constant onlinestatusphrase - assumed 'onlinestatusphrase' (this will throw an Error in a future version of PHP) in ..../includes/class_core.php(4684) : eval()'d code on line 6

PHP Warning: Use of undefined constant onlinestatusphrase - assumed 'onlinestatusphrase' (this will throw an Error in a future version of PHP) in ..../includes/class_core.php(4684) : eval()'d code on line 6

PHP Warning: Use of undefined constant onlinestatusphrase - assumed 'onlinestatusphrase' (this will throw an Error in a future version of PHP) in ..../includes/class_core.php(4684) : eval()'d code on line 6

PHP Warning: Use of undefined constant onlinestatusphrase - assumed 'onlinestatusphrase' (this will throw an Error in a future version of PHP) in ..../includes/class_core.php(4684) : eval()'d code on line 6

PHP Warning: Use of undefined constant onlinestatusphrase - assumed 'onlinestatusphrase' (this will throw an Error in a future version of PHP) in ..../includes/class_core.php(4684) : eval()'d code on line 6

PHP Warning: Use of undefined constant onlinestatusphrase - assumed 'onlinestatusphrase' (this will throw an Error in a future version of PHP) in ..../includes/class_core.php(4684) : eval()'d code on line 6

PHP Warning: Use of undefined constant onlinestatusphrase - assumed 'onlinestatusphrase' (this will throw an Error in a future version of PHP) in ..../includes/class_core.php(4684) : eval()'d code on line 85

PHP Warning: Use of undefined constant onlinestatusphrase - assumed 'onlinestatusphrase' (this will throw an Error in a future version of PHP) in ..../includes/class_core.php(4684) : eval()'d code on line 6

PHP Warning: Use of undefined constant onlinestatusphrase - assumed 'onlinestatusphrase' (this will throw an Error in a future version of PHP) in ..../includes/class_core.php(4684) : eval()'d code on line 6
OllyDbg Tutorial: Updating Addresses - Page 2
Page 2 of 3 FirstFirst 123 LastLast
Results 11 to 20 of 28

Thread: OllyDbg Tutorial: Updating Addresses

  1. #11

    RE: OllyDbg Tutorial: Updating Addresses

    God damn it, can't someone ever describe thing more deeply?
    This tutorial, as mosts, do this, do that, remember how to do it next time - but don't learn anything philosophical about it.
    And thus, if you encounter a different problem, you'll have to look through another tutorial for that specific problem, and so it goes on... Really stupid.

    Either that, or this tutorial is mixing feeding-child-with-spoon-terms and insinuations, and technical terms, just to confuse the reader (me in this case).

    It's a known phenomena btw. Go read reviews of books on amazon, and you'll see that the books concerning technical issues (teaching something) with a high rating, is commented by people that it is insightfull philosophically, that it teaches you to think like a technician, rather than being told what to do cluelessly.
    This is also how our educational system works: learn (memorize) these math formulas and these historical facts, don't question it, and you win.

    I guess I should rather search for "game memory address tutorials BIG PICTURE" next time :P
    And I'm happy for all of those whom this tutorial worked for, and excuse my poor criticism.

  2. #12
    Senior Member
    Join Date
    Mar 2007
    Posts
    1,323

    RE: OllyDbg Tutorial: Updating Addresses

    Yeah, you're right. This tutorial isn't about game's memory. It's about how to update addresses. I've assumed that the reader knows how memory looks like already. But if you're struggling with that I'd point you to read a good tutorial about pointers. Once you're familiar with pointers (for example in C/C++) you also understand how memory works inside a computer.

    Thanks for the feedback! I haven't wrote that much tutorials nor articles in english but I keep your points in mind. Probably I should try to work my style to more professional way instead of trying to descripe everything out.

  3. #13

    RE: OllyDbg Tutorial: Updating Addresses

    I wanna state at once that my feedback were more the necessity of releasing personal frustration, not specific and professional critics.
    I might have a point, but it's not that specific and not necessarily criticising the tutorial alone.
    Rather, what I am criticising at minimum, is that the article doesn't state/warn in the start already who this article is for.
    Also, this article was linked from another thread in context that this was a tutorial to "find pointers" beyond numerical values (HP, Mana, Skills, Positions), such as the map pointer.
    It's me personally that are requesting "more professional" articles as you call it, or "big picture"ish tutorials, I'm though sorry interfering with the community at large (even though I did comment exactly that) - that mosts here might find it usefull.

    I'm just frustrated rarely to find the good tutorials; one may only use these tutorials (such as this one) to find the software and some basics to explore oneself, spending hours, days, reading Wiki/documentation, I'm just a "lazy" person: I have better things to do.
    I'm personally a philosopher, but I also got too much sparetime at the moment, but not enough to spend large amounts of not only time, but also energy on learning to find pointers in games.

    Nevertheless, excuse my temper and personal issues. I'm glad if/that you appreciated the feedback (:

  4. #14

    RE: OllyDbg Tutorial: Updating Addresses

    Quote Originally Posted by petitcoeur
    Quote Originally Posted by Dark Fire
    I'm just frustrated rarely to find the good tutorials
    Nice! Then you can start making some nice ones right?
    The fact that I'm frustrated not "finding a good tutorial", means I'm probably searching for a tutorial to learn what the tutorial should contain, and thus I can't make a tutorial about it as I haven't learned it.
    Second: the saying "if you think it's bad, then go do a better job" doesn't apply to everything, it's a general saying for people not to be hypocrite.
    I can't spend 5 years educating myself to become a doctor just because the field researchers in medicine makes poisonus/toxic vaccines, when I am dedicated to philosophy.
    I don't have the time as a human being, to fix the entire world, even if I could with infinite time: I don't have that. So I'm alloweed to criticise and have an opinion even though I'm not completely educated on the field; you don't have to be a rocket scientist to realize when a rocket crashes to the ground - you sense that something went wrong even though ignorant to the technical details.
    Another analogy: eating food in a restaurant; you may complain that you don't like the food even though you can't make the food yourself.
    You can't complain about the chef not being able to make food! just that you didn't fully enjoy the food, in comparison with what your body needs or what you have eaten from other chefs.
    This feedback is not only important for the custommers (and yourself) for your health, but perhaps the chef would appreciate the criticism as well.

  5. #15
    Junior Member
    Join Date
    Jul 2007
    Posts
    23

    RE: OllyDbg Tutorial: Updating Addresses

    I really appreciate your work, but I must mention that I am a little disappointed.
    Why?
    "OllyDbg Tutorial", looked very interesting! xD First lines: awesome,
    information about updating mappointer address, I thought: "nice!",
    but... you have explained only updating addresses by comparing old ones to newer ones,
    I do it using command sequences, which are deeper explained in ollydbg help, for example for any memory definition we can use keyword [ANY],
    for any 32-bit register, for example: EAX, ESI, etc. we can use keyword R32.
    That makes finding the same code parts really easy, it is like regexp.
    I am not an advanced ollydbg user, I do not even know asm well, but the first thing I did after running ollydbg was finding a methods to get part of code which may be using tottaly diferent addresses, but is doing the same.
    so for example:
    Code:
    MOV EAX,0
    ADD EAX,10
    MOV DWORD PTR DS:[6234D8],EAX
    MOV EAX,DWORD PTR DS:[6234D8]
    can be found by looking for command sequence
    Code:
    MOV R32,0
    ADD R32,10
    MOV [ANY],R32
    MOV EAX,CONST
    I love both regexpes and sequences of commands due to its flexibility.

    What I expected to read in the text was finding by only yourself how to obtain any Tibia (or other game) feature without knowing anything about it. I expected tutorial more like this one (zezenia spy level), not only explaining how to follow step-by-step and achieve the goal.

    I am not the wisest guy here, but I am learning since for a few days for now ollydbg etc., if someone has any questions, feel free to ask me by msn or email, which can be found in my profile. xD

  6. #16

    RE: OllyDbg Tutorial: Updating Addresses

    Quote Originally Posted by test30
    I really appreciate your work, but I must mention that I am a little disappointed.
    Why?
    "OllyDbg Tutorial", looked very interesting! xD First lines: awesome,
    information about updating mappointer address, I thought: "nice!",
    but... you have explained only updating addresses by comparing old ones to newer ones,
    I do it using command sequences, which are deeper explained in ollydbg help, for example for any memory definition we can use keyword [ANY],
    for any 32-bit register, for example: EAX, ESI, etc. we can use keyword R32.
    That makes finding the same code parts really easy, it is like regexp.
    I am not an advanced ollydbg user, I do not even know asm well, but the first thing I did after running ollydbg was finding a methods to get part of code which may be using tottaly diferent addresses, but is doing the same.
    so for example:
    Code:
    MOV EAX,0
    ADD EAX,10
    MOV DWORD PTR DS:[6234D8],EAX
    MOV EAX,DWORD PTR DS:[6234D8]
    can be found by looking for command sequence
    Code:
    MOV R32,0
    ADD R32,10
    MOV [ANY],R32
    MOV EAX,CONST
    I love both regexpes and sequences of commands due to its flexibility.

    What I expected to read in the text was finding by only yourself how to obtain any Tibia (or other game) feature without knowing anything about it. I expected tutorial more like this one (zezenia spy level), not only explaining how to follow step-by-step and achieve the goal.

    I am not the wisest guy here, but I am learning since for a few days for now ollydbg etc., if someone has any questions, feel free to ask me by msn or email, which can be found in my profile. xD

    Thank you for sharing it with us

  7. #17

    RE: OllyDbg Tutorial: Updating Addresses

    what about a function address? it's not working to me, i got item not found, so if i put ctrl+g and the address of the function and copy the ASM code from the addres and search for it on the other version, it's the correct way?

    i want to update petitcoeur integrated GUI code from 8.61 to 8.54

  8. #18

    RE: OllyDbg Tutorial: Updating Addresses

    You are probably copying ASM code with a constant unique to that Tibia version.

    EG If you copy the CALL 0x69696969 or whatever, it wont work because 0x69696969 is the address in ver1 while it will be different in ver2.
    Come on people, use some fucking common sense, lol.

  9. #19

    RE: OllyDbg Tutorial: Updating Addresses

    i know what's wrong, i just want to know the right way.

  10. #20

    RE: OllyDbg Tutorial: Updating Addresses

    you are noob, seriously

    i don't even know if you deserve this cause you are so noob

    [code=cpp]// GUI
    const DWORD PrintName = 0x4F0993;
    const DWORD PrintTextAddress = 0x4B0550;
    const DWORD DrawItemAddress = 0x4B1110;
    const DWORD DrawSkinAddress = 0x4B4DA0;
    const DWORD PrintFps = 0x459AC8;
    const DWORD ShowFps = 0x633BB4;
    const DWORD NopFPS = 0x459A04;
    const DWORD GetTextWidthAddress = 0x4AE370;
    const DWORD DirectX5DrawRectAddress = 0x51F640;
    const DWORD DirectX9DrawRectAddress = 0x528B90;
    const DWORD OpenGLDrawRectAddress = 0x536B50;
    const DWORD PrepareDrawRectAddress = 0x51D6B0;
    const DWORD GraphicEngineModeAddress = 0x792238;

    //Sockets addresses
    const DWORD RecvPointer = 0x5B25DC;
    const DWORD SendPointer = 0x5B2608;
    const DWORD XTeaKey = 0x78F7EC;

    //Character information
    const DWORD Exp = 0x635F04;
    const DWORD HP = Exp + 8;
    const DWORD Mana = Exp - 20;[/code]

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •