-
> MALAN © (26.02.09 20:54) [18]
> Ну хорошо, напрямую провайдеру
Вот теперь понятно, что локальный перехват трафика остается единственным решением.
Долго же ты ломался)
> что дальше?
Дальше либо надежное, но сложное в реализации решение с NDIS Miniport-драйвером либо ненадежное и не менее сложное решение с драйвером, инжектирующим dll-перехватчик.
-
> Его почтовый трафик заботит, а не гипертекстовый..
Так, но вот что он написал в [4]
> Скорее уж прокси-сервер
На самом деле именно так и нужно, а файрволом надо запретить выход на XXX.XXX.XXX.XXX:25, только на zzz.zzz.zzz.zzz:25 при том обязательно с аутентификацией. Именно почти так у меня и сделано, мне просто не нужно изменение.
-
Сергей М. © (27.02.09 09:03) [20]
>Дальше либо надежное, но сложное в реализации решение с NDIS Miniport->драйвером либо ненадежное и не менее сложное решение с драйвером, >инжектирующим dll-перехватчик.
Гора родила мышь;)
Anatoly Podgoretsky © (27.02.09 09:51) [21] >На самом деле именно так и нужно, а файрволом надо запретить выход на >XXX.XXX.XXX.XXX:25, только на zzz.zzz.zzz.zzz:25 при том обязательно с >аутентификацией. Именно почти так у меня и сделано, мне просто не >нужно изменение.
Что то мне подсказывает что почтовые программы в этом случае необходимо будет перенастраивать.
P.S.Если уж на то пошло то прокси-сервер это и есть фаерволл уровня приложений
-
Удалено модератором Примечание: дубль
-
> прокси-сервер это и есть фаерволл
Прокси это прокси, а файрвол это файрвол. У них очень разные задачи.
> Гора родила мышь
А ты что хотел ?)
-
> Если уж на то пошло то прокси-сервер это и есть фаерволл > уровня приложений
Ага, а сыр - это сметана )
-
Palladin © (27.02.09 14:09) [25] >> Если уж на то пошло то прокси-сервер это и есть фаерволл >> уровня приложений
>Ага, а сыр - это сметана )
А ты попробуй ввести в поиск "брандмауэр сетевого сеансового прикладного уровня", узнаешь много нового:)
-
> MALAN © (27.02.09 14:18) [26]
А не надо нам тут америки открывать)
Да, по мере продвижения к вершине OSI-модели грани разничий в функциональности файрволов и прокси-сервисов становятся все более малоразличимы.
Только в твоем случае тебя это уже никак не касается - интересующая тебя приблуда не имеет отношения к межсетевому взаимодействию.
-
> MALAN © (27.02.09 14:18) [26]
Я спорю что ли? ) Сыр и сметана - оба продукта молочные. ) Однако ни кто же не утверждает, что сыр это по сути сметана, на уровне исходных материалов )
Если два чего то растут из одного места - низя утверждать что одно есть, по сути, второе и наоборот.
-
Сергей М. © (27.02.09 14:51) [27];
Может тогда всё-таки поможешь?:)
Нарыл библиотеку для перехвата, но вот как запустить одну из функций (вообщем-то самую главную, установка зука методом сплайсинга) не понял: function SetProcedureHook(ModuleHandle:HMODULE;ProcedureName:PChar;NewProcedureAddress:Po inter; RestoreDATA:PFunctionRestoreData):Boolean; Что в параметрах писать? ProcedureName вроде как "Connect", а остальное?
-
Palladin © (27.02.09 15:25) [28]
>> MALAN © (27.02.09 14:18) [26]
>Я спорю что ли? ) >Сыр и сметана - оба продукта молочные. ) Однако ни кто же не >утверждает, что сыр это по сути сметана, на уровне исходных материалов )
>Если два чего то растут из одного места - низя утверждать что одно есть, >по сути, второе и наоборот.
Короче "медведь и панда"(c).... я тебя понял:)
-
> а остальное?
ModuleHandle - хэндл модуля ws2_32.dll в АП процесса-жертвы.
NewProcedureAddress - адрес твоей собственной функции, куда будет передано управление в рез-те вызова жертвой ф-ции Connect
RestoreDATA - это, видимо, указатель на область данных в твоей DLL, куда при сплайсинге будет сохранен оригинальный фрагмент контекста перехватываемой тобой функции
-
> MALAN
При прочих равных условиях в твоем случае я бы предпочел не сплайсинг, а модификацию EAT/IAT.
-
>Сергей М. © (27.02.09 15:55) [31]
>ModuleHandle - хэндл модуля ws2_32.dll в АП процесса-жертвы.
ясно, но как получить-то хендл этого модуля? какой командой? OpenThread(dwDesiredAccess: DWORD;bInheritHandle: BOOL; dwThreadID: DWORD)? Если да, то что прописывать в параметрах? dwDesiredAccess - желаемый уровень доступа к процессу? Какой необходимо для внедрения библиотеки и перехвата API? bInheritHandle - я так понял это опция наследования... она имеет принципиальное значение? dwThreadID - это тоже самое что и ProcessID?
>NewProcedureAddress - адрес твоей собственной функции, куда будет >передано управление в рез-те вызова жертвой ф-ции Connect
Вот это мне вообще непонятно, допустим где-то у меня написана функция-перехватчик, например: Procedure NewConnect(IP,Port:Integer); var ... begin end;
но как узнать или присвоить ей указатель? А также как передать ей старую команду с параметрами, которые нужно проверить???
-
> как получить-то хендл этого модуля?
GetModuleHandle()
> какой командой?
Никакой. В Делфи нет "команд" - есть операторы.
> OpenThread
Эта т.н. "команда" не имеет ни малейшего отношения к хэндлу модуля.
> dwThreadID - это тоже самое что и ProcessID?
Нет, это две совершенно разные разницы.
p.s.
Рано тебе заниматься "перехватами" - ты азов не знаешь. Обычных дельфийских.
-
ну DLL'ку вроде написал осталось внедрить в чужой процесс и тут о5 возникла проблема. Внедрение происходит при помощи функции:
function LoadLibrary_Ex(ProcessID:DWORD;LibName:PChar):boolean;
var
pLL,pDLLPath:Pointer;
hProcess,hThr:THandle;
LibPathLen,_WR,ThrID:DWORD;
begin
Result:=False;
LibPathLen:=Length(string(LibName));
hProcess:=OpenProcess(PROCESS_ALL_ACCESS,false,ProcessID);
if hProcess=0 then exit;
pDLLPath:=VirtualAllocEx(hProcess,0,LibPathLen+1,MEM_COMMIT,PAGE_READWRITE);
if DWORD(pDLLPath)=0 then exit;
pLL:=GetProcAddress(GetModuleHandle(kernel32),'LoadLibraryA');
WriteProcessMemory(hProcess,pDLLPath,LibName,LibPathLen+1,_WR);
hThr:=CreateRemoteThread(hProcess,0,0,pLL,pDLLPath,0,ThrID);
if hThr=0 then exit;
Result:=CloseHandle(hProcess);
end;
При попытке внедрения в чужой процесс функция работает без ошибок, но эффекта нет. Функция работает как надо только если внедряет библиотеку в свой собственный процесс. Поясню: допустим есть два процесса pr1.exe, pr2.exe и библиотека lib1.dll которая при внедрении должна выдать сообщение, типа, 'Hello World'. если процесс pr1.exe попытается внедрить lib1.dll в pr2.exe, то ничего не происходит, если же он пытается внедрить его в самого себя, то библиотека успешно грузится и выдаёт сообщение 'Hello World'. Вообщем что я упускаю?
-
> что я упускаю?
Самую малость - наличие в Делфи встроенного отладчика
-
Сергей М. © (03.03.09 21:33) [36]
>> что я упускаю?
>Самую малость - наличие в Делфи встроенного отладчика
А можно поподробнее? Почему dll якобы внедряется в процесс, но загрузочный код библиотеки не исполняется?
-
Ты программист или где ?) Что значит "якобы" ? Ты вообще в курсе про отладчик ?
-
> MALAN
Тоже мне - "рассуждалкин" на "высокие материи" нашелся) Сначала азы отладки Делфи-кода освой !
|