Сейчас на форуме: _MBK_, Adler (+5 невидимых)

 eXeL@B —› Вопросы новичков —› Вопрос по обращению к памяти
Посл.ответ Сообщение

Ранг: 37.1 (посетитель), 11thx
Активность: 0.030
Статус: Участник

Создано: 30 апреля 2011 12:56 · Поправил: Promix_17
· Личное сообщение · #1

Делаю один CrackMe, возникла проблема. Хочу перезаписать какую-нибудь API функцию на свой код, чтобы незаметно всё было, но постоянно вылетает ошибка доступа к памяти, хотя я вызываю VirtualProtect на эту область. В чём может быть проблема?

VirtualProrect возвращает false, что делать?




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 30 апреля 2011 13:11
· Личное сообщение · #2

Как говорится, экстрасенсы в отпуске, код в студию.

Иначе можешь поискать тут: http://dzen.yandex.ru/

-----
Yann Tiersen best and do not fuck





Ранг: 67.4 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 30 апреля 2011 13:12
· Личное сообщение · #3

GetLastError() что возвращает?



Ранг: 37.1 (посетитель), 11thx
Активность: 0.030
Статус: Участник

Создано: 30 апреля 2011 13:43 · Поправил: Promix_17
· Личное сообщение · #4

VirtualProrect возвращает false, т.е. не изменяет атрибуты требуемого куска памяти. -> При обращении к памяти при записи происходит ошибка. Код ~ такой:

Code:
  1. HMODULE hLib=LoadLibrary("user32.dll");
  2. void *p=GetProcAddress(hLib, "MessageBoxA"); // Всё нормально грузится
  3. bool r=VirtualProtect(p,0x10,PAGE_EXECUTE_WRITECOPY,0); // Тут VirtualProtect ничего не изменяет
  4. *(char *)p=       0x90; //значит здесь будет ошибка


Вопрос: как ещё можно изменить атрибуты области памяти?

GetLastError() - 998 Неверная попытка доступа к адресу памяти.



Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 30 апреля 2011 13:58
· Личное сообщение · #5

PAGE_EXECUTE_WRITECOPY -> PAGE_EXECUTE_READWRITE
И последний параметр у VirtualProtect вроде как обязательный, сделай что нибудь вроде DWORD oldProt.....&oldProt



Ранг: 37.1 (посетитель), 11thx
Активность: 0.030
Статус: Участник

Создано: 30 апреля 2011 15:02
· Личное сообщение · #6

Всё, нашёл ошибку. Действительно, последний параметр функции обязательный, забыл совсем об этом...




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 30 апреля 2011 19:01
· Личное сообщение · #7

Полагаю, на этом можно закрыть.


 eXeL@B —› Вопросы новичков —› Вопрос по обращению к памяти
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати