Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| | |
[net] winsock - перехват функций! (только для профи!) 09.12.01 01:59 Число просмотров: 1254
Автор: Killer{R} Статус: Незарегистрированный пользователь
|
> я же сказал, что я ординалы сделал те же самые!!! Ups... Пива пить надо меньше. Извини.
> хочешь сказать что и адреса те же самые как и в настоящей > ws2_32.dll для каждой функции прописывать?!!! Это возможная причина. Еще возможно ты не прописал какие нибудь недокументированные функции. А когда прога не находит функцию в длл но не обращает на это внимания - получается что то вроде исключения прав доступа по адресу именно 0, или около нуля.
|
<programming>
|
[net] winsock - перехват функций! (только для профи!) 08.12.01 23:02 Штраф: 5 [cb]
Автор: NeuronVikingIII Статус: Незарегистрированный пользователь
|
Hi all!
сабж в том, что необходимо "обернуть" winsock свой собсной библиотекой, либо перехватывать вызовы классическим методом. Например я создал свою ДЛЛку ws2_32.dll с одинаковыми именами и ординалами экспортов. Мой рассчет такой: заменить оригинальную ДЛЛку на мою и затем когда система или приложение попытается вызвать функцию WINSOCK то вызовется моя функция которая просто передаст управление оригинальной функции. Вроде все сделал чисто, но почему то многие проги стали падать и глючить. Хотя мой враппер ничего не делает, только вызывает оригинальный WINSOCK и перевызывает оригнальную функцию. Ктонть знает в чем баг?! (ну если не считать моих генов ;)
Вот маленький пример для одной функции:
int (__stdcall* x_send)(SOCKET,const char FAR*,int,int);
....
hWSocket=LoadLibrary("C:\\original_ws2_32.dll");
...
x_send=(int(__stdcall* )(SOCKET,const char FAR*,int,int))GetProcAddress(hWSocket,"send");
...
__declspec(dllexport) int send(SOCKET a1,const char FAR* a2,int a3,int a4){
Print("send was called!");
return x_send(a1,a2,a3,a4);
}
...
вот и все, ничего мудреного, но эта зараза вызывает глюки :((((
|
|
[net] winsock - перехват функций! (только для профи!) 13.12.01 22:29
Автор: researcher Статус: Незарегистрированный пользователь
|
> Hi all! > сабж в том, что необходимо "обернуть" winsock свой собсной > библиотекой, либо перехватывать вызовы классическим > методом. Например я создал свою ДЛЛку ws2_32.dll с
Лучше всего перехватывать нужные вызовы функций способом, описанным в книге Рихтера, а заменять системную DLL на свою не стоит, особенно там где это не сработает, например в millenium или windows 2000
|
| |
[net] winsock - перехват функций! (только для профи!) 14.12.01 08:15
Автор: CloseHandle Статус: Незарегистрированный пользователь
|
> > Hi all! > > сабж в том, что необходимо "обернуть" winsock свой > собсной > > библиотекой, либо перехватывать вызовы классическим > > методом. Например я создал свою ДЛЛку ws2_32.dll с > > Лучше всего перехватывать нужные вызовы функций способом, > описанным в книге Рихтера, а заменять системную DLL на свою > не стоит, особенно там где это не сработает, например в > millenium или windows 2000 ты не прав, как раз таки метод подмены гораздо стабильнее перехвата и он прекрасно работает на всех ОСах... проверено. Но вообще это конечно-же ламерство
|
|
[net] winsock - перехват функций! (только для профи!) 11.12.01 23:32
Автор: kabanchik Статус: Незарегистрированный пользователь
|
> Hi all! > сабж в том, что необходимо "обернуть" winsock свой собсной > библиотекой, либо перехватывать вызовы классическим > методом. Например я создал свою ДЛЛку ws2_32.dll с > одинаковыми именами и ординалами экспортов. Мой рассчет > такой: заменить оригинальную ДЛЛку на мою и затем когда > система или приложение попытается вызвать функцию WINSOCK > то вызовется моя функция которая просто передаст управление > оригинальной функции. Вроде все сделал чисто, но почему то > многие проги стали падать и глючить. Хотя мой враппер > ничего не делает, только вызывает оригинальный WINSOCK и > перевызывает оригнальную функцию. Ктонть знает в чем баг?! > (ну если не считать моих генов ;) > blja, da tak i vsju systemu perepisat' mozhno.
Ty chto nit' pro WSP* f-ii slyshal ??? dumaju chto net. Tak vot nado pisat' svoju DLL, zatem ego zaregistrirovat' v systeme, opredelit' "Vendor Layer", i vse budet OK. Tak delajut companii zanimajushiesja crypto, oni perexvatyvajut packety criptujut ix i posylajut dal'she. ws2_32.dll - eto fuflo nichego xitroumnogo v nem net, krome parochku funkcij, na samom dele on obrashaetsya k "vendor" dll - t.e. ty installiruesh' kartochku, a vmeste s nim stavitsya dll-ka, kotoraya rabotaet s nej, a ws2_32.dll tol'ko perenapravljaet f-ii k nemu. naprimer ty vyzyvaesh' f-iju WSAConnect(...), on perenapravljaet na WSPConnect(....), i t.d.....
a perepisyvat' ws2_32.dll - eto tozhe chto cherez }|{opu pytat'sya zuby chistit' :-))))) Vyxod est', no ved' ne effectivno ved' :-)
ne obizhajsya, ya prosto segodnya v xoroshem nastroenii, poka customer menya ne "sdelal" :-))))
udachi
|
| |
[Win32] [Net] Свин! Где это узнать поподробнее?! Пжалста!!! 14.12.01 03:59
Автор: Zef <Alloo Zef> Статус: Elderman
|
|
| | |
[Win32] [Net] Свин! Где это узнать поподробнее?! Пжалста!!! 17.12.01 00:49
Автор: kabanchik Статус: Незарегистрированный пользователь
|
Dyk, tak ved' otkroj MSDN, napechataj pervye "WSP" i poluchish' vsju infu.
ili mozhno knigu vzyat', nazyvaetsya "Network Programming for Windows". avtora shas ne pomnju.
|
| | | |
[Win32] [Net] 1-й ответ на 1001-й вопрос! 18.12.01 04:57
Автор: Zef <Alloo Zef> Статус: Elderman
|
Я уже х-ву тучу вопросов задавал на тему: где лучше перехватывать пакеты для криптования-декриптования, как ни странно, это первый сколько-нить конструктивный ответ, и кроме того в MSDN искать то, незнаю, как называется, что - это иголку в стоге сена... Так, что WSP - это уже Ключ!
|
| | |
M S D N elki palki, sovsem togo chto li?? tak zhe link smotri paroi strochek nizhe 14.12.01 04:10
Автор: + <Mikhail> Статус: Elderman
|
|
|
[net] winsock - перехват функций! (только для профи!) 09.12.01 01:31
Автор: Killer{R} Статус: Незарегистрированный пользователь
|
> такой: заменить оригинальную ДЛЛку на мою и затем когда > система или приложение попытается вызвать функцию WINSOCK > то вызовется моя функция которая просто передаст управление > оригинальной функции. Вроде все сделал чисто, но почему то > многие проги стали падать и глючить. Хотя мой враппер > ничего не делает, только вызывает оригинальный WINSOCK и > перевызывает оригнальную функцию. Ктонть знает в чем баг?! Ну ты блин молодец. А ты в курсе что функции еще и по ординалам вызываются? Причем вызывают их по ординалам как правило стандартные проги самой винды. А еще, не знаю как насчет винсока, но кернел вызывает функции микроядра прямо по жесткому адресу. Так что советую для начала сравнить все ординалы. Если заработает -считай повезло, если нет, чтож, закон Мерфи сработал.
|
| |
[net] winsock - перехват функций! (только для профи!) 09.12.01 01:43
Автор: NeuronVikingIII Статус: Незарегистрированный пользователь
|
> > такой: заменить оригинальную ДЛЛку на мою и затем > когда > > система или приложение попытается вызвать функцию > WINSOCK > > то вызовется моя функция которая просто передаст > управление > > оригинальной функции. Вроде все сделал чисто, но > почему то > > многие проги стали падать и глючить. Хотя мой враппер > > ничего не делает, только вызывает оригинальный WINSOCK > и > > перевызывает оригнальную функцию. Ктонть знает в чем > баг?! > Ну ты блин молодец. А ты в курсе что функции еще и по > ординалам вызываются? Причем вызывают их по ординалам как > правило стандартные проги самой винды. А еще, не знаю как > насчет винсока, но кернел вызывает функции микроядра прямо > по жесткому адресу. Так что советую для начала сравнить все > ординалы. Если заработает -считай повезло, если нет, чтож, > закон Мерфи сработал.
я же сказал, что я ординалы сделал те же самые!!! ты хочешь сказать что и адреса те же самые как и в настоящей ws2_32.dll для каждой функции прописывать?!!!
|
| | |
[net] winsock - перехват функций! (только для профи!) 09.12.01 01:59
Автор: Killer{R} Статус: Незарегистрированный пользователь
|
> я же сказал, что я ординалы сделал те же самые!!! Ups... Пива пить надо меньше. Извини.
> хочешь сказать что и адреса те же самые как и в настоящей > ws2_32.dll для каждой функции прописывать?!!! Это возможная причина. Еще возможно ты не прописал какие нибудь недокументированные функции. А когда прога не находит функцию в длл но не обращает на это внимания - получается что то вроде исключения прав доступа по адресу именно 0, или около нуля.
|
|
[net] winsock - перехват функций! (только для профи!) 09.12.01 01:00
Автор: ggg <ggg> Статус: Elderman
|
винда то хоть грузится ? :)
пробовал перегружаться ? :)
в таблице экспорта прописано имя длл
не уверен, что оно нужно, но для приличия у original_ws2_32.dll попробуй поменять его
а что это за Print() такой ?
что он делает ?
и какие проги глючат, а какие работают ?
|
| |
[net] winsock - перехват функций! (только для профи!) 09.12.01 01:09
Автор: NeuronVikingIII Статус: Незарегистрированный пользователь
|
> винда то хоть грузится ? :) > пробовал перегружаться ? :) > > в таблице экспорта прописано имя длл > не уверен, что оно нужно, но для приличия у > original_ws2_32.dll попробуй поменять его > > а что это за Print() такой ? > что он делает ? > > и какие проги глючат, а какие работают ? я делаю это под Win2k, винда грузится, когда загрузка уже завершается(т.е. уже winlogon и проч. загружены) начинают вылетать проги с разными ошибками(но все из-за доступа к памяти по нулевому адресу), все проги так или иначе используют ws2_32.dll, ну то есть мой враппер вместо оригинальной ДЛЛки.
Print() - всего лишь пишет в файл сообщение о том какая функция и каким процессом вызвана.
А зачем менять имя ДЛЛки внутри ?! достаточно просто переименовать ее и вместо нее нее воткнуть мою ДЛЛку(котрая изначально называется так же как и настоящая).
|
| | |
[net] winsock - перехват функций! (только для профи!) 09.12.01 01:36
Автор: ggg <ggg> Статус: Elderman
|
а в каком месте глюк происходит ?
где дебагер останавливается ?
|
| | | |
[net] winsock - перехват функций! (только для профи!) 09.12.01 01:41
Автор: NeuronVikingIII Статус: Незарегистрированный пользователь
|
> а в каком месте глюк происходит ? > где дебагер останавливается ? да непонятно что-то ... дебаггер вообще в хопре каком-то вываливается ... вложенность функций немерянная, может в настоящей ws2_32.dll кроме экспорта функций еще какая-то фишка есть?! ты вооще не в курсе где по этому вопросу можно найти ДОКИ или исходники?!
|
| | | | |
[Net] исходник 09.12.01 11:53
Автор: :-) <:-)> Статус: Elderman Отредактировано 09.12.01 11:56 Количество правок: 1
|
Посмотри тут. Правда, это под Win9x и подменяется wsock32.dll
Winsock Spy Program
|
| | | | | |
[Net] исходник не работает! 09.12.01 18:01
Автор: NeuronVikingIII Статус: Незарегистрированный пользователь
|
> Посмотри тут. Правда, это под Win9x и подменяется > wsock32.dll
Ни один браузер не может открыть страницу, ipconfig вообще грит что ординал 1001 не найден ... короче нихера не работает....
|
| | | | | | |
[Net] Неправда, ping все-таки работает 09.12.01 19:59
Автор: :-) <:-)> Статус: Elderman
|
> > Посмотри тут. Правда, это под Win9x и подменяется > > wsock32.dll > > Ни один браузер не может открыть страницу, ipconfig вообще > грит что ординал 1001 не найден ... короче нихера не > работает....
Ну во первых не я его писал :-)
Во-вторых, я же говорил, что он под Win9x (и Winsock 1.1)
В Winsock2 были добавлены новые ф-ии, которых в этом исходнике нету: AcceptEx, Arecv, Asend...
И вообще видно, он просто не доделан - на многие недокументрованные ф-и почему-то вызывается accept(), видно автору лень был выяснять кол-во параметров у этих ф-й.
Сейчас специально поставил его - IE 5.0 и правда по GPF(0xD) вылетает, зато ping работает замечательно :)
Значит, за основу его взять можно, просто надо "обернуть" все экспортируемые ф-ии
|
| | | | | | | |
[Net] Неправда - правда 09.12.01 20:17
Автор: NeuronVikingIII Статус: Незарегистрированный пользователь
|
> > > Посмотри тут. Правда, это под Win9x и подменяется > > > wsock32.dll > > > > Ни один браузер не может открыть страницу, ipconfig > вообще > > грит что ординал 1001 не найден ... короче нихера не > > работает.... > > Ну во первых не я его писал :-) > Во-вторых, я же говорил, что он под Win9x (и Winsock 1.1) > В Winsock2 были добавлены новые ф-ии, которых в этом > исходнике нету: AcceptEx, Arecv, Asend... > И вообще видно, он просто не доделан - на многие > недокументрованные ф-и почему-то вызывается accept(), видно > автору лень был выяснять кол-во параметров у этих ф-й. > Сейчас специально поставил его - IE 5.0 и правда по > GPF(0xD) вылетает, зато ping работает замечательно :) > Значит, за основу его взять можно, просто надо "обернуть" > все экспортируемые ф-ии
да я уже разобрался, я шел таким же путем, спасибо са УРЛ - еще одно док-во что я все делал правильно....
|
|
|