Bardiche
December 17th, 2001, 07:11
Hello all. I have an idea for a new Windows project, one that I expect has been attempted before, although I could find no trace of it on the net. Ideally, this is what I would like to do:
I want to be able to record a program's path of execution, storing register values and memory read/writes. The prog would record only changed values to conserve space. Ideally, this might be facilitated through a callback function on each trace command. This recording would then be superimposed upon a dead listing for viewing and analysis later (or maybe into an IDA plug-in).
The "debugger" part of the program would not need any user-interface at all. A command line parameter could be used to designate the conditions for the initial breakpoint. You would then process exclusions (e.g. ignore calls to kernal, etc) and a conditional endpoint (or max bytes recorded) through a callback function (or maybe a script file).
I am not nearly as knowledgable at low-level opsys concepts as I would like to be, but I am studying pretty hard at it. I was hoping that any of you might be able to point me to some good references of study regarding low-level debugging, or maybe point out any problems that you might see with my idea. Maybe there is a much easier way to do this?
I think that I could have wriiten this without too much trouble using the Win32 Debug API, but alas, my first target is a 16-bit Windows program. Apparently, these 16-bit apps own the Win16Mutex, so the Debug API will not let you suspend their execution. I guess that leaves me with the debug interrupts.
Thanks for your time,
Bardiche
I want to be able to record a program's path of execution, storing register values and memory read/writes. The prog would record only changed values to conserve space. Ideally, this might be facilitated through a callback function on each trace command. This recording would then be superimposed upon a dead listing for viewing and analysis later (or maybe into an IDA plug-in).
The "debugger" part of the program would not need any user-interface at all. A command line parameter could be used to designate the conditions for the initial breakpoint. You would then process exclusions (e.g. ignore calls to kernal, etc) and a conditional endpoint (or max bytes recorded) through a callback function (or maybe a script file).
I am not nearly as knowledgable at low-level opsys concepts as I would like to be, but I am studying pretty hard at it. I was hoping that any of you might be able to point me to some good references of study regarding low-level debugging, or maybe point out any problems that you might see with my idea. Maybe there is a much easier way to do this?
I think that I could have wriiten this without too much trouble using the Win32 Debug API, but alas, my first target is a 16-bit Windows program. Apparently, these 16-bit apps own the Win16Mutex, so the Debug API will not let you suspend their execution. I guess that leaves me with the debug interrupts.
Thanks for your time,
Bardiche