Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Можно ли значение вектора A передать вектору B через swap? http://www.cyberforum.ru/cpp-beginners/thread1004748.html
А возможно ли такое сделать через swap: значение вектора A передать вектору B, при этом у вектора A должно остаться свое значение. Я понимаю, что можно написать B=A, но вот вектора довольно-таки большие и присваивание долго идет.
C++ В квадратной матрице С(6*6)найти сумму элементов, находящихся по периметру. В квадратной матрице С(6*6)найти сумму элементов, находящихся по периметру. http://www.cyberforum.ru/cpp-beginners/thread1004745.html
C++ конструктор и деструктор
помогите написать конструктор и деструктор для класса типа динамическая таблица, сам пробовал не получается, вот что я делал: class tab { private: int kol_el; tab_elem *tab_1; ...} tab::tab() { int i=0;
Упорядочить строки матрицы по возрастанию их первых элементов C++
очень срочно на завтра нужен код этой задачи. " дана матрица размером NxM .Упорядочить ее строки по возрастанию их первых элементов." Помогите пожалуйста. и если можно , то немного комментариев к более сложным операциям..
C++ Почему выводит не понятные символы, а не то что вводилось пользователем? http://www.cyberforum.ru/cpp-beginners/thread1004736.html
#include "stdafx.h" #include <iostream> #include <sstream> #include <cstring> #include <conio.h> using namespace std; struct knigizd /*ОПИСЫВАЕМАЯ СТРУКТУРА*/ {
C++ Не вводятся данные в динамический массив вот код, вроде как мне кажется все правильно, но как я уже не пробывал писать рядом с pMas всеравно в масив данные не вводятся, да и в функции почему не работает, подскажите пожалуйста вот код #include <iostream> #include <conio.h> #include <stdio.h> void NewVector( float *N, int p, int k) { float *b; b=new float; подробнее

Показать сообщение отдельно
pEntity
10 / 5 / 1
Регистрация: 12.12.2012
Сообщений: 371
11.11.2013, 19:31     VirtualProtect + memcpy - Заблокировать функцию?
Здравствуйте. Мне необходимо в .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 ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 20:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru