В отладочных построениях выполнить тщательную
ЛИСТИНГ 12-2. Функция HookImportedFunctionsByNaine
из файла
HOOKIMPORTEDFUNCTIONSBYNAME.CPP .
BOOL BUGSUTIL_DLLINTERFACE _stdcall
HooklmportedFunctionsByName ( HMODULE hModule ,
LPCSTR szImportMod,
UINT uiCount
LPHOOKFUNCDESCA paHookArray,
PROC * paOrigFuncs,
LPDWORD pdwHooked )
{
// Проверить параметры.
ASSERT ( FALSE == IsBadReadPtr ( hModule
sizeof ( IMAGE_DOS_HEADER) ));
ASSERT ( FALSE == IsBadStringPtr ( szImportMod, MAX_PATH));
ASSERT ( 0 != uiCount);
ASSERT ( NULL != paHookArray);
ASSERT ( FALSE == IsBadReadPtr ( paHookArray,
sizeof (HOOKFUNCDESC) * uiCount));
// В отладочных построениях выполнить тщательную проверку paHookArray.
#ifdef _DEBUG
if ( NULL != paOrigFuncs)
{
ASSERT ( FALSE == IsBadWritePtr ( paOrigFuncs,
sizeof ( PROC) * uiCount));
}
if ( NULL != pdwHooked)
{
ASSERT ( FALSE == IsBadWritePtr ( pdwHooked, sizeof ( UINT)));
}
// Проверить каждый элемент массива подключения.
{
for ( UINT i = 0; i < uiCount; i++)
{
ASSERT ( NULL != paHookArray[ i ].szFunc );
ASSERT ( '\0' != *paHookArray[ i ].szFunc);
// If the function address isn't NULL, it is validated.
if ( NULL != paHookArray[ i ].pProc)
{
ASSERT ( FALSE == IsBadCodePtr ( paHookArray[i].pProc));
}
}
}
#endif
// Выполнить проверку ошибок параметров.
if ( ( 0 == uiCount ) | |
( NULL == szIinportMod ) | |
( TRUE == IsBadReadPtr ( paHookArray,
sizeof ( HOOKFUNCDESC) * uiCount)))
{
SetLastErrorEx ( ERROR_INVALID_PARAMETER, SLE_ERROR);
return ( FALSE);
}
if ( ( NULL != paOrigFuncs) &&
( TRUE == IsBadWritePtr ( paOrigFuncs,
sizeof ( PROC) * uiCount)) )
{
SetLastErrorEx ( ERROR_INVALID_PARAMETER, SLE_ERROR);
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий