Ru-MaNGOS

Вернуться   Ru-MaNGOS > Ядро > Опкоды, Формулы, Клиент

Важная информация

Опкоды, Формулы, Клиент Разбор и изучение взаимодействия клиента с сервером

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.05.2011, 08:52   #201
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию

Я правильно понимаю принцип декриптации:

первые 4(из них 2 без опкодных) пакет не зашифрованы. Начиная с пятого идут шифрованные пакеты. Для расшифровки нам нужны сиды из пакета аутентификации и сессион кей. С помощью этого расшифровываем пакета. Все верно или я что-то упустил?
Lordronn вне форума   Ответить с цитированием
Старый 27.05.2011, 09:30   #202
Konctantin
RuDB Dev
 
Аватар для Konctantin
 
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
Konctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всем
По умолчанию

Сначала используются сиды по умолчанию, а потом по уже вытягиваются из пакета...
__________________
Konctantin вне форума   Ответить с цитированием
Старый 27.05.2011, 09:57   #203
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию

А, т.е первые 4 все же зашифрованы, но default сидами
Lordronn вне форума   Ответить с цитированием
Старый 27.05.2011, 09:59   #204
Konctantin
RuDB Dev
 
Аватар для Konctantin
 
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
Konctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всем
По умолчанию

нет, они не зашифрованы, просто после них надо декриптовать с default сидами, а уже после установки новых коннектов - вытаскивать из пакетов.
__________________
Konctantin вне форума   Ответить с цитированием
Старый 27.05.2011, 14:14   #205
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию

Так пакет с сидами идет почти с сразу. Он то ли третий, то ли четвертый. или мы его пропускаем и ждем такой же следующий? А до него все расшифровываем default сидами
Lordronn вне форума   Ответить с цитированием
Старый 27.05.2011, 16:38   #206
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от Lordronn Посмотреть сообщение
Так пакет с сидами идет почти с сразу. Он то ли третий, то ли четвертый. или мы его пропускаем и ждем такой же следующий? А до него все расшифровываем default сидами
Вот я написал примерный код для расшифровки RAW 3.1, только не тестил: https://gist.github.com/995263
LordJZ вне форума   Ответить с цитированием
Старый 27.05.2011, 16:54   #207
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от Lordronn Посмотреть сообщение
Так пакет с сидами идет почти с сразу. Он то ли третий, то ли четвертый. или мы его пропускаем и ждем такой же следующий? А до него все расшифровываем default сидами
для первого соединения используют дефолтовые сиды, а для всех последующих берутся из серверного пакета
Йоха вне форума   Ответить с цитированием
Старый 28.05.2011, 16:59   #208
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию

1.Хм, если я решу сменить реалм не входя в игру, то у меня откроется новое соединение. Получается для пакетов с этого соединения надо будет использовать сиды из пакета? Или только для игровых пакетов, которые идут при входе на персонажа????

2.Как отследить время, когда надо закрывать соединение? Единственное что приходит в голову, там это смотреть когда придет реконект пакет и закрывать соединение, с которого оно пришло

Последний раз редактировалось Lordronn; 28.05.2011 в 17:41.
Lordronn вне форума   Ответить с цитированием
Старый 29.05.2011, 12:23   #209
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от Lordronn Посмотреть сообщение
1.Хм, если я решу сменить реалм не входя в игру, то у меня откроется новое соединение. Получается для пакетов с этого соединения надо будет использовать сиды из пакета? Или только для игровых пакетов, которые идут при входе на персонажа????
неважно куда соединение, первое - сиды по умолчанию, все остальные из пакета

Цитата:
Сообщение от Lordronn Посмотреть сообщение
2.Как отследить время, когда надо закрывать соединение? Единственное что приходит в голову, там это смотреть когда придет реконект пакет и закрывать соединение, с которого оно пришло
ничего не нужно отслеживать, клиент сам все закрывает
Йоха вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Lordronn (29.05.2011)
Старый 07.07.2011, 09:00   #210
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

Наконец-то на работе смог зайти в ВоВ после патча 4.2.
Близы что-то накосячили с поддержкой uPnP, получилось зайти в мир только после того как отключил в ADSL модеме поддержку uPnP. Хотя может это DLINK криво этот протокол реализовал в модеме...

Поправил снифер до 14333 билда, собственно все как обычно: новые опкоды, новый адрес ключа, новый порядок сборки сидов
Йоха вне форума   Ответить с цитированием
Старый 07.07.2011, 12:16   #211
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию

Везет, а я с 4.1.0 совокуплялся дня 3 без перерыва. Так и не собрал нормальный декриптор.
Lordronn вне форума   Ответить с цитированием
Старый 07.07.2011, 15:04   #212
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

пиши сюда в чем затык, буду подсказывать
Йоха вне форума   Ответить с цитированием
Старый 07.07.2011, 16:35   #213
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию

Решил переписать его почти с 0. Оставлю только саму прокси часть и мемори ридер. Начал с обнаружения сессион кея. Надеюсь я все верно нашел

Код:
public long SessionKey = 0x00D7DA5C;
Lordronn вне форума   Ответить с цитированием
Старый 07.07.2011, 18:45   #214
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию

Пошаманил я с декриптором, но оценить работу не могу ввиду отсутствия многих данных. Я пока смог найти только 2 пакета:

Код:
SMSG_AUTH_CHALLENGE = 35856,
CMSG_AUTH_SESSION = 10656,
Со второго соединения поймал пакет. Опкод = 416, длина 36 байт. Это случайно не CMSG_AUTH_CONTINUED_SESSION ?

Дальше он ничего не уловил, что и не странно.

В 4.2.0 SMSG_AUTH_CHALLENGE порядок чтения сидов тотже? Я пытался выяснить это сам с помощью ИДЫ, но ничего толком не понял в этом обработчике

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 15 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.
Lordronn вне форума   Ответить с цитированием
Старый 07.07.2011, 20:44   #215
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

Адрес ключа верный.

Сборка сидов совершенно ясно описана в функции
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 50 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.


С опкодами еще проще, в первом соединении после дурацких безопкодных пакетов идут подряд
SMSG_AUTH_CHALLENGE
CMSG_AUTH_SESSION
А во втором
SMSG_AUTH_CHALLENGE
CMSG_AUTH_NEW_SESSION (или как у тебя называется CMSG_AUTH_CONTINUED_SESSION )

Последний раз редактировалось Йоха; 07.07.2011 в 21:06.
Йоха вне форума   Ответить с цитированием
Старый 07.07.2011, 21:30   #216
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию

Ясно, а я пытался разобраться в PH_SMSG_AUTH_CHALLENGE)


А как быть с ASLR? Читаю и получаю одни нули. Читаю после AUTH_NEW_SESSION

Сделать как говорит Константин

Цитата:
Сообщение от Konctantin Посмотреть сообщение
да, это она противная и была,
Код:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management]
"MoveImages"=dword:00000000
Оффеты верны, ключ получил и локаль тоже
не получается, из-за отсутствия в реестре MoveImages на Win7 x64 Ultimate. Использовал глаза и поиск - нету. Дебаг привилегия присутствует

Последний раз редактировалось Lordronn; 07.07.2011 в 21:35.
Lordronn вне форума   Ответить с цитированием
Старый 07.07.2011, 21:38   #217
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

Ну правильно, его там нет по умолчанию, создай этот параметр

Или используй метод чтения памяти процесса с учетом ASLR, тут на форуме где-то была тема, там я и ТОМ_РУС выкладывали решение, вот тема

Последний раз редактировалось Йоха; 07.07.2011 в 21:40.
Йоха вне форума   Ответить с цитированием
Старый 08.07.2011, 13:34   #218
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию

А может быть такое, что пакет разбило не на 2 части, а на 21? Я тут сделал вывод информации дабы посмотреть. Увидел что 1 пакет разбили на 22 части.
Lordronn вне форума   Ответить с цитированием
Старый 08.07.2011, 13:45   #219
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

Конечно может.
Данные приходят в программу по протоколу TCP, а уж пакеты ВоВ собирай сам.
Нет никакого правила какими кусками данные будут поступать в твою программу, это зависит от типа подключения, загруженности канала, сетевого оборудования, настроек сети, провайдера и еще фиг знает от чего.

Например у меня проверяется в таком порядке:
0. Получаем данные с сокета, копируем в буфер.
1. Ожидаем недостающие данные или ждем начало нового пакета?
2. Хватает данных для обработки заголовка пакета ? (размер данных минимум 4 байта (сервер) или 6 (клиент), если нет то переходим к 0.
3. Проверка на "большой" пакет
4. Хватат ли данных для большого пакета ? (плюс 1 байт), если нет то переходим к 0.
5. В этом месте уже ясно что за опкод и размер пакета. Следовательно ждем данные равные размеру пакета
6. Пакет есть в буфере целиком - обрабатываем его, если нет то переходим к 0.
7. Повторяем с пункта 2 пока данные в буфере не закончились, иначе переходим к 0.

Последний раз редактировалось Йоха; 08.07.2011 в 14:00.
Йоха вне форума   Ответить с цитированием
Старый 08.07.2011, 14:22   #220
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию

У меня почти также. Осталось побороть ASLR. Не очень понял зачем нужен BaseAddress в C#. Для чтения я прибегнул к функции ReadProcessMemory из библиотеки kernel32.

В ХР я читал так

Код:
        public byte[] ReadSessionKey()
        {
            using (ProcessMemoryReader reader = new ProcessMemoryReader("wow"))
            {
                return reader.Read(reader.ReadInt(_wow.SessionKey) + _wow.Offset, 40L);
            }
        }
Код:
        public long SessionKey = 0x00D7DA5C;
        public long Offset = 0x508;
Lordronn вне форума   Ответить с цитированием
Старый 08.07.2011, 15:39   #221
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

По умолчанию в виндах до версии 7 процесс загружается в память по виртуальному адресу 0x00400000, и этот адрес не меняется для всех программ (если не предпринимать специальных действий для этого).
В семерке поменяли механизм загрузки процессов в память и теперь (при включеном ASLR, а он по умолчанию включен) базовый адрес выбирает неким случайным образом винда.
И адрес 0x00D7DA5C который мы берем из IDA (которая тоже предполагает что процесс грузится по адресу 0x00400000) будет неверным если винда выберет любой другой базовый адрес.
Что бы исправить это недоразумение вычисляем смещение адреса ключа относительно базового адреса 0x00400000 (0x00D7DA5C - 0x00400000 = 0x0097DA5C).
В снифере получаем BaseAdress процесса wow.exe, прибавляем к нему полученный 0x0097DA5C и получаем валидный адрес по которому находится ключ в памяти с учетом ASLR.

Последний раз редактировалось Йоха; 08.07.2011 в 19:58.
Йоха вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
HuntsMan (12.07.2011), Lordronn (08.07.2011)
Старый 08.07.2011, 16:51   #222
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию

Собственно с ключем вроде разобрался благодаря Косте! Хотяя вроде все ровно не тот ключ, ибо после разбора пакетов получаю большой размер.Йоха, можешь кинуть лог я посмотрю правильно ли декриптую или нет по номерам опкодов

Последний раз редактировалось Lordronn; 08.07.2011 в 18:55.
Lordronn вне форума   Ответить с цитированием
Старый 08.07.2011, 18:58   #223
Sid
Ученый
 
Аватар для Sid
 
Регистрация: 02.04.2010
Сообщений: 237
Сказал(а) спасибо: 41
Поблагодарили 99 раз(а) в 44 сообщениях
Sid Скоро придёт к известностиSid Скоро придёт к известности
По умолчанию

__________________
SpellWork Qt4
Sid вне форума   Ответить с цитированием
Старый 08.07.2011, 19:47   #224
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от Lordronn Посмотреть сообщение
Йоха, можешь кинуть лог я посмотрю правильно ли декриптую или нет по номерам опкодов
лог чего ? Работы снифера ?
ну вот, включил вывод отладочной информации в консоль (это логин до состояние окна выбора персонажа):
Код:
ready
connect 195.12.234.53:80
close   195.12.234.53:80
connect 213.248.127.130:1119
connect 195.12.246.220:3724
* StartSession
S opcode=0x0000 len=    48  , ip = 195.12.246.220:3724 (009C)
C opcode=0x0000 len=    48  , ip = 195.12.246.220:3724 (009C)
S opcode=0x8C10 len=    39  , ip = 195.12.246.220:3724 (009C)
C opcode=0x29A0 len=   360  , ip = 195.12.246.220:3724 (009C)
got key
S opcode=0xBEFB len=    14  , ip = 195.12.246.220:3724 (009C)
S opcode=0x0B27 len=   882  , ip = 195.12.246.220:3724 (009C)
S opcode=0x6AAE len=   262  , ip = 195.12.246.220:3724 (009C)
S opcode=0xA237 len=     6  , ip = 195.12.246.220:3724 (009C)
S opcode=0x7E72 len=    34  , ip = 195.12.246.220:3724 (009C)
S opcode=0x0410 len=   271  , ip = 195.12.246.220:3724 (009C)
connect 195.12.246.219:3724
S opcode=0x0000 len=    48  , ip = 195.12.246.219:3724 (0104)
C opcode=0x0000 len=    48  , ip = 195.12.246.219:3724 (0104)
S opcode=0x8C10 len=    39  , ip = 195.12.246.219:3724 (0104)
C opcode=0x01A0 len=    40  , ip = 195.12.246.219:3724 (0104)
C opcode=0xF226 len=     4  , ip = 195.12.246.220:3724 (009C)
C opcode=0x1091 len=     4  , ip = 195.12.246.220:3724 (009C)
C opcode=0xB6E2 len=     8  , ip = 195.12.246.220:3724 (009C)
S opcode=0x8490 len=     6  , ip = 195.12.246.220:3724 (009C)
C opcode=0x09A0 len=     8  , ip = 195.12.246.220:3724 (009C)
S opcode=0x0C10 len=     2  , ip = 195.12.246.219:3724 (0104)
C opcode=0x0920 len=     8  , ip = 195.12.246.220:3724 (009C)
close   195.12.246.220:3724
S opcode=0x3C02 len=   331  , ip = 195.12.246.219:3724 (0104)
C opcode=0x7E3B len=     8  , ip = 195.12.246.219:3724 (0104)
C opcode=0x7E3B len=     8  , ip = 195.12.246.219:3724 (0104)
C opcode=0x7E3B len=     8  , ip = 195.12.246.219:3724 (0104)
S opcode=0xAA66 len=   505  , ip = 195.12.246.219:3724 (0104)
S opcode=0xAA66 len=   146  , ip = 195.12.246.219:3724 (0104)
S opcode=0xAA66 len=   611  , ip = 195.12.246.219:3724 (0104)
S opcode=0x7A36 len=    39  , ip = 195.12.246.219:3724 (0104)
C opcode=0xE2FB len=     5  , ip = 195.12.246.219:3724 (0104)
S opcode=0x7A36 len=   505  , ip = 195.12.246.219:3724 (0104)
S opcode=0x7A36 len=   505  , ip = 195.12.246.219:3724 (0104)
S opcode=0x7A36 len=   505  , ip = 195.12.246.219:3724 (0104)
S opcode=0x7A36 len=   505  , ip = 195.12.246.219:3724 (0104)
S opcode=0x7A36 len=   505  , ip = 195.12.246.219:3724 (0104)
S opcode=0x7A36 len=   505  , ip = 195.12.246.219:3724 (0104)
S opcode=0x7A36 len=   505  , ip = 195.12.246.219:3724 (0104)
S opcode=0x7A36 len=   505  , ip = 195.12.246.219:3724 (0104)
Добавлено через 2 минуты
Цитата:
Сообщение от Sid Посмотреть сообщение
Я c# не знаю вообще, пишу на с++.
Ну а механизмы они от языка не зависят -) Почитай эту тему с начала, тут очень много полезной информации, я сам начал писать снифер с нуля читая эту тема и задавая вопросы про непонятные места. Если что неясно, спрашивай, всегда готов ответить на вопросы.

Последний раз редактировалось Йоха; 08.07.2011 в 20:15.
Йоха вне форума   Ответить с цитированием
Старый 08.07.2011, 22:57   #225
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию

Те, которые не зашифрованны идут нормально, что и не странно, а вот дальше идет бред. Размер самого пакета 16 байт, а после декриптовки получаю 17кб, при том что это пакет целый, а не частичный.

Уже перебрал все возможные варианты происходящего, но ничего не помогло. Размер и опкоды коряво определяются.

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 120 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.
Lordronn вне форума   Ответить с цитированием
Старый 08.07.2011, 22:59   #226
RomanRom2
WowCore Dev
 
Аватар для RomanRom2
 
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
RomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всем
По умолчанию

значит ключ неправильный.
RomanRom2 вне форума   Ответить с цитированием
Старый 08.07.2011, 23:03   #227
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию

Я пропатчил реестр дабы вырубить ASLR, Йоха подтвердил что адрес верный. Чтение ключа идет верно
Lordronn вне форума   Ответить с цитированием
Старый 09.07.2011, 08:33   #228
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от Lordronn Посмотреть сообщение
Я пропатчил реестр дабы вырубить ASLR, Йоха подтвердил что адрес верный. Чтение ключа идет верно
Сиды правильно собираются ?

Покажи свой кусок кода где идет расшифровка заголовка пакета.
Йоха вне форума   Ответить с цитированием
Старый 09.07.2011, 13:30   #229
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 120 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.
Lordronn вне форума   Ответить с цитированием
Старый 09.07.2011, 14:23   #230
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Костя видимо вам скинул мой старый код от 4.0.6. Он не предназначен для работы с 4.1.0+.
LordJZ вне форума   Ответить с цитированием
Старый 09.07.2011, 16:59   #231
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию

Простите, а вы рабочем не поделитесь?
Lordronn вне форума   Ответить с цитированием
Старый 09.07.2011, 23:12   #232
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Напишите самостоятельно.
LordJZ вне форума   Ответить с цитированием
Старый 12.07.2011, 09:59   #233
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

Посетила мысль сделать очередной вариант снифера -) На этот раз он самодостаточен.
Тип - перехват функций WIN32 API. Перехватываются соответственно winsock функции: bind, connect, recv, send. Возможно что-то еще надо будет перехватывать ... там разберемся.
Преимущества такого подхода в том что не нужно городить огород из проксификаторов или подобных программ, ну и конечно то что можно влиять на происходящее - подменять данные, адреса и т.д. на лету. К тому же разбор данных не усложняется, а остается такой же как в прокси варианте снифера. Мы так же получаем готовые данные с сокета. И еще немаловажный момент - с точки зрения API все делается легально, никаких "грязных хаков" -). Память процесса wow.exe не меняется, warden спокойно курит.

На данный момент опытный образец успешно отлавливает требуемые функции, и вызывает оригинальные из ws2_32.dll. Вов работает, логинится в мир и все выглядит как будто ничего не происходит.
Йоха вне форума   Ответить с цитированием
Старый 12.07.2011, 10:35   #234
RomanRom2
WowCore Dev
 
Аватар для RomanRom2
 
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
RomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всем
По умолчанию

четвертое поколение?
RomanRom2 вне форума   Ответить с цитированием
Старый 12.07.2011, 10:56   #235
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от RomanRom2 Посмотреть сообщение
четвертое поколение?
Мне кажется у тебя другой принцип используется

В моем варианте просто перехват функций API, с сетевой моделью никак не связано, перехват осуществляется так же как и для любой другой функции.
Кстати посмотрел wow.exe импортирует функции из wininet.dll, видимо загружает файлы с веб сервера при помощи InternetreadFileExA, надо проверить что он там загружает и если что, то можно сделать сохранялку этих файлов себе куда-нибудь.
Йоха вне форума   Ответить с цитированием
Старый 12.07.2011, 15:37   #236
RomanRom2
WowCore Dev
 
Аватар для RomanRom2
 
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
RomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всем
По умолчанию

винапишный хук по моему близзами палится.
все таки на данный момент безопасным способом является либо прокси/проксификатор, либо pcap/pssdk. самым скрытым и неспалеваемым способом по прежнему остается "четвертое поколение" (LSP), т.к. работает на уровне ос, куда приложению не добраться.
RomanRom2 вне форума   Ответить с цитированием
Старый 12.07.2011, 15:52   #237
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

У меня не хук, это раз
Перехват API можно делать разными способами это два
Первый - правка таблицы импорта - палево, ибо изменяется память процесса
Второй - splicing - не все антивирусы даже палят такое дело. меняется код самой API функции

Ну и как показывает практика, вов нормально работает.

Насчет бесплалевности LSP весьма сомнительно...
Ничто не мешает близам запустить во время работы вов драйвер и спалить все потроха ОС и все что хочешь...

Последний раз редактировалось Йоха; 12.07.2011 в 16:19.
Йоха вне форума   Ответить с цитированием
Старый 12.07.2011, 22:33   #238
RomanRom2
WowCore Dev
 
Аватар для RomanRom2
 
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
RomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всем
По умолчанию

сплайсинг сам по себе тоже по сути хук. причем при кажущейся перспективности - один хрен в чужой процесс лезть надо. то есть инжект. а дальше пошло поехало: ридПроцессМемори, РайтПроцессМемори, проблемы ASLR и тд и тп. насчет антивирусов - они это палят только в путь, особенно если реализация сделана баяном с прологом в 5 байт, антивирусы (все) проверяют прологи на джамп за пределы модуля.

беспалевность LSP без всякого сомнения вытекает из самой технологии. никакое приложение не видит и не может видеть этого уровня.

что бы близы запустили на моей машине драйвер, они должны будут его проинсталить. а это права администратора и мое на то разрешение - как минимум. ты что, близзов сожрут нахрен с потрохами, если они начнут лезть в ядро системы. очень и очень много параноиков, трясущихся за свою ******у на винте и пароли от одноклассников.
RomanRom2 вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Старый 13.07.2011, 07:18   #239
GriffonHeart
Гость
 
Сообщений: n/a
По умолчанию

Цитата:
Сообщение от RomanRom2 Посмотреть сообщение
очень и очень много параноиков, трясущихся за свою ******у на винте и пароли от одноклассников.
Последнее улыбнуло
  Ответить с цитированием
Старый 13.07.2011, 07:24   #240
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

ASLR - проблема это только проблема если атакуется комп через сеть, когда нет доступа к компьютеру.
Если атака делается уже с этого компьютера то базовый адрес приложения вычисляется тремя строчками кода. Так что никакой проблемы на самом деле нет.

Все остальное верно, но не существенно. Так сказать на летные характеристики не влияет.

Я уже реализовал подход с перехватом как ты говоришь "баянистым" -) путем джампа на месте стандартного пролога. и все чудесно, антивирь молчит, вов играет, я получаю данные.
Кстати есть такая штука: detours - автор сама MS, сейчас это монстрило стоит 10к зелени, но первый ее простой вариант в виде одного .h и 1 .cpp файла прекрасно справляется с поставленой задачей
Йоха вне форума   Ответить с цитированием
Ответ


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

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



Текущее время: 10:04. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot