После публикации большого количества вопросов по 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 в дочерней области ПОЛЬЗОВАТЕЛЯ
Я не могу понять эту разницу только на странице руководства. Может ли кто-нибудь просветить меня по этому поводу?
