Вернуться   CoderX :: Forums > Основные форумы > Полезности
Войти через OpenID

Полезности Исключительно для полезных тем из других разделов.
Темы тут не создаются!
Темы сюда перемещаются из других разделов, и на их старых местах остаются постоянные перенаправления.

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 04.05.2012, 23:42   #1
Пользователь
 
Регистрация: 27.10.2009
Сообщений: 63
Сказал Спасибо: 6
Имеет 21 спасибок в 19 сообщенях
Demion пока неопределено
По умолчанию

Да правильно, спасибо за идеи. Я пытался использовать брутфорсный метод. Определил область памяти engine.dll и пытался просканить всю память на совпадение с адресом обьекта. Но приложение просто зависало при таком методе. (не смотря на то, что делал в отдельном потоке)
Demion вне форума   Ответить с цитированием
Старый 04.05.2012, 23:58   #2
Новичок
 
Регистрация: 29.04.2012
Сообщений: 11
Сказал Спасибо: 24
Имеет 2 спасибок в 1 сообщении
qwm пока неопределено
По умолчанию

Первое моё предложение - это то же, что ты и делал, только это вовсе не обязательно делать в приложении. Узнай, что лежит в ecx, а далее отдельным приложением снапшотами найди интересующий тебя модуль (базу и размер) и постранично (4096 байт) считывай ReadProcessMemory. Ну, я думаю, переменная выровнена в памяти align 4, так что можешь чуть ускорить процесс сверки, не проверяя побайтно. Если со спец. софтинами для дампа дружишь, то конечно не обязательно самому так извращаться.
Либо второй метод, но это - если ты с асмом дружишь. Адрес возврата в хуке из стека вытащишь и по нему прочитаешь память. А дальше - дизасм и долгое ковыряние.
Пиши, если какие подводные камни будут.

Upd:
не помню, для какого сервера ты спрашивал значение, но на сервере Дефо (там вроде хай-файв 5) эта переменная видимо лежит по rva 0x0077ed80. При этом сама engine.dll не имеет релоков и грузится по адресу 0x20000000, т.е. адрес всегда 0x2077ed80.
на руофе rva 0x008986d4, дллка имеет релоки.
// если кому-то интересно - это адреса, по которым лежат указатели на объект UNetworkHandler.

Последний раз редактировалось qwm, 07.05.2012 в 23:16. Причина: Upd
qwm вне форума   Ответить с цитированием
За это сообщение qwm нажился 2 спасибками от:
Старый 10.05.2012, 17:30   #3
Новичок
 
Регистрация: 29.04.2012
Сообщений: 11
Сказал Спасибо: 24
Имеет 2 спасибок в 1 сообщении
qwm пока неопределено
По умолчанию

Кто-нибудь в курсе, как на Winx32 получить хендл процесса ла2 руофа из юзер-мода? Он себя прячет, походу хукая соответствующие функции в ssdt из кернел-мода.
Вот как-то глупо получается, что я в него свою длл могу подгрузить самым банальным образом через SetWindowsHookEx, а получить хендл процесса - никак, только через дрова.
qwm вне форума   Ответить с цитированием
Старый 10.05.2012, 17:51   #4
Рыцарь
 
Аватар для Morfik
 
Регистрация: 13.10.2009
Сообщений: 665
Сказал Спасибо: 38
Имеет 172 спасибок в 108 сообщенях
Morfik пока неопределено
По умолчанию

qwm, тебе изнутри процесса получить (из длл подгруженной) хендл надо? GetCurrentProcess()

Ну а по другому не вырубая драйвер фроста или не восстанавливая то что нахукал драйвер не выйдет
__________________
каждый раз, когда ты пишешь int i вместо short i, сотни пользователей вынуждены докупать планку памяти

служба поддержки 4gay - ICQ 642274822
Morfik вне форума   Ответить с цитированием
За это сообщение Morfik нажился спасибкой от:
Старый 10.05.2012, 17:56   #5
Новичок
 
Регистрация: 29.04.2012
Сообщений: 11
Сказал Спасибо: 24
Имеет 2 спасибок в 1 сообщении
qwm пока неопределено
По умолчанию

Изнутри-то - не проблема. Изнутри он и не нужен - годится -1 (INVALID_HANDLE_VALUE). Как раз снаружи кумекаю, можно ли его обдурить.
В принципе, csrss должен иметь хендлы ко всем процессам, можно его там найти и сдупликатить. Но я пока не разобрался, какой объектный тип отвечает хендлам процессов

Последний раз редактировалось qwm, 10.05.2012 в 18:02.
qwm вне форума   Ответить с цитированием
Старый 24.05.2012, 17:55   #6
Новичок
 
Регистрация: 24.05.2012
Адрес: Москва
Сообщений: 2
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
tureh012 пока неопределено
По умолчанию

Да это же не реально. Он же стоит нереально много.
tureh012 вне форума   Ответить с цитированием
Старый 22.08.2012, 00:41   #7
Новичок
 
Аватар для Mlex
 
Регистрация: 01.02.2011
Сообщений: 16
Сказал Спасибо: 15
Имеет 0 спасибок в 0 сообщенях
Mlex пока неопределено
По умолчанию

Привет всем. Есть вопрос по поводу перехвата UNetworkHandler:ispatchNetworkQueue(NetworkPacke t * *)
Я не могу понять как работать с "NetworkPacket * *" что значат две звездочки? указатель на указатель?
и как получить доступ к пакету если указатель на указатель? делаю так:
Код:
UNetworkHandler_DispatchNetworkQueue_hook(UNetworkHandler* This, int fEDX, NetworkPacket** packet)
{
	UNH = This;
	
	if (mSocket.Connected())
	{
		SendToBot(BOT_PKTTYPE_FROM_SERVER, (*packet)->id, (*packet)->subId, (*packet)->size, (*packet)->data);
	}

	return (*UNetworkHandler_DispatchNetworkQueue)(UNH, fEDX, packet);
}
Клиент критует, если убрать отсылку пакета боту(закомментить IF блок) то все работает нормально. Т.е. получается перехват работает, а доступ к пакету - критует. Что не так - не могу понять подскажите?

ЗЫ: ошибки в методе SendToBot быть не может, проверяю отправку через перехваченную функцию UNetworkHandler_AddNetworkQueue_hook(UNetworkHandl er* This, int fEDX /*edx*/, NetworkPacket* packet) все отлично работает, но юзать эту функцию не хочу т.к. палится.
__________________
Ничего не умею
Mlex вне форума   Ответить с цитированием
Старый 22.08.2012, 00:58   #8
Местный
 
Аватар для Yegor
 
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Yegor пока неопределено
По умолчанию

Mlex, что ты такое уже мутишь?
__________________
Продажа чистых аккаунтов 4G, L2 EU, AARu, AA EU, Aion EU, Tera RU, Tera EU (ICQ 594297609)
Продажа VK авторег аккаунтов (ICQ 594297609)
Yegor вне форума   Ответить с цитированием
Старый 22.08.2012, 08:46   #9
Пользователь
 
Регистрация: 27.08.2010
Сообщений: 46
Сказал Спасибо: 6
Имеет 19 спасибок в 12 сообщенях
maxilam пока неопределено
По умолчанию

Цитата:
Сообщение от Mlex Посмотреть сообщение
Я не могу понять как работать с "NetworkPacket * *" что значат две звездочки? указатель на указатель?
Да, это указатель на указатель.
Советую прочитать это тему от начала и до конца, скил по хукам возрастет в несколько раз. вопрос по перехвату этой функции задавался в этой теме несколько раз и даже приводились готовые куски кода (правда на дельфи). Не ленись, вдумчиво изучи тему, много чего полезного узнаешь
maxilam вне форума   Ответить с цитированием
Старый 24.08.2012, 10:15   #10
Новичок
 
Аватар для Mlex
 
Регистрация: 01.02.2011
Сообщений: 16
Сказал Спасибо: 15
Имеет 0 спасибок в 0 сообщенях
Mlex пока неопределено
По умолчанию

maxilam, спасибо - было дело - перечитывал тему. С пакетом разобрался - просто не всегда указатель указывает на указатель - иногда на 0 Ведь функция вызывается в цикле потока и не всегда есть пакет который нужно обрабатывать все оказалось проще.
__________________
Ничего не умею
Mlex вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Основные форумы > Полезности



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 14:37.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!