| View previous topic :: View next topic |
| Author |
Message |
CERuleZ Newbie cheater
Reputation: 0
Joined: 29 Dec 2013 Posts: 13
|
Posted: Sun Jun 21, 2020 9:11 pm Post subject: data breakpoint condition? |
|
|
| So I know I can place breakpoint conditions on instructions, but what about data? Say I want to break at address 7BAB96D290 on Write but only if the value written is 1.
|
|
| Back to top |
|
 |
ParkourPenguin I post too much
Reputation: 153
Joined: 06 Jul 2014 Posts: 4733
|
Posted: Sun Jun 21, 2020 10:58 pm Post subject: |
|
|
Go to the breakpoint list window (memory viewer -> view -> "breakpoints" or something) and right click on the one you want to add a condition to. You can do the same in the hex view (bottom half of memory viewer). Pause the game beforehand if you really don't want the breakpoint to trigger before you've set a condition on it (advanced options window).
When writing conditions, keep in mind data breakpoints trigger after the instruction has been executed.
_________________
I don't know where I'm going, but I'll figure it out when I get there. |
|
| Back to top |
|
 |
CERuleZ Newbie cheater
Reputation: 0
Joined: 29 Dec 2013 Posts: 13
|
Posted: Mon Jun 22, 2020 4:00 am Post subject: |
|
|
| @ParkourPenguin Thanks! Is there an easy way to know what functions are calling another function? Say I have functions 1,2,3,4,5. Functions 2 and 3 call 5. I'd like to log functions 2 and 3. Or log the address where they call function 5. I came up with a way to do this but it's not easy...I was wondering if there's a better way lol.
|
|
| Back to top |
|
 |
ParkourPenguin I post too much
Reputation: 153
Joined: 06 Jul 2014 Posts: 4733
|
Posted: Mon Jun 22, 2020 10:09 am Post subject: |
|
|
CE has a dissect code feature that looks for branches (call, jmp, jcc) among other things. If the code is in a module, use memory viewer -> Tools -> Dissect code; if it's in dynamically allocated memory, use Lua:
| Code: | | getDissectCode().dissect(0x145AC000, 0x14000) -- (base, size) | (memory region information can be found by going to memory viewer -> View -> Memory Regions)
Dissect code won't catch indirect branches that go through a register. e.g. "call eax".
You could set a breakpoint at the first instruction and log the return address on the stack. Of course the code will need to be executed in order for you to see it. (tail calls are another problem, but they're rare)
_________________
I don't know where I'm going, but I'll figure it out when I get there. |
|
| Back to top |
|
 |
CERuleZ Newbie cheater
Reputation: 0
Joined: 29 Dec 2013 Posts: 13
|
Posted: Wed Jun 24, 2020 7:03 pm Post subject: |
|
|
| Thanks I managed to do it with Ultimap. God ultimap is so good, I don't think I'll be using regular scans anymore.
|
|
| Back to top |
|
 |
|