Нашёл в документации на Bochs команду перехвата обращения к памяти
Цитата:
Глава 8.12. Using Bochs internal debugger
8.12.3. Memory WatchPoints
watch read addr Insert a read watch point at physical address addr
watch r addr Insert a read watch point at physical address addr
watch write addr Insert a write watch point at physical address addr
watch w addr Insert a write watch point at physical address addr
watch Display state of current memory watchpoints
watch stop Stop simulation when a watchpoint is encountered (default)
watch continue Do not stop simulation when a watchpoint is encountered
unwatch addr Remove watchpoint to specific physical address
unwatch Remove all watch points
trace-mem on/off Enable/Disable memory access tracing
Попробовал, сработало
Цитата:
E:\XPR\Release>"D:\Program Files (x86)\Bochs-2.6\bochsdbg.exe" -q
========================================================================
Bochs x86 Emulator 2.6
Built from SVN snapshot on September 2nd, 2012
Compiled on Sep 2 2012 at 20:36:35
========================================================================
00000000000i[ ] reading configuration from bochsrc.txt
00000000000i[ ] installing win32 module as the Bochs GUI
00000000000i[ ] using log file bochsout.txt
Next at t=0
(0) [0x00000000fffffff0] f000:fff0 (unk. ctxt): jmp far f000:e05b ; ea5be000f0
<bochs:1> watch w 0x10000
write watchpoint at 0x0000000000010000 len=1 inserted
<bochs:2> c
(0) Caught write watch point at 0x0000000000010000
Next at t=45539573
(0) [0x00000000000f31b5] f000:31b5 (unk. ctxt): rep insd dword ptr es:[di], dx ; f3666d
Небольшая проблема только в том, что адрес физический. Для виртуальных адресов его довольно сложно определять.