Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
pEntity
13 / 8 / 1
Регистрация: 12.12.2012
Сообщений: 440
#1

VirtualProtect + memcpy - Заблокировать функцию? - C++

11.11.2013, 19:31. Просмотров 322. Ответов 0
Метки нет (Все метки)

Здравствуйте. Мне необходимо в .dll файле заблокировать функцию.

Как это в теории ?

Получить оффсет,можно и сигнатуру,но пускай будет оффсет. Разрешить запись с помощью VirtualProtect. Изменить адрес на nop,чтоб процессор не увидел эту функцию. Вернуть флаги VirtualProtect.

Я получил её оффсет.

.text:1008CEA0 sub_1008CEA0 proc near ; DATA XREF: .rdata:100FBC38o

0x8CEA0 -> 0x8CEA1

Далее я затрудняюсь объяснить почему nop именно такая в 5 байтов:

const unsigned char ret[] = {0x90, 0x90, 0x90, 0x90, 0xE9};

Далее разрешаю запись,изменяю адрес,возвращаю флаги.


DWORD oldflags;
VirtualProtect((void*)GETREALADDR(0x8CEA1), sizeof(ret), PAGE_EXECUTE_READWRITE, &oldflags);
memcpy((void*)GETREALADDR(0x8BC2E), ret, sizeof(ret));
VirtualProtect((void*)GETREALADDR(0x8CEA1), sizeof(ret), oldflags, &oldflags);

В итоге приложение закрывается когда вызывается моя функция. Блок не удался.


Кто может подсказать,что делает инструкция 0xE9 ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2013, 19:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос VirtualProtect + memcpy - Заблокировать функцию? (C++):

Memcpy, buffer overflow. Может ли возникнуть ошибка в функции memcpy - C++
Бывает ли на практике такое, что код #define size 1000; // some value int x, y; /* ... */ memcpy(y, x, (size + 1) * sizeof(int)); ...

Подскажите функцию аналог memcpy() - C++
Функция memcpy() копирует из одного массива в другой первые size элементов. А есть аналогичная стандартная функция, но которая бы...

VirtualProtect - C++
Где можно узнать значение последнего параметра VirtualProtect (typedef DWORD* PDWORD) PDWORD lpflOldProtect? Если ставить 0 функция...

memset, memcpy - C++
Использую MSVS 2008. Почему memcpy работает только с char? То есть, такой код работает: int main() { char a1 = "123"; ...

Не работает memcpy - C++
Нужно просто полностью скопировать первый массив, во второй, длина у них одинакова. Делаю так: BYTE in; // = {10, ...} типа заполнен...

2d ---> 1d array и memcpy - C++
Можно ли сконвертировать двумерный массив в одномерный с помощью memcpy? Если да, то будет ли быстрее, чем тупое перебирание в циклах?

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.11.2013, 19:31
Привет! Вот еще темы с ответами:

Работа функции memcpy - C++
Подскажите пожалуйста: 1. Каким образом работает функция memcpy(&buf1,&genday,2) и какого типа данные окажутся в buf1? Заранее всем...

Насчёт функции memcpy() - C++
Начинаяю использовать эту функцию.Её синтаксис: void memcpy(void *to, const void *from, size_t count); Вопрос_1: Что такое...

Объяснить работу Memcpy - C++
Доброго времени суток! Можете пояснить работу memcpy под C++? Что-то у меня определённо работает не так. Например такой код: ...

Memcpy и динамические массивы - C++
Почему значение массива A изменилось? Как этого избежать? int *a = new int ; A = 3; a = 5; int *b = new int ; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.