Breakpoint not working?

Started by toonlink444, January 26, 2011, 12:00:27 AM

Previous topic - Next topic

toonlink444

So I found the right value because it worked when I poked it. Then I set a breakpoint and it didn't work. I tried all the breakpoint options. Is it that my address is wrong or that the address is faulty?

MOD EDIT: fixed typo in subject
In the begining there was nothing. Then it exploded
New blog!! Check it out for hacking Smash Bros Brawl!! http://letshackblank.blogspot.com/

dcx2

What address did you poke?

What kind of breakpoint did you set?  Read, Write, Read/Write, Execute?  Was the Exact checkbox checked?

toonlink444

Sorry about taking so long to respond. I have school 8:30 to 3:30. I wrote it down before I went to school let me find it.
In the begining there was nothing. Then it exploded
New blog!! Check it out for hacking Smash Bros Brawl!! http://letshackblank.blogspot.com/

toonlink444

#3
I didn't know what you ment by 99 lives, so I used it in a stock battle. The address is 8128AE67, I did a write breakpoint first because I figured that the address would write a value when you died. Nothing happened. So I tried Read(nothing) Read/Write(nothing) Execute(nothing). Does it have something to do with the 81 prefix.
Edit: And when I poked it at 14 the life meter said 20(which is right) so it has to be the right address.(maybe)
In the begining there was nothing. Then it exploded
New blog!! Check it out for hacking Smash Bros Brawl!! http://letshackblank.blogspot.com/

dcx2

Was the Exact checkbox checked?

toonlink444

In the begining there was nothing. Then it exploded
New blog!! Check it out for hacking Smash Bros Brawl!! http://letshackblank.blogspot.com/

Anarion

sometimes the point won't break if the exact box is checked.
I'm not here much. If you have a problem with any of my codes, let me know through my youtube account and I'll help you.
¦}

toonlink444

Now it's working. I thought that it was good to have the box checked at all times?
In the begining there was nothing. Then it exploded
New blog!! Check it out for hacking Smash Bros Brawl!! http://letshackblank.blogspot.com/

dcx2

#8
That's probably the issue.

Since the address 8128AE67 is odd, the Exact Breakpoint will only hit when a stb or lbz (or other 8-bit memory access) is used to write to that address.

You can do two things.

1) Uncheck exact.  You will now hit a breakpoint anywhere in the doubleword that your address is in; that is, any memory access of any size to address 8128AE60-8128AE67 will trigger your unexact breakpoint.  Be careful when you don't have Exact checked, because you will hit breakpoints for neighboring words.

2) If you leave Exact checked, then you will have to try the half-word address 8128AE66 (which would hit if a sth/lhz were used).  If that doesn't work, then try the word address 8128AE64 (stw/lwz).  My guess is that it uses 32-bit memory access instructions like lwz, so you should set the Exact breakpoint at 8128AE64.

BTW, some definitions might help.

byte = 8 bits
halfword = 16 bits (2 bytes)
word = 32 bits (4 bytes)
doubleword = 64 bits (8 bytes)

toonlink444

But the value is 8 bit. Does it matter in ASM?
P.S 100th post! woot!
In the begining there was nothing. Then it exploded
New blog!! Check it out for hacking Smash Bros Brawl!! http://letshackblank.blogspot.com/

dcx2

The value *looks* 8-bit.

But it still might be written and read with instructions that work on 16-bits or 32-bits.

toonlink444

ah. I'm slowly getting this. In about a month I'll tackle the FS code again.
In the begining there was nothing. Then it exploded
New blog!! Check it out for hacking Smash Bros Brawl!! http://letshackblank.blogspot.com/

dcx2

Look at this thread post.

http://wiird.l0nk.org/forum/index.php/topic,5188.msg45353.html#msg45353

It's a different example, but it works kinda the same.  You can see how the value 0x63 can look like an 8-bit value, or a 32-bit value.



Notice how the row is composed of four groups of four bytes separated by a red line.  Memory is arranged in "words" - groups of 4 bytes.  Each row is four words, each word is separated by red lines.  Your 055DBB77 00000063 would be writing 4 bytes across a word boundary (the red line), which is forbidden.

An instruction is only allowed to touch one "word" of memory at a time.  In my example, I wrote 4 bytes to 0x905DBB74.  The address 0x905DBB74 is "word aligned", meaning that it's a multiple of 0x4 (i.e. the address ends in 0x0, 0x4, 0x8, or 0xC), so all 4 of the bytes I'm writing do not cross any word boundaries.

0x815DBB77 is not word aligned (it does not end in 0/4/8/C).  If you write 4 bytes to address 0x815DBB77, you will be writing 1 byte to the end of the word at 0x815DBB74, and three bytes to the beginning of the word at 0x815DBB78.