PDA

Просмотр полной версии : апихуки.


alexteam
07.03.2009, 19:21
что юзает л2 для чтения с сокета ?
потыкался как слепой кролик в сторону recv wsarecv wsarecvfrom - ноль. :(

xkor
07.03.2009, 23:06
recv скорее всего, в крайнем случае wsarecv, больше точно ничего не юзает, ты либо тыкался не туда, либо каконить ГГ мешал тыкаться)

alexteam
07.03.2009, 23:08
Угу. в корейской доке об трепанации гг - есть упоминание о такой вещи.
прикрепить ловушку раньше чем это сделает гг возможно ?.

xkor
07.03.2009, 23:21
alexteam, ну ГГ грузиться довольно долго, так что если успеть "пропатчить" клиент в первые секунды запуска то по идее пахать должно...

alexteam
07.03.2009, 23:29
Просто учитывая сегодняшние ковыряние и слепые тыкания у меня сложилось впечатление что клиент имеет свою собственную функцию для чтения/записи в сокеты.
обнадежил, буду долбить дальше эту стену.
для начала - ловушку на креейт процес.. а потом в ловушке на креейт - сам инжект.
матрешка.. блин.

alexteam
09.03.2009, 16:27
в общем - написана софтина инжектирующая длл в процесс линейки, позволяющая без создания прокси манипулировать тем что отсылает/принимает линейка, отсылать пакеты от имени процесса ла2 ну и в этом духе.
идеально работает на клиентах без гг.
единственная проблемма - сам гг. после старта он востанавливает таблицу импортов для некоторых функций процесса линейки, в перечень их входит сенд и рецв.

после очередных слепых тыканий уже в сторону гг было выяснено что
гг сканирует первые байты защищаемых функций на предмет фарджампов и восстанавливает функцию если находит джампы.

есть 4 метода для создания подобных руткитов.
1. перехватываются функции LoadLibrary и GetProcAddress библиотеки kernel32.dll - GetProcAddress выдает поинтер моей функции. (годится для приложений загружающих длл динамически, пробовал это на гг - потерпел крах. линейка тоже не использует динамику)

2. с модификацией таблицы импорта. без гг метод прекрасно работает. пока за дело не принимается гг - исправляющий фарджампы. тем не менее я все еще могу отсылать данные от клиента, хотя видеть что шлет/принимает клиент с запущенным гг - не могу -)

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

4й метод. интересный. чемто похож на 2й. но записываеться не джамп а машинный код своей функции в начале/конце целевой функции. если я правильно понимаю гг не увидит джамп, и естественно не будет ничего править.
есть у кого нибудь информация по подобной вещи ?.

fragus
18.03.2009, 15:27
Интересная тема.
Есть еще вариант использовать LSP для перехвата пакетов. Сейчас скачал исходник с МСДН, буду пробовать.

http://ru.wikipedia.org/wiki/Microsoft_Layered_Service_Provider

xkor
18.03.2009, 17:47
fragus, заебёшся с правильной установкой своего LSP модуля...

alexteam
18.03.2009, 20:12
Ух, даже так, спасибо за эти новые сведения -)
как раз с установкой готового модуля проблемм РОВНО ноль -)
так же не вижу особых проблем с самой длл.

добавлено, спустя пару-тройку часов.

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

http://img99.imageshack.us/img99/2662/92156428.th.jpg (http://img99.imageshack.us/img99/2662/92156428.jpg)

xkor
19.03.2009, 12:26
как раз с установкой готового модуля проблемм РОВНО ноль -)а ты попробуй установить своего провайдера когда уже какойнить установлен, от проксифиера там или нод32)
если твой пров единственный кроме основного системного то да, проблем ноль)

alexteam
19.03.2009, 12:56
а ты попробуй установить своего провайдера когда уже какойнить установлен, от проксифиера там или нод32)
если твой пров единственный кроме основного системного то да, проблем ноль)

воблин, ртфм!
теско, неудачный опыт чтоль с лса ? :)
только что включил имон, и проверил работу.
(хы. оф сделал подарочек. очередной. на скрине - попытка создать чара с ником test)
http://img5.imageshost.ru/imgs/090319/3e54ac1c799542368553c59f7365126f/t6b1d20dc0565a7850e435717495e938e.jpg (http://imageshost.ru/links/2c0deedbf6187c4a4e514f9a6692aa5a)

xkor
19.03.2009, 13:18
alexteam, а imon включен перед твоим провайдером или после?

Добавлено через 2 минуты
что за imon кста?

alexteam
19.03.2009, 13:34
Перед, либо после неважно, попробовал и так и эдак. главное чтобы мой хук не разрывал цепочку. передавая обработаные данные дальше, следующему модулю. это единственное узкое место которое создаст проблему.

имон - тот самый лса "провайдер" нода.

xkor
19.03.2009, 14:16
alexteam, ну вот у меня с проксифиером не получилось.., как я не извращался с передачей вызовов после моего провайдера к провайдеру проксифиера он ни в какую не обрабатывал их, ну точнее хз что он с ними делал но инет пропадал)

ну и когда он сам поверх моего модуля ставиться, то он свою цепочку ставит в обход моей и мой провайдер вообще не используется...

NLObP
19.03.2009, 14:23
Для ознакомления, так сказать, код не выложите? Можно в ПМ.

alexteam
19.03.2009, 14:47
NLObP, сделаю обмен с основным, будет вам код в пм, модуля, и возможно поправленого под это дело пакетхака -)

2 xkor. с этого места поподробнее. ловил через лса коннект и пытался изменить направление соединения на локальный сервер ? все точно то же что и в инжекте пакетхака но с помошью лса ? без каких либо особых изменений ? все тот же локальный сервер ? -)
кстати, профиксер. не имеет ни малейшего отношения к лса. все те же джампы.
http://img5.imageshost.ru/imgs/090319/86c2e1ce5871f7fc8998a3412579c280/t5315d63cfb2ca3ca21849ac40ca8fb1e.jpg (http://imageshost.ru/links/f62a38fa29c11fc958f6286e6e287543)

xkor
19.03.2009, 16:33
не, у меня дллка просто логировала трафик в файл для определённых приложений, для ненужных она структуру указателей на функции даже полностью от следующего провайдера брала, но если следующим являлся проксифиер то у все проги переставали работать через нет...

fragus
19.03.2009, 19:14
Интересно было бы посмотреть исходники. Сам только начинаю разбираться.

alexteam
20.03.2009, 02:24
xkor, видно как и все первопроходцы, залез в дебри и там и утоп, сам такой же :D
как ни странно проблем с соцификаторами не заметил, корректно перенаправляет соединение на локальный и мониторит данные.
2fragus будет, либо так выложу, либо, если разработчики пакетхака согласятся, увидишь это чудо в комитте -)

помучал его под вечер, научил изменять отсылаемые/принимаемые данные на произвольные, и отсылать произвольные данные "от клиента" л2 на серв.
на завтра оставил самое веселое, а именно эмуляцию отсылки произвольных данных с сервера на клиент. одним местом чую, малой кровью тут не обойдется.

ratvier
20.03.2009, 16:13
alexteam, чего используешь такой древний RkU?)

xkor
20.03.2009, 22:16
если разработчики пакетхака согласятсяесли будет пахать то однозначно согласятся всеми конечностями)

на завтра оставил самое веселое, а именно эмуляцию отсылки произвольных данных с сервера на клиент. одним местом чую, малой кровью тут не обойдется.если данные читаются в блокирующем режиме то впринципе крови не должно быть много, по моему надо просто сделать промежуточный буфер в который писать и то что приходит от серва и то что сам хочешь клиенту отправить, для этого в WSPsend делаем цикл проверяющий нет ли в сокете данных на чтение и нет ли "своих" пакетов на отправку, если что то из этого есть то пихает в промежуточный буфер и отправляет клиенту.
единственное надо в этой функции тогда делать и перешифровку пакетов...

LOL
20.03.2009, 23:02
выложи свою версию уже, может на руофе будет пахать, хочу затестить))

xkor
21.03.2009, 01:02
LOL, через LSP на руофе тоже отправлять не получиться)

alexteam
21.03.2009, 13:28
xkor, угу, приблизительно так и делаю. за исключением того что всетаки WSPRecv, и крипт/декрипт будут в основном приложение.
и кровь тут ЕСТЬ.
а именно. в

function WSPRecv(s: TSocket; lpBuffers: LPWSABUF; dwBufferCount: DWORD;
var lpNumberOfBytesRecvd, lpFlags: DWORD;
lpOverlapped: LPWSAOVERLAPPED;
lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE;
lpThreadId: LPWSATHREADID;
var lpErrno: Integer): Integer; stdcall;

а точнее в


lpBuffers: LPWSABUF;
LPWSABUF = ^_WSABUF;

_WSABUF = record
len: u_long; // the length of the buffer
buf: PAnsiChar; // the pointer to the buffer
end;


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

CopyMemory(lpBuffers.buf,
буффер_обработаный_приложением(возможно со своими данными впереди),
длинна_нового_буфера);

узкое место тут одно:
длинна_нового_буфера должна быть <= lpBuffers.len иначе нехватит места в памяти чтобы записать данные в буфер который получит клиент.
благо при обмене с ГЕЙМСЕРВЕРОМ(не с ЛС), КЛИЕНТ (не проверял на волкере и прочих) резервирует буфер длинной 16к. далеко не всегда используя его полностью.

отсюда вывод - буфер который требуется отправить НА клиент с помощью контролирующего приложения и буфер который клиент получает от сервера по длине суммарно не должны превышать 16к. :shout:

зы.
с отправкой от клиента такой проблемы нет, ибо я могу отменить отправку и отправить данные вызвав send от имени клиента. так что если разбить модуль на части
1. перехват отправки, изменение данных на такие же подлинне либо меньше - готово.
2. перехват отправки, изменение данных на данные по длине превышающие изначально отправляемые -готово
3. самопроизвольная отправка данных от имени клиента на сервер - готово
4. перехват принимаемых клиентом данных и изменение их на данные с такой же длинной либо меньше - готово
5. перехват принимаемых клиентом данных и изменение их на данные с длинной больше - возможны проблеммы.
6. самопроизвольная отправка данных на клиент - невозможно. реализация через предыдущий пункт.

то готовность самого лсп модуля около 5/6, остается проблемный 5й пункт...
буду дальше в свободное от работы время мучать WSPRecv.

зы2.
LOL, не смеши. смотри выше скрин, они встроили кодировку пакетов при отправке, ТУТ эта криптовка не обсуждается.
да и я пока не интегрировал эту вещь в пакетхак. НИКАКОЙ разборки протокола нет.

LOL
21.03.2009, 17:52
кодировка пакетов онли ШК-сервер.

Клиент-ШК нету кодировки. Просто надо заставить ШК понимать, что этот пакет надо слать.)

alexteam
21.03.2009, 19:14
кодировка пакетов онли ШК-сервер.

Клиент-ШК нету кодировки. Просто надо заставить ШК понимать, что этот пакет надо слать.)

вот сразу видно Знаток истории развития ШК.

найди в перечне соединений соединение клиента с шилдконсолью сейчас. раньше было. а сейчас где ?
а если пойдеш на предыдущую страницу. увидиш что сейчас кодировка распространяется на пакеты клиент->сервер.

добавлено:
и, прошу, понять что тут, конкретно в этой теме обсуждение перехвата и модификации трафика.
то как устроена та или иная защита, имхо оффтоп.

alexteam
22.03.2009, 18:44
в общем, 5й пункт так и остаеться черной лошадкой вместе с 6м.
могу менять данные на такие же либо меньше по длинне, но если пихать больше чем влазит в буффер - мнгновенный терминейт приложения.
клиент резервирует под чтение 56636 байтикоф, как раз под длину максимальную пакета. таких пакетов я не видел, но мало ли. шансы хоть и небольшие но есть.
завтра, дай бог оформлю это все дело как класс и займусь дебагом -)

fragus
23.03.2009, 21:28
2. с модификацией таблицы импорта. без гг метод прекрасно работает. пока за дело не принимается гг - исправляющий фарджампы. тем не менее я все еще могу отсылать данные от клиента, хотя видеть что шлет/принимает клиент с запущенным гг - не могу -)

Если не сложно, можешь выложить код длли с таким типом перехвата?

alexteam
24.03.2009, 00:01
Если не сложно, можешь выложить код длли с таким типом перехвата?
то что ты попросил - апи перехват. тобиш не не лсп.
работает при отсутствующем гг. работающий гг снимает перехват рецв и сенд в юзермоде.
присутствуют те же проблемы при отправке пакет на клиент что и с лса модулем. (зарезервированная память под буфер).
функция перехвата данных идущих на сервер требует модификации, если ты собираешься слать буферы по длине превышающие изначально пересылаемые.

добавлено: ах да. никакого разбора траффика нет. чистые необработанные данные.

fragus
24.03.2009, 00:09
Спасибо, то что нужно. :)

murc
24.03.2009, 21:46
alexteam, ты случайно не JEDI API используеш для работы с SPI ? Очень интересная тема, хотелось бы тоже разобратся =)

alexteam
24.03.2009, 21:50
да, его.
начал встраивать это дело в пакетхак. хочется чтобы осталось и соцк5 и апи пехеват...и чтоб еще лса работало..
переделывать чужой код - зло..

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

xkor
24.03.2009, 23:23
надо переписать чужое.. хоть и хорошо написаное..ну я бы не сказал что пакетхак хорошо написанное.., косяков там много(

Даже в работающем идеально коде находишь вот такое:
if chkSocks5.Checked then ChkIntercept.Checked := not chkSocks5.Checked; блин а ведь это вроде я писал(

alexteam
24.03.2009, 23:36
не в косяках дело. и не в этих перлах с условием и мега присваиванием.
все мы писали if babla=true then
все мы писали if i=2 then b:=true else b := false вместо b := (i=2)
все мы когдато начинали... но блин. вроде же профи.. мне до вас как небес во всяком случае я только недавно оседлал волшебный символ ^.

проблема а в общей организации.
почему нельзя было оформить КЛАССАМИ ?
не структурой а именно классами. с процедурками и функциями, с методами креейт и дестрой.
наращивание такого кода - это просто прелесть... создал екземпляр класа ответственного за перекодировку. свзал его с теми же выходами плагинов - и делов.
а не то как сейчас :((

я вообще модуль контроля ЛСП как компоненту невизуальную оформил.
думал "щааа.. кину компоненту.. в пару функций добавлю пару условий и все... ".. фигу там -(

сижу заливаю дымящийся мозг пивом. :(

NLObP
25.03.2009, 00:33
все мы писали if i=2 then b:=true else b := false вместо b := (i=2)

А где про такое в учебниках пишут? То-то и оно. Только первый вариант и приведут. Хорошо, если сам допрешь, как второе работает.

PS: может общими усилиями приведем код к приемлимому виду, а?!
PPS: я к сожалению академиев не кончал - самоучка. Поэтому в классах, перехватах, шифровании плохо разбираюсь. =(

alexteam
25.03.2009, 01:13
как ни странно. я тоже. самоучка.
пытаюсь ассорти имеющееся сейчас и связаное с математикой (крипт/декрип) как класс оформить. и вынести в отдельный модуль.
глядишь и кода в основном юните будет не 2кс гаком строчек а 500-600.
продвигаюсь медленно и крайне осторожно, ибо нарушу чтото - потом фиг найду где накосячил. а нарушить могу.. ибо работаю в основном без запуска. иногда по 3-4 минуты колупаю 2 строчки в попытках выяснить "что оно делает" %)

xkor
25.03.2009, 08:20
на классах я пакетхак 3 пишу, но на него времени всё нехватает так что медленно продвигается...

alexteam
25.03.2009, 16:01
"у я бы не сказал что пакетхак хорошо написанное.., косяков там много"
кхе.. кхе.. лишнего кода там много, включая неиспользуемый вообще. а так норм. -)
ну и .. остальные перлы

case PacketB[2] of
...ляляля...
$15: begin
if not isKamael then begin //and (Thread[id].pckCount=7)
sendMSG('Считываем имя соединения...');
ii:=1;
while not ((Packet.DataB[ii]=0) and (Packet.DataB[ii+1]=0)) do Inc(ii);
SetLength(WStr, ii div 2);
Move(Packet.DataB[1], WStr[1], ii);
EnterCriticalSection(_cs);
Thread[id].Name:=WideStringToString(WStr, 1251);
sendMSG('Имя соединения:'+Thread[id].Name);
LeaveCriticalSection(_cs);
//обновляем Список соединений
SendMessage(L2PacketHackMain.Handle, WM_UpdateComboBox1, 0, 0);
end;
end;
//CharSelected
$0B: begin
if isKamael then begin // and (Thread[id].pckCount=6)
sendMSG('Считываем имя соединения...');
ii:=1;
while not ((Packet.DataB[ii]=0) and (Packet.DataB[ii+1]=0)) do Inc(ii);
SetLength(WStr, ii div 2);
Move(Packet.DataB[1], WStr[1], ii);
EnterCriticalSection(_cs);
Thread[id].Name:=WideStringToString(WStr, 1251);
if isGraciaOff then
Corrector(Packet.Size,id,False,True); // инициализация корректора
sendMSG('Имя соединения:'+Thread[id].Name);
LeaveCriticalSection(_cs);
//обновляем Список соединений
SendMessage(L2PacketHackMain.Handle, WM_UpdateComboBox1, 0, 0);
end;
...ляляля...

или.. вот...

function AddDateTime : string;
var
msg: string;
x : Integer;
begin
msg:=datetostr(now)+' '+timetostr(time);
x:=pos(':', msg); // ищем подстроку
if x>0 then begin
Delete(msg, x, length(':')); // удаляем её
Insert('.', msg, x); // вставляем новую
end;
x:=pos(':', msg); // ищем подстроку
if x>0 then begin
Delete(msg, x, length(':')); // удаляем её
Insert('.', msg, x); // вставляем новую
end;
result:=msg;
end;

эх :(

function AddDateTime : string;
begin
result := FormatDateTime('dd.mm.yyy hh.nn.ss' , now);
end;

+бага
в сендпакете в вот таких вот местах.
//проверка на длину лога пакетов
if Thread[tid].Dump.Count<MaxLinesInPktLog then begin
Thread[tid].Dump.Add('03'+ByteArrayToHex(TimeStepB,8)+ByteArr ayToHex(Packet.PacketB,Packet.Size));
PostMessage(L2PacketHackMain.Handle,WM_PrnPacket_L og,Integer(tid and $FF),Thread[tid].Dump.Count-1);
end else begin
//сохраняем и очищаем лог пакетов
sendMSG('Сохраняем лог пакетов...');
Thread[tid].Dump.SaveToFile(PChar(ExtractFilePath(Application .ExeName))+'logs\'+Thread[tid].Name+' '+AddDateTime+'.txt');
Thread[tid].Dump.Clear;
SendMessage(L2PacketHackMain.Handle, WM_ClearPacketsLog, 0, 0);
end;

заменить на


Thread[tid].Dump.Add('03'+ByteArrayToHex(TimeStepB,8)+ByteArr ayToHex(Packet.PacketB,Packet.Size));
PostMessage(L2PacketHackMain.Handle,WM_PrnPacket_L og,Integer(tid and $FF),Thread[tid].Dump.Count-1);
//проверка на длину лога пакетов
if Thread[tid].Dump.Count<MaxLinesInPktLog then begin
//сохраняем и очищаем лог пакетов
sendMSG('Сохраняем лог пакетов...');
Thread[tid].Dump.SaveToFile(PChar(ExtractFilePath(Application .ExeName))+'logs\'+Thread[tid].Name+' '+AddDateTime+'.txt');
Thread[tid].Dump.Clear;
SendMessage(L2PacketHackMain.Handle, WM_ClearPacketsLog, 0, 0);
end;

т.к. при превышении MaxLinesInPktLog мы упускаем пакет.



NLObP, стукнул в аську. ибо вопросы все таки есть.

murc
26.03.2009, 03:00
наигрался с lsp пришлось винду переустанавливать )))

alexteam
26.03.2009, 10:12
ну, до такого мы не доходили.. но избавится от багнутого лсп модуля можно из под безопасного режима. (БЕЗ поддержки сети) с помошью, скажем вотэтого (http://www.google.com.ua/search?q=LSPFix.exe&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox-a), либо вручную, регедитом.

murc
26.03.2009, 15:19
ну, до такого мы не доходили.. но избавится от багнутого лсп модуля можно из под безопасного режима. (БЕЗ поддержки сети) с помошью, скажем вотэтого (http://www.google.com.ua/search?q=LSPFix.exe&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox-a), либо вручную, регедитом.

да да да, именно этим я и обрезал "багнутый" модуль, но он как оказалось был небагнутым :D или в силу своей бажности весь винсок убил :D

NLObP
26.03.2009, 18:53
Антивирусная утилита AVZ (www.z-oleg.com/secur/avz) может исправлять LSP и многое другое тоже может.

alexteam
26.03.2009, 20:42
(в поклоне) убить винсоцк, мастер :p

ладно.. хорошо.. я не буду офтопить...
по делу.. тему собственно можно закрывать, ибо разобрался. сейчас занимаюсь пакетхаком в плотную.

xkor
27.03.2009, 01:59
alexteam, не не не, закроем не раньше чем о результатах узнаем)

alexteam
30.03.2009, 01:34
приболел малех -)
результаты хорошие, если интересуют именно результаты по лсп модулю - спроси у NLObP ;)
чтото его давно не видно.. видать доексперементировалсо ;)

а по пх.. вчера "расфасованый" по модулям код прикрутил к новому проекту, точнее начал прикручивать, на ночь глядя немного его попинал опять, прикрутив лсп.
вот что за фейс получается пока что. и собственно работа через лсп. видно по ремот ендпоинту линейки:
http://img5.imageshost.ru/imgs/090330/2467bc673b640c26cc19c0d57b78c030/t930dfdcb5af8a32e600193747869a07a.jpg (http://imageshost.ru/links/a4980e8f7eb360a3887e59be84958c13)

xkor
30.03.2009, 02:47
alexteam, ух, чтот ты там накрутил ппц вкладок)

alexteam
30.03.2009, 11:47
нормально, нормально.
возможно верхний уровень вкладок разнесу по отдельным формам, так как они глобальные для всех соединений. а вот имя соединения и "просмотр, посылка, дополнительно" конкретно относящиеся к этому соединению приблизительно так и должны быть. в любом случае это получше будет чем комбобокс. тем более использую TJvPageControl для этих целей, установив clientborderwith в ноль, так что визуально верхний уровень вкладок мало чем отличается от кнопок (не тратится свободное место отступа с рамкой, так что не так уж оно страшно и смотрится.) а вот пользы от динамического создания нижней части при работе нескольких соединений гораздо больше -)


и вообще борьба за свободное пространство о основных диалогах - была всегда актуальной. так что повыносил всю мелочевку в отдельные диалоги, дабы не захламлять основную рабочую часть (процессы (не думаю что он будет вообще востребован), фильтр пакетов, преобразование, лог, и др. идут отдельными формами, естественно обработчики их находятся там же)
а так потихоньку двигаемся, исправляя по пути еконверэроры, "эрроркоде5" (ктото невнимательно по синх потоков доки курил?) и прочее, проче, прочее...

nezabudkin
30.03.2009, 12:30
Скорее выкладывай это чудо! Уже нетерпиться его затестить!

alexteam
30.03.2009, 13:28
вам бы лишь бы быстрее..
а мне важнее чтобы безкосяково.

вот только что обнаружил в лсп дллке багу, вызывающую креш контролирующего модуля.
забыл разремарить одно единственное условие оставшееся еще со времен дебага :(

xkor
30.03.2009, 15:33
PanAm, забанить тя чтоли)

alexteam
30.03.2009, 18:35
...лучше тему закрыть..
ибо по сабжу все и так ясно...

зы.
вылоЗу, как только так сразу. я еще до скриптов не добрался даже. а им вылоДыть уже горит.

xkor
30.03.2009, 18:47
я еще до скриптов не добрался дажеа что ты с ними мутить там хочешь?))

alexteam
30.03.2009, 18:58
цитата в виде "те же яйки, только в профиль" ©
думаю образно ответит на поставленный вопрос.

Be3geBJIa3
31.03.2009, 15:53
Большая просьба поделиться информацией о создании своего LSP модуля.
Уж очень заинтересовало.

alexteam
31.03.2009, 17:51
library spi, unit overlapped - касаемо самой длл.
unit Unit1 - касаемо установки.
листать сдеся:
станичка с закладок браузера (http://209.85.129.132/search?q=cache:oKY1b6EbMawJ:www.delphibbs.com/delphibbs/dispq.asp%3Flid%3D1638550+function+WSPStartup(wVer sionRequested:+WORD%3B+lpWSPData:+LPWSPDATA%3B+lpP rotocolInfo:+LPWSAPROTOCOL_INFOW%3B+UpcallTable:+W SPUPCALLTABLE%3B+lpProcTable:+LPWSPPROC_TABLE):+In teger%3B+stdcall%3B&cd=2&hl=ru&ct=clnk&gl=ua&client=firefox-a)
это была моя отправная точка.

xkor
31.03.2009, 22:35
alexteam, ИМХО инсталить/деинсталить и искать следующего прова через реестр не правильно, хотя возможно и работает лучше.., но зачем тогда для этих действий сделано куча специальных АПИ функций?

alexteam
31.03.2009, 22:54
видимо люди считали что если добавят регистри в юзес у них приложенице в разы выростет, либо писавший все привык делает через юзес виндоус.

Hint
09.04.2009, 18:55
видимо люди считали что если добавят регистри в юзес у них приложенице в разы выростет, либо писавший все привык делает через юзес виндоус.

Речь о том, что для установки LSP есть специальные API, а лезть в реестр - дурной тон.

alexteam
09.04.2009, 21:04
на момент написания того поста я почемуто думал что хкор говорит по поводу реализации самих readreg,savereg и т.п. по той ссылке.
а по поводу инсталяции провайдера функциями для этого предназначенными, один вопрос, что является результатом работы этих функций ? не то же самое ? есть видимые отличия ?

xkor
10.04.2009, 00:51
что является результатом работы этих функций ? не то же самое ? есть видимые отличия ?результат то может и тот же но зачем изобретать велосипед?)
единственное что в SPI не сделать без использования реестра это не узнать путь для NSP модуля, майкорософтовци почему то решили что хватит с нас функции возвращающей путь к LSP/TSP модулям...

alexteam
10.04.2009, 01:12
лучше уж кривой и покрашеный в зеленый цвет велосипед у которгго можно покрутить педали %)

Asmoday
29.09.2010, 17:49
Хотелось бы задать свой вопрос, пробывал кто ставить провайдера на х64. Имеется задача перехватить траф 64-го приженица. Обычный способ не вкатывает, на 64 платформе таким образом можно хукать только 32 приложения.

xkor
29.09.2010, 19:50
Asmoday, для 64битных процессов нужен 64битный провайдер)

Asmoday
29.09.2010, 20:31
Тогда встречный вопрос, кто-нить сталкивался с лазарусом? Или проще на сях написать?

Добавлено через 4 минуты
И еще, может есть у кого пример и/или мануал реализации установки на сях можно в принципе и провайдера тож.

xkor
29.09.2010, 21:17
Вот сорци моих модулей из проекта по логированию трафика, провайдера с ними собирал и для х32 и для х64 процессов
ЗЫ они на С++