Полагаю, что отладчики используют ReadProcessMemory (в среде Windows) для чтения памяти другого процесса. Что мне интересно: ReadProcessMemory считывает память другого процесса в буфер, чтобы вызвать накладные расходы. Разве отладчики читают небольшие куски памяти или читают ли они всю память процесса за один выстрел?Как работают отладчики с ReadProcessMemory?
-1
A
ответ
0
API не гарантирует атомное считывание. В конце концов он копирует данные (в отличие от предоставления доступа к исходным байтам с помощью сопоставления адресов), и если debuggee все еще работает, он может изменять эту память во время вызова API.
Смежные вопросы
- 1. Как отладчики/исключения работают над скомпилированной программой?
- 2. Отладчики Python не работают после обновления PyCharm
- 3. Многоязычные отладчики
- 4. ReadProcessMemory с адресом __int64
- 5. Проблема с Delphi ReadProcessMemory
- 6. VirtualQueryEx/ReadProcessMemory
- 7. ReadProcessMemory быстрее
- 8. Отладчики GDB Vs LLDB
- 9. Несогласованные данные с ReadProcessMemory C++
- 10. C# readprocessmemory с Cheat Engine
- 11. Linux: самые мощные отладчики
- 12. Отладчики для C++
- 13. Как читать pchar используя ReadProcessMemory
- 14. Ошибка WriteProcessMemory/ReadProcessMemory
- 15. C# ReadProcessMemory альтернативный
- 16. ReadProcessMemory читает пустую строку
- 17. Другие отладчики с графическим выходом, например, DDD
- 18. 64bit ReadProcessMemory доступ запрещен
- 19. О ReadProcessMemory Скорость
- 20. Упростите несколько вызовов ReadProcessMemory
- 21. ReadProcessMemory не затруднять обновление
- 22. Есть ли отладчики для glsl?
- 23. Ошибка 299 на ReadProcessMemory
- 24. Ядро Windows ReadProcessMemory()/WriteProcessMemory()?
- 25. Есть ли отладчики грамматики Yacc?
- 26. C++: ReadProcessMemory() вызывает сбой
- 27. Как отладчики ищут выражения из строк кода
- 28. ReadProcessMemory не работает
- 29. ReadProcessMemory возвращает неправильные значения
- 30. callstack и ReadProcessMemory
Не выглядит подотчетным для меня. Есть много разных отладчиков, и они могут делать все, что работает для каждого конкретного случая. Вероятно, большинство из них будут читать в кусках, если это потребуется вообще ... Особенно в x64 :) также можно представить, что читает весь 16/32 бит пространства процесса в большой 32/64 бит процесс для анализа. –
Я никогда не писал отладчик, но если бы я это сделал. Если пользователь запрашивает трассировку стека, имеет смысл прочитать стек (около 1 МБ) этого потока. Если пользователь хочет распечатать переменную, прочитайте память только для этой переменной. –