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

Программинг Форум для тем связанных с программированием

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 10.08.2011, 22:10   #1
Пользователь
 
Аватар для ALF
 
Регистрация: 18.09.2010
Адрес: Киев
Сообщений: 70
Сказал Спасибо: 9
Имеет 10 спасибок в 6 сообщенях
ALF пока неопределено
По умолчанию CCP (dsetup.dll)

И так. В общем суть вопроса.
Где могут быть функции Шифровки исходящего и дешифровки входящего трафика.... Где же админам было наиболее выгодно вставить его... Какие функции перехвачивают... Помогите плиз)

Кстати алгортим шифрования пакетов у ССP - RC4

вот так вот выглядят функции шифровки в сервер части...
Код:
final int arcfour_byte()
	{
		int x;
		int y;
		int sx, sy;
		
		x = (this.x + 1) & 0xff;
		sx = (int)state[x];
		y = (sx + this.y) & 0xff;
		sy = (int)state[y];
		this.x = x;
		this.y = y;
		state[y] = (byte)(sx & 0xff);
		state[x] = (byte)(sy & 0xff);
		return (int)state[((sx + sy) & 0xff)];
	}

    public synchronized boolean encrypt(byte src[], int srcOff, byte dest[], int destOff, int len)
    {
        if(!_inited)
            return false;
        int end = srcOff + len;
        int si = srcOff;
        for(int di = destOff; si < end; di++)
        {
            dest[di] = (byte)((src[si] ^ arcfour_byte()) & 0xff);
            si++;
        }
		return true;
    }

    public boolean decrypt(byte src[], int srcOff, byte dest[], int destOff, int len)
    {
       if (encrypt(src, srcOff, dest, destOff, len))
			return true;
		return false;
    }
__________________
Все относительно...
ALF вне форума   Ответить с цитированием
Старый 10.08.2011, 22:18   #2
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

в сенд пакете оригинальную функцию шифровки подменяют, насчет входящего, думаю где-то в той функции которая вызывает recv, а потом собирает TNetworkPacket и в АддНетворк пускает тоже есть вызов ориг функции дешифровки
__________________
Начало.
supernewbie вне форума   Ответить с цитированием
Старый 10.08.2011, 22:40   #3
Пользователь
 
Аватар для ALF
 
Регистрация: 18.09.2010
Адрес: Киев
Сообщений: 70
Сказал Спасибо: 9
Имеет 10 спасибок в 6 сообщенях
ALF пока неопределено
По умолчанию

Ммм а подскажите народ))
Как найти ....::SendPacket?
Желательно через VMT что бы потом туда свою пихнуть
__________________
Все относительно...
ALF вне форума   Ответить с цитированием
Старый 11.08.2011, 13:34   #4
Рыцарь
 
Аватар для destructor
 
Регистрация: 26.06.2009
Сообщений: 2,433
Сказал Спасибо: 154
Имеет 692 спасибок в 426 сообщенях
destructor на пути к лучшему
По умолчанию

Цитата:
Сообщение от ALF Посмотреть сообщение
Желательно через VMT что бы потом туда свою пихнуть
знает про VMT и следит чтобы туда "свои" не пихали
__________________
Шожиделать.. ботить хочется..
destructor вне форума   Ответить с цитированием
Старый 10.08.2011, 23:11   #5
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

ну клиент ищет так

mov eax, [ecx+48h]
mov ecx, [eax]
mov edx, [ecx+6Ch]

в ecx в начале экземпляр UNetworkHandler'а
__________________
Начало.
supernewbie вне форума   Ответить с цитированием
Старый 11.08.2011, 00:17   #6
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию

Код:
sendpacket
.......
203D8C47: 7419      jz 203D8C62h если var networkobject.[+00009148h] = 0 то пропускаем (чего быть не должно)
 203D8C49: 8B16      mov edx, [esi]
 203D8C4B: 8B527C    mov edx, [edx+7Ch]
 203D8C4E: 8D43FE    lea eax, [ebx-02h]
 203D8C51: 50        push eax
 203D8C52: 8D8E4C910000lea ecx, [esi+0000914Ch]
 203D8C58: 51        push ecx
 203D8C59: 8D442416  lea eax, [esp+16h]
 203D8C5D: 50        push eax
 203D8C5E: 8BCE      mov ecx, esi
 203D8C60: FFD2      call edx            // CRYPT
203D8C62: 83BE14A1000000cmp [esi+0000A114h], 00000000h
......
Добавлено через 3 минуты
в ESI вроде как какраз тот объект который передаетса в сенд.
шифровалка тогда получаетса по смещению 7Ch в его VMT

Добавлено через 5 минут
Код:
mov eax, [ecx+48h]
mov ecx, [eax]
mov edx, [ecx+7Ch]
если в ЕСХ нетворкхандлер то в едх получим CryptPacket
__________________
читернуть бы ништяг

Последний раз редактировалось mira, 11.08.2011 в 00:17. Причина: Добавлено сообщение
mira вне форума   Ответить с цитированием
Старый 11.08.2011, 21:25   #7
Пользователь
 
Аватар для ALF
 
Регистрация: 18.09.2010
Адрес: Киев
Сообщений: 70
Сказал Спасибо: 9
Имеет 10 спасибок в 6 сообщенях
ALF пока неопределено
По умолчанию

Ммм... и так)

что у меня получилось

Код:
.........
macro m2m dst*,src* {
    pushd src
    popd dst
}
.........
proc HookMethod uses edi, Table:DWORD,Method:DWORD,Hook:DWORD
    mov ecx,-1
    cld
    mov edi,[Table]
    mov eax,[Method]
    repnz scasd
    m2m dword[edi-4],[Hook]
    ret
endp
.........
proc Init_Hook
    mov dword[UNHandler],ecx
    jmp [UNHandlerInit]
endp
..........
stdcall HookMethod,[UNHandlerTable],[UNHandlerInit],Init_Hook
......
В UNHandler у меня по идеи UNetworkHandler

Код:
mov ecx, [UNHandler]
mov eax, [ecx+48h]
mov ecx, [eax]
mov edx, [ecx+7Ch]
Цитата:
если в ЕСХ нетворкхандлер то в едх получим CryptPacket
Это для всех хроник актуально? (точнее для ИТ и ГФ одинаково?)
__________________
Все относительно...
ALF вне форума   Ответить с цитированием
Старый 12.08.2011, 21:35   #8
Пользователь
 
Аватар для ALF
 
Регистрация: 18.09.2010
Адрес: Киев
Сообщений: 70
Сказал Спасибо: 9
Имеет 10 спасибок в 6 сообщенях
ALF пока неопределено
По умолчанию

И так...
Появилась потребность в восстановлении функции RequestAuthLogin
Смотрим, комментируем)
то что это не правильно - 100%
Но успех где то рядом
Код:
proc RequestAuthLogin_Hook uses esi, pLogin:DWORD,pPassword:DWORD,Param:DWORD
local loginBuf[256]:WORD
local passBuf[256]:WORD
	xor eax,eax
	mov eax, [pLogin]
	invoke ChekLoginPass,loginBuf,eax,0Eh
	MOV ESI,ECX
	MOV ECX,[pPassword]
	invoke ChekLoginPass,passBuf,ecx,10h
	
	MOV EDX,[Param]
	;MOV DWORD[B6AEB4],EDX
	
	MOV EAX,DWORD[ESI+4Ch]
	MOV DWORD [EAX+111ECh],1
	MOV ECX,DWORD[ESI+4Ch]
	MOV DWORD[ECX+111E8h],1
	MOV EAX,DWORD [ESI+4Ch]
	;ADD ESP,18h
	LEA EDX,DWORD[EAX+10858h]
	PUSH EDX 
	CALL Engine.0084F980  ; <<<--- Функция установки коннекта
	ret
endp
__________________
Все относительно...
ALF вне форума   Ответить с цитированием
Старый 13.08.2011, 04:25   #9
Пользователь
 
Аватар для mOBSCENE
 
Регистрация: 07.01.2008
Сообщений: 39
Сказал Спасибо: 11
Имеет 3 спасибок в 3 сообщенях
mOBSCENE
По умолчанию

Код:
proc RequestAuthLogin_Hook uses esi, pLogin:DWORD,pPassword:DWORD,Param:DWORD
local loginBuf[256]:WORD
local passBuf[256]:WORD
	xor eax,eax
	mov eax, [pLogin] ;если я правильно понял, то ты тут копируешь 2 (UNICODE) или 4(ANSI) символа из строки в eax, а не адрес, если хочешь скопировать адрес (указатель) на строку в eax то пиши: lea eax,pLogin или mov eax, offset pLogin не проверял, но должно быть одно и тоже.
	invoke ChekLoginPass,loginBuf,eax,0Eh
	MOV ESI,ECX
	MOV ECX,[pPassword] ;тогда тут так: lea eax,pPassword или mov eax, offset pPassword
	invoke ChekLoginPass,passBuf,ecx,10h
	
	MOV EDX,[Param] ;тогда тут так: lea eax,Param или mov eax, offset Param
	;MOV DWORD[B6AEB4],EDX ; тут писать DWORD не обязательно, если работаешь с 32 битным регистром, там и так DWORD будет
	
	MOV EAX,DWORD[ESI+4Ch] ; и тут можно без DWORD
	MOV DWORD [EAX+111ECh],1
	MOV ECX,DWORD[ESI+4Ch] ; и тут можно без DWORD
	MOV DWORD[ECX+111E8h],1
	MOV EAX,DWORD [ESI+4Ch] ; и тут можно без DWORD
	;ADD ESP,18h
	LEA EDX,DWORD[EAX+10858h] ; и тут можно без DWORD
	PUSH EDX 
	CALL Engine.0084F980  ; <<<--- Функция установки коннекта
	ret
endp
Извиняюсь за грамотейство, не исключено, что я там наплужил или нет, ночь всетаки..))
__________________
Блекджек же без шлюх практически безопасен.

Последний раз редактировалось mOBSCENE, 13.08.2011 в 04:30. Причина: +
mOBSCENE вне форума   Ответить с цитированием
Старый 13.08.2011, 12:24   #10
Пользователь
 
Аватар для ALF
 
Регистрация: 18.09.2010
Адрес: Киев
Сообщений: 70
Сказал Спасибо: 9
Имеет 10 спасибок в 6 сообщенях
ALF пока неопределено
По умолчанию

в ЕАХ нам надо указатель на строку)
Точнее указатель на пустой buf для логина.
Зачем - без понятие.
Его клиент использует при проверке на "пустоту" логина и пасса)
хотя указатель на логин и пасс приходит в аргументах самой функции О_о
__________________
Все относительно...
ALF вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Основные форумы > Программинг



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

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


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

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

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