Посл.ответ |
Сообщение |
Ранг: 756.3 (! !), 113thx Активность: 0.61↘0.05 Статус: Участник Student
|
Создано: 02 июля 2007 00:35 · Личное сообщение · #1
Если прога ломится в инет и пытается что-то послать (получить), значит теоретически можно:
1. этот запрос перехватить, что-то изменить и послать далее...
2. перехватить ответ, что-то изменить и подсунуть проге...
С помощью чего это осуществимо?
----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh | Сообщение посчитали полезным: |
|
Ранг: 387.4 (мудрец) Активность: 0.17↘0 Статус: Участник системщик
|
Создано: 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.16↘0 Статус: Участник
|
Создано: 02 июля 2007 08:31 · Личное сообщение · #3
А можно ли сделать это перехватом АПИ ?
| Сообщение посчитали полезным: |
Ранг: 756.3 (! !), 113thx Активность: 0.61↘0.05 Статус: Участник Student
|
Создано: 02 июля 2007 13:13 · Личное сообщение · #4
s0larian
Крутовато... Даже желание пропадает...
Я думал это можно осуществить просто с помощью какого-нибудь сниффера..
----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh | Сообщение посчитали полезным: |
Ранг: 51.0 (постоянный) Активность: 0.03↘0 Статус: Участник
|
Создано: 02 июля 2007 13:38 · Личное сообщение · #5
вы что, какие kernel-proxy? это вовсе не нужно в случае, когда нужно менять запросы одной конкретной программы. всё решается перехватами api-функций в user-mode.
и кстати, если эта прога отсылает данные по HTTP, то я бы посоветовал перехватывать функции из wininet.dll
| Сообщение посчитали полезным: |
Ранг: 68.0 (постоянный), 6thx Активность: 0.06↘0 Статус: Участник
|
Создано: 02 июля 2007 13:44 · Личное сообщение · #6
Isaev, поищи WPE PRO
| Сообщение посчитали полезным: |
Ранг: 756.3 (! !), 113thx Активность: 0.61↘0.05 Статус: Участник Student
|
Создано: 02 июля 2007 14:13 · Личное сообщение · #7
Dr3d пишет:
поищи WPE PRO
Thanks!
Прикольная вещь!
----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh | Сообщение посчитали полезным: |
Ранг: 226.0 (наставник), 67thx Активность: 0.16↘0 Статус: Участник
|
Создано: 02 июля 2007 14:57 · Личное сообщение · #8
Isaev так у тебя уже получилось ?
| Сообщение посчитали полезным: |
Ранг: 756.3 (! !), 113thx Активность: 0.61↘0.05 Статус: Участник Student
|
Создано: 02 июля 2007 18:52 · Поправил: Isaev · Личное сообщение · #9
нет пока... WPE отслеживает уже активный процесс, а прога сразу при запуске ломится... т.ч. через него не получится
sotona пишет:
перехватами api-функций в user-mode
интересная идея, только жаль времени нет... Как нибудь попробую.
----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh | Сообщение посчитали полезным: |
Ранг: 68.0 (постоянный), 6thx Активность: 0.06↘0 Статус: Участник
|
Создано: 02 июля 2007 19:00 · Личное сообщение · #10
Isaev пишет:
нет пока... WPE отслеживает уже активный процесс, а прога сразу при запуске ломится... т.ч. через него не получится
Ну а ты попробуй при старте затормозить прогу.
Наприер так:
- прописываешь в EntryPoint два байта "EB FE", запомнив те байты, которые замещаешь.
- запускаешь программу и WPR PRO, настраиваешь все как надо
- а потом просто изменяешь те самые два байта "EB FE" в памяти на исходные
| Сообщение посчитали полезным: |
Ранг: 387.4 (мудрец) Активность: 0.17↘0 Статус: Участник системщик
|
Создано: 02 июля 2007 19:16 · Поправил: s0larian · Личное сообщение · #11
Isaev, так первый вариант это просто сетевой hack, не меняющий прогу. Иногда такое надо. Ну а второй вариант намного проще - patch/hook - и всё. Только если ты разобрался в том что проге надо, не проще ли просто inline patch? Поправить регистры в нужном месте ты не сможешь?
| Сообщение посчитали полезным: |
Ранг: 51.0 (постоянный) Активность: 0.03↘0 Статус: Участник
|
Создано: 02 июля 2007 19:27 · Личное сообщение · #12
Isaev пишет:
интересная идея, только жаль времени нет... Как нибудь попробую.
ну фиг знает. если учесть, сколько уже готовых реализаций api-hook есть... не разберется только ленивый.
| Сообщение посчитали полезным: |
Ранг: 226.0 (наставник), 67thx Активность: 0.16↘0 Статус: Участник
|
Создано: 03 июля 2007 00:35 · Личное сообщение · #13
Isaev ты разобрался какие апики используются ?
Если надо могу помочь с перехватом.
Я недавно делал такое для Kernel32.DeviceIoControl
| Сообщение посчитали полезным: |
Ранг: 392.8 (мудрец), 108thx Активность: 0.26↘0.01 Статус: Участник REVENGE сила, БеХоЦе могила
|
Создано: 03 июля 2007 06:11 · Личное сообщение · #14
Isaev настраиваешь прогу на 127.0.0.1 и какой нить порт...
Пишешь маленький проксег (примеры могу дать), который будет одним концом слушать порт, а другим смотреть в инет.
И все)) Остальное дело техникики, получить запрос и заменить данные.
----- StarForce и Themida ацтой! | Сообщение посчитали полезным: |
Ранг: 238.8 (наставник), 67thx Активность: 0.2↘0 Статус: Участник CyberHunter
|
Создано: 03 июля 2007 09:10 · Личное сообщение · #15
Maximus пишет:
Пишешь маленький проксег (примеры могу дать)
Кидай если на асме.
----- Nulla aetas ad discendum sera | Сообщение посчитали полезным: |
Ранг: 392.8 (мудрец), 108thx Активность: 0.26↘0.01 Статус: Участник REVENGE сила, БеХоЦе могила
|
Создано: 03 июля 2007 10:07 · Личное сообщение · #16
Flint на дельфе, да еще + компоненты...
Яж не извращенец)) Мне нужен был результат, я его достигал более коротким путем.
----- StarForce и Themida ацтой! | Сообщение посчитали полезным: |
Ранг: 756.3 (! !), 113thx Активность: 0.61↘0.05 Статус: Участник Student
|
Создано: 03 июля 2007 19:53 · Личное сообщение · #17
SergX пишет:
Если надо могу помочь с перехватом.
Я сначала сам попробую... Сейчас сессия и не до этого... t.ч. дело вовсе не в лени...
Разгружусь немного обязательно вернусь
----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh | Сообщение посчитали полезным: |
Ранг: 756.3 (! !), 113thx Активность: 0.61↘0.05 Статус: Участник Student
|
Создано: 03 июля 2007 19:57 · Личное сообщение · #18
Maximus пишет:
Пишешь маленький проксег (примеры могу дать)
кидай конечно...
Maximus пишет:
на дельфе ещё лучше... мне по крайней мере проще разобраться
----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh | Сообщение посчитали полезным: |
Ранг: 387.4 (мудрец) Активность: 0.17↘0 Статус: Участник системщик
|
Создано: 03 июля 2007 20:06 · Поправил: s0larian · Личное сообщение · #19
Isaev, кста, Maksimus прав - просто вбей domain на который ломится прога в свой hosts файл а сам делай connect(ip_address). Это будет самый простой proxy.
| Сообщение посчитали полезным: |
Ранг: 237.0 (наставник), 20thx Активность: 0.13↘0 Статус: Участник sysenter
|
Создано: 21 декабря 2007 16:28 · Поправил: HiEndsoft · Личное сообщение · #20
А есть что нибудь вроде WPE PRO, чтоб русские буквы понимала в перехваченных пакетах? WPE PRO unicode не понимает.
----- продавец резиновых утёнков | Сообщение посчитали полезным: |
Ранг: 218.9 (наставник), 42thx Активность: 0.16↘0 Статус: Участник dotnet
|
Создано: 21 декабря 2007 22:10 · Личное сообщение · #21
первый вариант с драйвером тоже не так уж сложно сделать, тем более что драйвер уже написан и называется он winpcap погугли. Этот вариант более масштабируем и надежен.
----- have a nice day | Сообщение посчитали полезным: |
Ранг: 17.3 (новичок), 1thx Активность: 0.01↘0 Статус: Участник
|
Создано: 22 декабря 2007 00:14 · Личное сообщение · #22
en.wikipedia.org/wiki/Wireshark
| Сообщение посчитали полезным: |
Ранг: 237.0 (наставник), 20thx Активность: 0.13↘0 Статус: Участник 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 (а то я второпях про это забыл и полчаса сидел репу чесал).
----- продавец резиновых утёнков | Сообщение посчитали полезным: |