Announcement

Collapse
No announcement yet.

Hacking Sequential codes PSX

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Helder
    replied
    Originally posted by jin299 View Post
    l still don't understand for now I'll just forget about asm, would you call this code an easy one to hack in asm or did I just pick a bad example for an asm code?
    That's pretty easy in my opinion, maybe you can go over the things I've written and explained till you get it but if not then stick to the RAM codes.

    Originally posted by yo_gdg View Post
    helder, just a clarification; a Word is 4 bytes length (FFFFFFFF).
    Byte: 0-FF (8 bits)
    Half: 0-FFFF (16 bits)
    Word: 0-FFFFFFFF (32 bits)

    regards!

    Yes my bad! too late in the day for me ( just got off 12 hour night shift).

    Leave a comment:


  • yo_gdg
    replied
    Originally posted by helder View Post
    lw v1,$144(a1) <-- Load Word (word is 4 hex characters ie FFFF) from Register a1 added to 144 hexadecimal and store into Register v1.
    helder, just a clarification; a Word is 4 bytes length (FFFFFFFF).
    Byte: 0-FF (8 bits)
    Half: 0-FFFF (16 bits)
    Word: 0-FFFFFFFF (32 bits)

    regards!

    Leave a comment:


  • jin299
    replied
    l still don't understand for now I'll just forget about asm, would you call this code an easy one to hack in asm or did I just pick a bad example for an asm code?
    Last edited by jin299; 05-21-2013, 09:17:18 AM.

    Leave a comment:


  • Helder
    replied
    It means that what ever is at register a2 at that particular time will have that value of 0098967F but after the routines is done it will likely be overwritten with some other data. Registers hold data temporarily for that given routine and this is how you read instructions:

    lw v1,$144(a1) <-- Load Word (word is 4byte aka 32bit hex characters ie FFFFFFFF) from Register a1 added to 144 hexadecimal and store into Register v1.

    Basically it goes from right to left , and that is a pointer in case you didn't know. A pointer uses a base address stored in a Register in this case a1 and then you add a value $144 in this case as well and you get the address that belongs to a character (your character in this case) so here is a little math for you: Take that address in a1 when you had that break and add 144 hexadecimal and what do you get?..... 801943F4 your characters Score. As you see alot can be learned from observing and making educated guesses to whats happening.



    http://logos.cs.uic.edu/366/notes/mi...20tutorial.htm
    Last edited by Helder; 05-21-2013, 09:22:27 AM. Reason: Fixed word explanation.

    Leave a comment:


  • jin299
    replied
    Okay, so the purpose of a breakpoint is so that the break will direct you to a certain address in the memory, also the registers on the top right Immediately after the first breakpoint looked at the registers at the a2/r6 register and they had the number 0098967F, does this mean that any instruction that starts with a2, will load the value 0098967F into it?
    Last edited by jin299; 05-21-2013, 08:28:49 AM.

    Leave a comment:


  • Helder
    replied
    From your post I've come to realize that you have no idea what a breakpoint is. You set a breakpoint on an address so you see what the game is doing when that address is accessed. A breakpoint doesn't change anything all it does it cause the game to stop at that instruction and then you would press F7 to go to the next line that is executed and you will see the changes happen in the registers.

    Leave a comment:


  • jin299
    replied
    I scrolled up the list like you told me and then went to the instruction lw v0, $144 (a1) broke on it, but it didn't change the score?

    I know what your going to say now, and that's give up on asm, but I'm not ready to give up, I'm determined to find this code, even if I have to set a breakpoint on every address after the breakpoint after the first breakpoint I will LOL, regardless of the unforeseeable consequences, that may follow afterwards.
    Last edited by jin299; 05-21-2013, 06:03:51 AM.

    Leave a comment:


  • Helder
    replied
    I can't explain it any easier, basically I looked at the line right above the break which is almost always the address that caused the write and thats what it was. The store instruction used a pointer which was something like 144 added to whatever register it was so I scrolled up till I saw a load instruction with the same pointer and register so I set a break on it and guess what I did? It was the whole point I've been trying to hammer into you (Observe whats happening). So observe whats loading and whats adding and what not and make educated guesses on what to change. I broke it down line by line for you in that picture if you can't figure it out from that then I don't think you should be doing ASM.

    Leave a comment:


  • jin299
    replied
    I've finally got the hang of it now man, thanks for your help, but just out of curiosity what instructions do I need to change in the debugger so that the game gives me 9999 on my score because I'm confused about this part? I don't understand your example you showed me?
    Last edited by jin299; 05-21-2013, 01:16:25 AM.

    Leave a comment:


  • Helder
    replied
    I use no$psx for just about everything except when I need to do traces then I use MESS.

    Leave a comment:


  • 47iscool
    replied
    Hey helder, I was just wondering what PSX emulator you use to set breakpoints. I still learning to use nocash psx.
    Last edited by 47iscool; 05-20-2013, 03:48:01 PM.

    Leave a comment:


  • Helder
    replied
    I set the debugger to show Native MIPS and not the no$ cash style, go through the options and look for it. I set my break point with a write condition example: [801943F4] !

    Leave a comment:


  • jin299
    replied
    Here I uploaded a photo to show exactly what I mean, this Image is screenshot of me starting up the debugger with the game running, notice the way it's said nop on the address that's clicked? to view a larger view of the picture just click the screenshot.

    http://tinypic.com/r/5z0fad/5

    This picture down below is me typing the addressing in to the goto address box.
    http://tinypic.com/r/2ahtgz4/5

    The next picture down below Is me putting a breakpoint on the address, notice the way it's saids nop beside the address?
    http://tinypic.com/r/2untvdf/5

    after I set the breakpoint the game didn't do anything, it didn't break on the address?
    Last edited by jin299; 05-20-2013, 12:32:29 AM.

    Leave a comment:


  • jin299
    replied
    There something not right about the addresses I found in the debugger for max score, the instructions in my debugger are different from ones in the screenshot you showed example you showed, all the my register and values are different from what yours are? example in the first address on the debugger your instructions are bne while, mine is jnz,

    Also I noticed that when I went to goto to address and typed in the max score address, the address brings to me an nop address for some reason? something not's right? the breakpoint is always on a address that's says nop?
    Last edited by jin299; 05-19-2013, 11:56:24 PM.

    Leave a comment:


  • Helder
    replied
    Infinite health and weapons are pretty easy and perhaps health pickups or boss health.

    Leave a comment:

Working...
X