1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. MapleStory Europe has migrated to MapleStory Global! This section is readonly now.
    Dismiss Notice

Europe [REQ] TUT for updating db's in script?

Discussion in 'Discussion' started by Scum 5436, Aug 16, 2010.

  1. Scum 5436

    Scum 5436 Banned Banned

    Can't seem to find a tut for this anywhere ><
    and it's pretty much the only thing I can't do with updating scripts ><
    Link to tut/posted tut itself is apreciated :F9:
     
  2. Azunyan

    Azunyan Active Member

    They usually don't change.
     
  3. Scum 5436

    Scum 5436 Banned Banned

    When they do I'd like to know how to update xD
     
  4. Siobhan

    Siobhan New Member

    db, dw, dd, dq. Declare byte, word, double word, quad word (think of it as a memory patch, not code).

    "db 90" for example is the same as "nop"
    "db e9 xx" is the same as "jmp forward xx bytes" (eip + xx, I think actually)

    So the xx can change if something is inserted in the code (between here and where you want to jump) but you still might want to change the jump mnemonic without changing the offset value, then you just overwrite it with using db.

    Use Cheat Engine to see what it is/was/should be, and change your script.
    If its only something small, like a relative jump that has changed it should be easy. If its more than its probably useless anyway.
     
  5. Scum 5436

    Scum 5436 Banned Banned

    Ahh I see, thanks :P
     
  6. Ant3

    Ant3 Well-Known Member

    I post this, even cause Siobhan already posted an answer - better with 2 answers than 0...

    So, here I got the old (now crashing) Jump Down Anywhere script that I want to update:
    Code (Text):
    1.  
    2. [enable]
    3. 007C740E:
    4. db 90 90 90 90 90
    5. [disable]
    6. 007C740E:
    7. db E8 CA 04 0D 00
    8.  
    E8 = means it's a call.
    90 = nop (as Siobhan already said)

    When this is updated iit would look like this:
    Code (Text):
    1.  
    2. [enable]
    3. 008AE122:
    4. db 90 90 90 90 90
    5. [disable]
    6. 008AE122:
    7. db e8 e4 6b 0f 00
    8.  
    How would I know the bytes? As simple as this:
    http://img62.ImageShack is toxicus/img62/9338/bytesp.png
    Also you can see that if you put the Bytes together, you will get Arrary of Bytes (AOBs).
    You may aswell notice that all bytes says what the op-code is.
    E8 = call (as I already mentioned)
    50 = push eax
    51 = push ecx
    et cetera.
     
  7. Siobhan

    Siobhan New Member

    Ooooh pictures. Good job Ant3.

    Anyway just as Ant explained;
    Code (Text):
    1. db e8 e4 6b 0f 00
    e8 means that it is a call and the other 4 numbers are the offset, which means that it could also be written as
    Code (Text):
    1. db e8
    2. dd 000f6be4
    In byte form its written backwards because Intel is weird and likes to use little endian. Anyway the point is that when making AOB's the offset values for jumps and calls are likely to change almost randomly which is why you switch these with ?'s when you search in cheat engine.

    Usually instructions are made up of a byte which is which instruction it is, a byte which describes which registers are used followed by various offsets and immediate values.
     

Share This Page