хук внутренней функции PE файла |

09.01.2010, 20:11
|
|
Новичок
Регистрация: 04.01.2010
Сообщений: 14
С нами:
8605482
Репутация:
0
|
|
хук внутренней функции PE файла
Подскажите пожалуйста как можно хукнуть неимпортируемую ни из каких длл функцию, коей к примеру является LoadURI() в firefox?
|
|
|

09.01.2010, 20:19
|
|
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
С нами:
9702986
Репутация:
479
|
|
точно так же, предварительно узнав её виртуальный адрес
|
|
|

10.01.2010, 20:03
|
|
Новичок
Регистрация: 04.01.2010
Сообщений: 14
С нами:
8605482
Репутация:
0
|
|
дак в том то и проблема - как узнать адрес?)
|
|
|

10.01.2010, 20:41
|
|
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
С нами:
10653446
Репутация:
836
|
|
GetProcAddress
это чтоль?
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
|
|
|

10.01.2010, 20:48
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
С нами:
10386906
Репутация:
599
|
|
не. дизасмить тока. и искать по косвенным признакам(строковым литералам, вызываемым функциям). можно сбилдить версией компилера как у авторов тока с пдб файлов или мап файлом и так найти. тут ограничение тока в фантазии.
|
|
|

10.01.2010, 21:39
|
|
Новичок
Регистрация: 04.01.2010
Сообщений: 14
С нами:
8605482
Репутация:
0
|
|
а насколько все эти фантастические методы надежны?) мне бы хукнуть loadURI у фф, а версий у него ой как много(
|
|
|

10.01.2010, 22:28
|
|
Познающий
Регистрация: 28.01.2009
Сообщений: 90
С нами:
9096406
Репутация:
80
|
|
думаю наилучшим решением станет поиск сигнатур начала функции, наподобие того алгоритма что изпользуется в PEID, для определения сигнатуры компилятора
к примеру, сигнатура
push ebp/mov ebp esp
Юзается для подготовки стека, в Delphi компиляторах, в С++ немного другой метод изпользуется там стек по другому иcпользуется (add/sub esp, n)
|
|
|

11.01.2010, 13:56
|
|
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
С нами:
9023100
Репутация:
395
|
|
Я думаю и в дебагере можно увидеть... у тебя же есть вроде описание функции (ну всмысле, что она делает) если например реагирует на ввод ставишь бряк на GetWindowText и ей подобных... думаю должно словится... хотя... в общем муторно
|
|
|

11.01.2010, 15:11
|
|
Познающий
Регистрация: 28.01.2009
Сообщений: 90
С нами:
9096406
Репутация:
80
|
|
Все это долго и муторно (
Предлагаю вариант попроще
Не надо брякать эту функцию LoadURI
В формировании строк почти всегда изпользуется функция wssprintA
есть вариант ставить бряк на wssprintA и ловить строки содежащие подстроки
[http://, ftp://, javastript://, https://], и подменять их своими значенями
|
|
|

12.01.2010, 18:55
|
|
Статус пользователя:
Регистрация: 26.07.2005
Сообщений: 568
С нами:
10943066
Репутация:
1236
|
|
по паттерну например так
Код:
BOOL utilsCompareData(const BYTE* pData, const BYTE* bMask, const char* pszMask)
{
for(;*pszMask; ++pszMask, ++pData, ++bMask)
if(*pszMask == 'x' && *pData !=* bMask )
return FALSE;
return (*pszMask) == 0;
}
//////////////////////////////////////////////////////////////////////////
DWORD utilsFindPattern(DWORD dwAddress, DWORD dwLen, BYTE *bMask, char * pszMask)
{
for(DWORD i=0; i < dwLen; i++)
if(utilsCompareData((BYTE*)( dwAddress+i ), bMask, pszMask ))
return (DWORD)(dwAddress + i);
return 0;
}
dwDecode = utilsFindPattern( (DWORD)(pDosHdr)+pSecHdr->VirtualAddress, pSecHdr->SizeOfRawData,
(BYTE*)"\x51\x53\x55\x8B\x6C\x24\x10\x56\x8B\x74\x 24\x20\x57","xxxxxxxxxxxxx");
__________________
 
snow white world wide
|
|
|
|
 |
Похожие темы
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
TRUE PHP-injection
|
Zadoxlik |
Уязвимости |
14 |
27.11.2006 18:19 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|