Написал код Память читает, а при попытки дизасмить тотже участок или возвращяет что все ок, но в выходной буфер ниче не пишет (в случае с адресом: 400000h) либо Access Violation в отладчике при чтении с: eip отлаживаемой проги (отлаживаеца 32-й код под 64-ым отладчиком) при этом отладчик пытаеца записать по адресу который я дизасмю: 7766cb60 код, который я хочу дизасмить: c338c4834800ebcc 00000000`71657426 mov qword ptr [rcx],rax ds:00000000`7766cb60=c338c4834800ebcc В чем может быть проблема? а ну да все дело происходит в DebugExtensionInitialize Код (Text): Читаю память xor r9,r9 mov r8,10h mov rdx,pntrTempBuffer mov rcx,400000h mov rax,pntrWindbgExtensionAPIS64 call [rax+strcWindbgExtensionAPIS64.pntrReadProcessMemoryRoutine] Пытаюсь дизасмить mov r8,1 mov rdx,pntrTempBuffer mov rcx,400000h mov rax,pntrWindbgExtensionAPIS64 call [rax+strcWindbgExtensionAPIS64.pntrDisasmRoutine] struc WINDBG_EXTENSION_APIS64 ;Structure: WINDBG_EXTENSION_APIS64 { .dqSize dq ? .pntrOutputRoutine dq ? .pntrGetExpressionRoutine dq ? .pntrGetSymbolRoutine dq ? .pntrDisasmRoutine dq ? .pntrCheckControlCRoutine dq ? .pntrReadProcessMemoryRoutine dq ? .pntrWriteProcessMemoryRoutine dq ? .pntrGetThreadContextRoutine dq ? .pntrSetThreadContextRoutine dq ? .pntrIoctlRoutine dq ? .pntrStackTraceRoutine dq ? } virtual at 0 strcWindbgExtensionAPIS64 WINDBG_EXTENSION_APIS64 @StrcstrcWindbgExtensionAPIS64Size = ($ - strcWindbgExtensionAPIS64) end virtual
так и не выяснил, возможно потомучто использовал расширение WdbgExts в cdb.exe Сделал через IDebugControl:isassemble
IDebugControl::Execute(DEBUG_OUTCTL_ALL_CLIENTS, "u address", DEBUG_EXECUTE_ECHO); Что в Outputcallback ?
мне нужен был дизасм в выходной буфер своей проги, с Outputcallback не заморачивался IDebugControl::Execute более тяжеловесный метод для дизасма, по сравнению с IDebugControl:isassemble