Вопрос : IAT латая, проблема вызывая назад к первоначально функции цели?

Hi,

I интересовало если специалист smog помочь мне при IAT латая на O/Ss, то основанном NT по мере того как я приходил немногая unstuck.  Я пытаюсь установить крюк API using впрыска DLL (метод LoadLibrary/CreateRemoteThread), и после этого латаю несколько функции OpenGL для того чтобы мочь перехватить их параметры и выполнить деятельности перед вызывать оригиналы.  Все из этого работает отдельно от, оно кажется, когда я вызываю назад к первоначально вариантам функций которые имеют список параметра - вызывать назад к функциям без параметров будет подозреваемым fine.
I оно как я определял указателями функции, я ново к этому методу и не может показаться к даватью в численном выражении которая будет правильно дорога делать вещи.  Когда я вызываю назад к первоначально функциям с списком параметра он как раз разбивает Кодий цели, котор process.

The я использую следующим образом: - указатель

//к первоначально функции:

void (*glRotatefOrig) (угол WINAPI GLfloat, GLfloat x, GLfloat y, GLfloat z); Кодий

//для того чтобы получить первоначально указатель функции:

glRotatefOrig = (свободное пространство (WINAPI *) (GLfloat, GLfloat, GLfloat, GLfloat)) GetProcAddress (hMod, «glRotatef»); hMod = ручка // к openGL module.

//мое собственное implentation функции (это вызвано успешно целью отростчатой после заплаты IAT):
myglRotatef

void (угла GLfloat, GLfloat x, GLfloat y, GLfloat z) {console->Write
(«glRotatef вызванное \ n»); glRotatefOrig ok
печатей // (угол, x, y, z); // этот звонок разбивает применение (отсутствие содержательной дали ошибки, котор).

Can любое
} по возможности указывает я к куда я иду неправильно?  Я имею судимые многочисленнAp другой способ определять первоначально указатель функции но весь конец в разрывах: /

Cheers заранее если вы можете помочь, то,
Chris
class=

Ответ : IAT латая, проблема вызывая назад к первоначально функции цели?

Hi Крис,

Латать IAT что-то, котор я fiddled с довольно много настолько длиной тому назад: Книги J.Richter реально будут необходимы чтением на этом:)

Я написал тип завертчицы, воодушевлянный вышеуказанным джентльменом, который позволил я успешно закрепить функции как:: MessageBox etc. я прикреплял мой тип хелпера ниже, вместе с использованием примера.  Пожалуйста попытайтесь оно вне using ваши функции OpenGL - оно должен работать без проблемы.

Вы увидите то когда я закреплю звонок:: MessageBox, я изменяю текстом который был первоначально после того как он определен «я закреплял этот звонок!»
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
// setup крюк
ПОДТВЕРДИТЕ (CFuncInAPIHook:: Приведите () .HookFunction в пример (_T («user32.dll»), _T («MessageBoxW»), AfxGetInstanceHandle (), &MyMessageBox (PROC)));

Процедура по замены //
int WINAPI MyMessageBox (hWnd HWND,
    lpText LPCTSTR,
    lpCaption LPCTSTR,
    uType UINT
)
{
	Указатель функции // должен иметь такую же вызывая конвенцию как PROC (WINAPI)!  Поэтому, prepend WINAPI (__stdcall)!
	typedef int  (*MESSAGEBOX_FUNC) (HWND WINAPI, LPCTSTR, LPCTSTR, UINT);

	// только восстановляет первоначально адрес функции раз!
	статическое pFunc MESSAGEBOX_FUNC = (MESSAGEBOX_FUNC) CFuncInAPIHook:: Приведите () .RetrieveOriginalAPIFunctionAddress в пример (_T («user32.dll»), _T («MessageBoxW»));
	УТВЕРДИТЕ (pFunc);
	возвратите pFunc? (*pFunc) (hWnd, _T («я закреплял этот звонок! "), lpCaption, uType): 0;
}

// этот звонок будет закреплено
:: MessageBox (NULL, _T (""), _T («название»), MB_OK);
Другие решения  
  •  Как я добавляю кнопки на форме PDF для того чтобы добавить/извлекаю рядки данных?
  •  Шнур ошибки в блоке задвижки?
  •  сколько вариант сервера SQL на одной машине
  •  Внешний вид 2007 не может архивный файл открытой сети сохраненный
  •  Активно директория DNS записывает вопрос
  •  Отчет о доступа 2010 экспорта к CSV с коллекторами?
  •  Прокладчик OCE 9400 не начинает
  •  как добавить десятичное место в формуле в отчете о кристалла seagate
  •  Windows XP и Мичрософт Оутлоок и проблемы установителя Windows
  •  VB6 к VS2010 - консультации тренировки?
  •  
    programming4us programming4us