2

I'm wanting to have olly run a program and break when a particular memory location equals a given value. For instance, if I could have it run until the value at address 0xFB2D0024 == 0xE9, and then break immediately when that assignment occurs. Please let me know if this is possible!

The "conditional" breaks I found in here did not work, or rather when I right clicked -> breakpoint -> Conditional, and then entered a condition, the program simply broke at the instruction where I right-clicked, regardless of the condition, and not when the condition occurred.

The closest I can get is right clicking on a particular memory value (in the memory dump) -> breakpoint -> Memory, on write, but this breaks every time a change is made, and not when a specific value is set. Any help would be great! Thanks!

1 Answer 1

1

You can write script for ODbgScript plugin,

It might look like this:

VAR pDest
VAR Val

mov pDest, FB2D0024 // dest address
mov Val, E9 // val to look for

bpwm pDest, 4 // set bp on writing DWORD (4bytes) value.
__lbl_loop:
erun
cmp [pDest], Val
jne __lbl_loop
bpmc
LOG "Catched ^(._.^)"
1
  • Thank you. This does what I'm looking for, unfortunately I've now realized that setting a breakpoint on write, and then checking the value it writes is a bit too slow (the memory value is written to hundreds of times a second). Time to move on to a workaround (not involving this memory value).
    – zz3star90
    May 16, 2014 at 17:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.