Сейчас на форуме: subword, rtsgreg1989, zds, _MBK_ (+5 невидимых)

 eXeL@B —› Основной форум —› Изменение Интернет-запроса программы
Посл.ответ Сообщение


Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 02 июля 2007 00:35
· Личное сообщение · #1

Если прога ломится в инет и пытается что-то послать (получить), значит теоретически можно:
1. этот запрос перехватить, что-то изменить и послать далее...
2. перехватить ответ, что-то изменить и подсунуть проге...

С помощью чего это осуществимо?

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 02 июля 2007 01:31
· Личное сообщение · #2

хе хе, можно, но не просто. Скажем, что это просто TCP не HTTP и не SSL. Тебе надо либо быть вне процесса и стека либо внутри поцесса.

В первом случае тебе нужен просто traffic и ты получишь его если напишешь ndis intermediate driver. В этом случае тебе надо выяснить протокол и ты сможешь патчить поля запроса и ответа. Ессно придётся разбирать IP headers, fragmentation, TCP и sequence/ack numbers. Короче ты пишешь kernel mode proxy. Другой под-вариант - перенаправить traffic на ту же или другую машину и свой порт. В этом случае ты пишешь прогу с sockets, что на порядок проще - ты не переписываешь то что делает stack.

Во втором случае ты просто патчишь прогу и переписываешь несколько функций. Сам можешь решить что именно - от верхнего "bool CheckRegistrationOnTheServer()" до низкоуковнего "WSASend()"



Ранг: 226.0 (наставник), 67thx
Активность: 0.160
Статус: Участник

Создано: 02 июля 2007 08:31
· Личное сообщение · #3

А можно ли сделать это перехватом АПИ ?




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 02 июля 2007 13:13
· Личное сообщение · #4

s0larian
Крутовато... Даже желание пропадает...
Я думал это можно осуществить просто с помощью какого-нибудь сниффера..

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 51.0 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 02 июля 2007 13:38
· Личное сообщение · #5

вы что, какие kernel-proxy? это вовсе не нужно в случае, когда нужно менять запросы одной конкретной программы. всё решается перехватами api-функций в user-mode.
и кстати, если эта прога отсылает данные по HTTP, то я бы посоветовал перехватывать функции из wininet.dll




Ранг: 68.0 (постоянный), 6thx
Активность: 0.060
Статус: Участник

Создано: 02 июля 2007 13:44
· Личное сообщение · #6

Isaev, поищи WPE PRO




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 02 июля 2007 14:13
· Личное сообщение · #7

Dr3d пишет:
поищи WPE PRO

Thanks!
Прикольная вещь!

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 226.0 (наставник), 67thx
Активность: 0.160
Статус: Участник

Создано: 02 июля 2007 14:57
· Личное сообщение · #8

Isaev так у тебя уже получилось ?




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 02 июля 2007 18:52 · Поправил: Isaev
· Личное сообщение · #9

нет пока... WPE отслеживает уже активный процесс, а прога сразу при запуске ломится... т.ч. через него не получится

sotona пишет:
перехватами api-функций в user-mode

интересная идея, только жаль времени нет... Как нибудь попробую.

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 68.0 (постоянный), 6thx
Активность: 0.060
Статус: Участник

Создано: 02 июля 2007 19:00
· Личное сообщение · #10

Isaev пишет:
нет пока... WPE отслеживает уже активный процесс, а прога сразу при запуске ломится... т.ч. через него не получится

Ну а ты попробуй при старте затормозить прогу.
Наприер так:
- прописываешь в EntryPoint два байта "EB FE", запомнив те байты, которые замещаешь.
- запускаешь программу и WPR PRO, настраиваешь все как надо
- а потом просто изменяешь те самые два байта "EB FE" в памяти на исходные




Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 02 июля 2007 19:16 · Поправил: s0larian
· Личное сообщение · #11

Isaev, так первый вариант это просто сетевой hack, не меняющий прогу. Иногда такое надо. Ну а второй вариант намного проще - patch/hook - и всё. Только если ты разобрался в том что проге надо, не проще ли просто inline patch? Поправить регистры в нужном месте ты не сможешь?



Ранг: 51.0 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 02 июля 2007 19:27
· Личное сообщение · #12

Isaev пишет:
интересная идея, только жаль времени нет... Как нибудь попробую.

ну фиг знает. если учесть, сколько уже готовых реализаций api-hook есть... не разберется только ленивый.



Ранг: 226.0 (наставник), 67thx
Активность: 0.160
Статус: Участник

Создано: 03 июля 2007 00:35
· Личное сообщение · #13

Isaev ты разобрался какие апики используются ?
Если надо могу помочь с перехватом.
Я недавно делал такое для Kernel32.DeviceIoControl




Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 03 июля 2007 06:11
· Личное сообщение · #14

Isaev настраиваешь прогу на 127.0.0.1 и какой нить порт...
Пишешь маленький проксег (примеры могу дать), который будет одним концом слушать порт, а другим смотреть в инет.

И все)) Остальное дело техникики, получить запрос и заменить данные.

-----
StarForce и Themida ацтой!





Ранг: 238.8 (наставник), 67thx
Активность: 0.20
Статус: Участник
CyberHunter

Создано: 03 июля 2007 09:10
· Личное сообщение · #15

Maximus пишет:
Пишешь маленький проксег (примеры могу дать)

Кидай если на асме.

-----
Nulla aetas ad discendum sera





Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 03 июля 2007 10:07
· Личное сообщение · #16

Flint на дельфе, да еще + компоненты...
Яж не извращенец)) Мне нужен был результат, я его достигал более коротким путем.

-----
StarForce и Themida ацтой!





Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 03 июля 2007 19:53
· Личное сообщение · #17

SergX пишет:
Если надо могу помочь с перехватом.

Я сначала сам попробую... Сейчас сессия и не до этого... t.ч. дело вовсе не в лени...
Разгружусь немного обязательно вернусь

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 03 июля 2007 19:57
· Личное сообщение · #18

Maximus пишет:
Пишешь маленький проксег (примеры могу дать)

кидай конечно...
Maximus пишет:
на дельфе
ещё лучше... мне по крайней мере проще разобраться

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 03 июля 2007 20:06 · Поправил: s0larian
· Личное сообщение · #19

Isaev, кста, Maksimus прав - просто вбей domain на который ломится прога в свой hosts файл а сам делай connect(ip_address). Это будет самый простой proxy.



Ранг: 237.0 (наставник), 20thx
Активность: 0.130
Статус: Участник
sysenter

Создано: 21 декабря 2007 16:28 · Поправил: HiEndsoft
· Личное сообщение · #20

А есть что нибудь вроде WPE PRO, чтоб русские буквы понимала в перехваченных пакетах? WPE PRO unicode не понимает.

-----
продавец резиновых утёнков





Ранг: 218.9 (наставник), 42thx
Активность: 0.160
Статус: Участник
dotnet

Создано: 21 декабря 2007 22:10
· Личное сообщение · #21

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

-----
have a nice day




Ранг: 17.3 (новичок), 1thx
Активность: 0.010
Статус: Участник

Создано: 22 декабря 2007 00:14
· Личное сообщение · #22

en.wikipedia.org/wiki/Wireshark



Ранг: 237.0 (наставник), 20thx
Активность: 0.130
Статус: Участник
sysenter

Создано: 22 декабря 2007 12:44 · Поправил: HiEndsoft
· Личное сообщение · #23

Nan0miT Спасибо, уже сам снифер для подмены пакетов написал в виде dll. Нужно-то ерунда: перехватывать send, recv, WSASend и WSARecv из ws2_32.dll, быстро обрабатывать полученные пакеты в отдельных потоках и усё.
Только, т.к. в основном все сетевые приложения, пакеты которых надо перехватывать многопоточные, нужно не забывать ws2_32 лочить ч/з GET_MODULE_HANDLE_EX_FLAG_PIN. И не забывать что длину пакета recv возвращает. а не len (а то я второпях про это забыл и полчаса сидел репу чесал).

-----
продавец резиновых утёнков



 eXeL@B —› Основной форум —› Изменение Интернет-запроса программы
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати