Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| | |
А что говорит GetLastError? 29.03.05 00:05 Число просмотров: 1959
Автор: NKritsky <Nickolay A. Kritsky> Статус: Elderman
|
|
<programming>
|
[C++] изменение записи в таблице импорта 26.03.05 20:05
Автор: lol Статус: Незарегистрированный пользователь
|
Привет!
Я пытаюсь написать прогу которая изменяет в своем адрессном пространстве
запись в таблице импорта.
Для записи я пытаюсь использовать функцию:
if (WriteProcessMemory(GetCurrentProcess(),
ppfn, //where
&pfnNew, //what
sizeof(pfnNew), //how much
NULL) == FALSE)
MessageBox(0,"cant write", "rs[i]",MB_OK) ;
она всегда оканчиваеться неудачей, я пытался
handle = OpenProcess(
PROCESS_QUERY_INFORMATION |
PROCESS_CREATE_THREAD |
PROCESS_VM_OPERATION |
PROCESS_VM_WRITE,
FALSE, GetCurrentProcessId());
if (WriteProcessMemory(handle,
ppfn, //where
&pfnNew, //what
sizeof(pfnNew), //how much
NULL) == FALSE)
MessageBox(0,"cant write", "rs[i]",MB_OK) ;
эффект тотже. Я хотел бы узнать в чем моя ошибка, может быть для записи в
адрессное пространство текущего процесса следует использовать какието
иные способы 7 Значение в ppfn, и pfnNew вродебы правельные.
Заранее спасибо!
|
|
А зачем тебе WriteProcessMemory, если ты правишь в своем адресном простанстве? 01.04.05 03:34
Автор: AlexD <Alexander> Статус: Member
|
Или любитель тонких извращений:)?
Никнейм, кстати, клевый:)).
|
|
а ты уверен что поинтер куда ты пишешь (ppfn) существует 29.03.05 04:46
Автор: + <Mikhail> Статус: Elderman
|
> Привет! > Я пытаюсь написать прогу которая изменяет в своем адрессном > пространстве > запись в таблице импорта. > Для записи я пытаюсь использовать функцию: > > if (WriteProcessMemory(GetCurrentProcess(), > ppfn, //where > &pfnNew, //what > sizeof(pfnNew), //how much > NULL) == FALSE) > MessageBox(0,"cant write", "rs[i]",MB_OK) ; > > она всегда оканчиваеться неудачей, я пытался > > handle = OpenProcess( > PROCESS_QUERY_INFORMATION | > PROCESS_CREATE_THREAD | > PROCESS_VM_OPERATION | > PROCESS_VM_WRITE, > FALSE, GetCurrentProcessId()); > > if (WriteProcessMemory(handle, > ppfn, //where > &pfnNew, //what > sizeof(pfnNew), //how much > NULL) == FALSE) > MessageBox(0,"cant write", "rs[i]",MB_OK) ; > > эффект тотже. Я хотел бы узнать в чем моя ошибка, может > быть для записи в > адрессное пространство текущего процесса следует > использовать какието > иные способы 7 Значение в ppfn, и pfnNew вродебы > правельные. > Заранее спасибо!
а ты уверен что поинтер куда ты пишешь (ppfn) существует
я попробовал у меня всё работает.
|
|
[Win32] [C++] VirtualProtectEx() исполни для получения права записи в страницу, может в этом дело? 26.03.05 22:42
Автор: HandleX <Александр М.> Статус: The Elderman
|
|
| |
к сожалению не помогло :( 28.03.05 22:26
Автор: lol Статус: Незарегистрированный пользователь
|
к сожалению не помогло :(
я использую винду 2003 может в ней нельзя изменять содержимое таблицы импорта7
компилятор СБилдер
|
| | |
А что говорит GetLastError? 29.03.05 00:05
Автор: NKritsky <Nickolay A. Kritsky> Статус: Elderman
|
|
|
|