romkyns
January 28th, 2012, 07:00
I'm trying to trace through a piece of code in two different situations and see the point at which the execution traces diverge.
For some reason, however, my traces seem to get lost while executing OS code: Olly traces on and on through a system DLL and then all of a sudden it finds itself on a breakpoint back in user code, having skipped a large number of instructions. For example:
See what happens there at the end: the trace stops at the "add" for some reason, after successfully tracing quite a bunch of OS code, and never really resumes until it hits a breakpoint.
Why is this happening and how can I fix this?
For some reason, however, my traces seem to get lost while executing OS code: Olly traces on and on through a system DLL and then all of a sudden it finds itself on a breakpoint back in user code, having skipped a large number of instructions. For example:
Code:
004036A3 Main push 0
004036A5 Main call <jmp.&user32.GetKeyboardType>
00403698 Main jmp [dword <&user32.GetKeyboardType>]
GetKeyboardType mov edi, edi
75A29AC6 Main push ebp
75A29AC7 Main mov ebp, esp
...
... snip 20 thousand instructions
...
77801003 Main call [dword fs:C0]
73A92320 Main jmp far 0033:73A9271E
759E60E2 Main add esp, 4
Breakpoint at mycode.00575E5E
00575E5E Main mov ebp, esp
See what happens there at the end: the trace stops at the "add" for some reason, after successfully tracing quite a bunch of OS code, and never really resumes until it hits a breakpoint.
Why is this happening and how can I fix this?