ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > Реверсинг
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 08.05.2009, 22:38
desTiny
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
Провел на форуме:
3008839

Репутация: 1502


По умолчанию

Finito:
В результате продолжительного обсуждения было принято решение о том, что оказывается KiFastSystemCall и KiFastSystemCallRet экспортируются. Вроде при таком допущении номер сервиса выводится в одно действие )
__________________
Bedankt euch dafür bei euch selbst.

H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
 
Ответить с цитированием

  #12  
Старый 01.06.2009, 11:51
0x0c0de
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме:
4226446

Репутация: 1564
Отправить сообщение для 0x0c0de с помощью ICQ
По умолчанию

Как и обещала, метод я реализовала. Время на радостях после успешно завершенной зачетной недели выкроилось.
Создаем свою SDT, ntoskrnl SST оставляем прежней (копируем из оригинальной SST), создаем свою таблицу вместо win32k.sys SST (при этом указатель на argument table берем из оригинальной таблицы), а адреса всех функций заполняются адресом моего обработчика, затем прописываем новую SDT в KTHREAD.ServiceTable.

Обработчик для всех функций, логирующий номера вызываемых сервисов.

Т.к. приложение, юзающее такое определение номеров сервисов (отсылающее драйверу ioctl запросы) консольное- проблем не возникает.

Код:
 
VOID _declspec(naked) MyHandlerServiceSearch(VOID)
{
	_asm
	{
		pushad

		mov uEax,eax
	}
	KdPrint(("MyHandlerServiceSearch-> Service number = %X\n",uEax));

	if(uServiceCount<6)
	{
		// сохраняем номер сервиса
		uServTable[uServiceCount] = uEax;

		uServiceCount++;

	}
	else KdPrint(("Too many calls"));

	// вычисляем адрес оригинальной функции
	uOriginalCallAddress = (ULONG)uShadow[1].ServiceTable[uEax];

	_asm
	{
		popad

		// вызываем оригинальную функцию
		jmp [uOriginalCallAddress]

	}
}




Надо сказать, что на win7 там иногда не с первого раза определяются номера. причина этого мне неизвестна. Я сделала цикл до тех пор, пока не определится. Кстати, на скрине с семеркой видно, что первая попытка неуспешна, зато на второй раз все определилось.

Однако, все равно остаюсь при своем способе. этот пускай будет

Последний раз редактировалось 0x0c0de; 01.06.2009 в 11:56..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Установка и настройка Tor&Privoxy d3ath *nix 2 24.10.2006 22:02



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ