После публикации большого количества вопросов по ptrace
(самые последние 5 вопросов - мои :() Наконец-то я получил желаемый результат, когда я заменил
reg_val[1] = ptrace(PTRACE_PEEKDATA, child, 4 * EBX, NULL);
с
reg_val[1] = ptrace(PTRACE_PEEKUSER, child, 4 * EBX, NULL);
Разница, упомянутая в man-странице, такова:
-
PTRACE_PEEKTEXT
читает слово в местоположении addr в дочерней памяти -
PTRACE_PEEKUSER
считывает слово со смещением addr в дочерней области ПОЛЬЗОВАТЕЛЯ
Я не могу понять эту разницу только на странице руководства. Может ли кто-нибудь просветить меня по этому поводу?