2016-06-18 2 views

ответ

0

Я хочу выделить некоторую память в удаленном процессе. Можно ли сделать это ?

Предположительно, вы хотите выделить некоторую память, используя собственный процесс процесса malloc. Доказательство существования:

(gdb) start 
(gdb) print malloc(20) 
$1 = 0x820430 

Так что да, это возможно.

Детали однако довольно запутанна: вы должны будете читать таблицу символов для нижнего процесса для того, чтобы найти, где это malloc есть, то построить правильный кадр вызова и передает управление на malloc сек адрес, используя правильный ABI для вашего целевой процесс и, наконец, очистить все это.

Это не менее чем в 10 раз сложнее, чем вы задали в своих otherrecent вопросах.

+0

Отлично, но как это работает? Если я хочу запрограммировать это на C? (предположим, что процесс привязан к syscall ptrace). Как вы думаете, я должен изменить вручную eip, чтобы вызвать malloc, а затем вернуться к предыдущему eip? – Bob5421

+0

«Как это работает?» - Как я уже сказал, это сложно. Вы можете начать с чтения источников GDB, но будьте готовы к долгой битве *. Вам нужно посмотреть 'call_function_by_hand' в' infrun.c'. –

+0

В зависимости от вашей потребности, вы можете запускать системный вызов 'mmap'' MAP_ANONYMOUS'. – ysdx