forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Программное обеспечение / Software (http://forum.boolean.name/forumdisplay.php?f=164)
-   -   Ищу программу (описание в сообщении) (http://forum.boolean.name/showthread.php?t=18263)

Phantom 15.06.2013 02:30

Ищу программу (описание в сообщении)
 
Хочу заняться реверс инженерингом кое-чего. Есть некий клиент (чёрный ящик) и есть удалённый сервер. Сервер и клиент общаются по достаточно простому протоколу, структура пакетов сразу вычисляется на глаз при снифинге. Мне нужно воткнуть между сервером и клиентом своё прокси, которое будет по моему желанию подменять/внедрять свои пакеты. Если бы клиент коннектился к серверу по имени домена, то я бы просто забил его в hosts, указав локальный IP адрес, после чего написал бы прокси сервер и поднял бы его прямо на локале. Но проблема в том, что клиент коннектится к серверу по IP. Так вот вопрос: существует ли какой-нибудь софт, позволяющий подменять IP адрес назначения? Что-то вроде локального роутера, типа надстройки hosts, но не для доменов, а для IP (объясняю грубо и на пальцах).

P.S.: Ну и понятное дело, так как мой прокси сервер будет запускаться на той же машине, то желательно, чтобы запросы от него каким-то образом шли уже куда надо, а не через "роутер". Но если это никак не реализуемо, то так и быть, запущу прокси на отдельной машине.

h1dd3n 15.06.2013 11:30

Ответ: Ищу программу (описание в сообщении)
 
Написать свой такой - дело 25 минут.

Делал когда то именно то что ты описал для игры. Инжектим эту длл она подменяет ип по которому пытается соединится игра на 127.0.0.1 а настоящий ип сервера отсылает в прокси.

Код:

BOOL HookWSockConnect()
{
        if (!HookFunc("ws2_32.dll", "connect"))
                if (!HookFunc("wsock32.dll", "connect"))
                        return FALSE;
        return TRUE;
}

typedef int (*HookedConnectFunc)(__in SOCKET, __in const struct sockaddr_in*, __in int);
int HookedConnect(SOCKET s, const struct sockaddr_in* name, int namelen)
{
        sockaddr_in* newSockAddr = new sockaddr_in();

        newSockAddr->sin_addr.s_addr = inet_addr(LOCALIP);
        newSockAddr->sin_port = name->sin_port;
        newSockAddr->sin_family = name->sin_family;

        Sleep(250);
        return hook->Orig<HookedConnectFunc>()(s, newSockAddr, namelen);
}


Phantom 15.06.2013 17:34

Ответ: Ищу программу (описание в сообщении)
 
Эм. Я не кодю на С. Клиент - это flash приложение, которое загружается с сервера, причём может отличаться раз от раза, используются всякие фичи, исключающие его подмену. Не думаю, что каким-либо образом получится подключить к нему dll (но я в программировании под винды нуб). Прокси сервер хочу написать на php, ибо знаю его хорошо, опыт подобный есть, код можно менять быстро без перекомпилирования, ну и я уже знаю, что php справится с этим без проблем, так как делал подобное.

jimon 15.06.2013 18:43

Ответ: Ищу программу (описание в сообщении)
 
поковыряй свой роутер, там должна быть таблица routing, по-сути аналог host, ты там указываешь у какому ip пересылать запрос на требуемый ip

если лень ковырять роутер то поковыряй routing table у себя на компе, под виндой это так делается : http://www.microsoft.com/resources/d....mspx?mfr=true

Phantom 15.06.2013 18:51

Ответ: Ищу программу (описание в сообщении)
 
В роутере (Dlink DIR300) уже всё вдоль и поперёк знаю, там не получается подобное реализовать (но если ошибаюсь, ткните носом). Сейчас читал про утилиту винды netsh, пробовал через неё, но по ходу тоже не получится. Сейчас почитаю про route.

Phantom 15.06.2013 19:05

Ответ: Ищу программу (описание в сообщении)
 
ё#$%*!!! Сдуру выполнил команду route delete 127.0.0.1, теперь:

PHP код:

C:\Users\Phantom>ping 127.0.0.1

Обмен пакетами с 127.0.0.1 по с 32 байтами данных
:
Общий сбой.
Общий сбой.
Общий сбой.
Общий сбой.

Статистика Ping для 127.0.0.1:
    
Пакетовотправлено 4получено 0потеряно 4
    
(100потерь

Как вернуть как было? Выложите кто-нибудь листинг команды route print на семёрке

jimon 15.06.2013 19:08

Ответ: Ищу программу (описание в сообщении)
 
держи


Phantom 15.06.2013 19:19

Ответ: Ищу программу (описание в сообщении)
 
PHP код:

route -p add 127.0.0.1 mask 255.255.255.255 On-link metric 306 if 127.0.0.1
Сбой добавления маршрута
Параметр задан неверно

ЧЯДНТ?

ABTOMAT 15.06.2013 19:27

Ответ: Ищу программу (описание в сообщении)
 
Цитата:

Сообщение от Phantom (Сообщение 261421)
В роутере (Dlink DIR300) уже всё вдоль и поперёк знаю, там не получается подобное реализовать (но если ошибаюсь, ткните носом). Сейчас читал про утилиту винды netsh, пробовал через неё, но по ходу тоже не получится. Сейчас почитаю про route.

Вообще в DIR300 довольно убогая заводская прошивка, в качестве альтернативы можно попробовать DDWRT. Я сам обладатель DIR320 (отличается от 300 наличием USB-порта).

Phantom 15.06.2013 19:38

Ответ: Ищу программу (описание в сообщении)
 
Проблему с 127.0.0.1 решил перезагрузкой компа. Догнал, что это не постоянный маршрут, а видимо создаваемый системой при старте.


Цитата:

Вообще в DIR300 довольно убогая заводская прошивка, в качестве альтернативы можно попробовать DDWRT. Я сам обладатель DIR320 (отличается от 300 наличием USB-порта).
Из всех роутеров, с какими имел дело, больше всех нравится DIR-300. Он все мои потребности пока удовлетворял. Встречал экзепляр какого-то длинка, в котором нельзя было на внешку 80 порт открыть, да и панель там была убогая какая-то. А вот DIR-300 меня устраивает.


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

ABTOMAT 15.06.2013 19:40

Ответ: Ищу программу (описание в сообщении)
 
Да вот мне тоже DIR300/320 нравится. Хоть и старенький, но зато дешёвый, надёжный и функцию свою хорошо исполняет. Но вот именно этой функции там нет, как и многих других более-менее "продвинутых".

Phantom 15.06.2013 23:04

Ответ: Ищу программу (описание в сообщении)
 
Что-то нихера у меня не получается. Уже перепробовал всё, что можно. Пару прог качал, пробовал, не работает. Я не могу сформулировать гуглу то, что мне нужно. Обычно находятся программы, реализующие маппинг портов. Но они обрабатывают входящие соединения, а мне надо "подправить" исходящее соединие.

Кто-то задавался подобным вопросом до меня. Неутешительно: http://otvety.google.ru/otvety/threa...7ac1a5ba16b6a3

Какие будут идеи?

jimon 15.06.2013 23:57

Ответ: Ищу программу (описание в сообщении)
 
ну так, ты отправляешь трафик на другой комп, а он прикидывается что имеет такой же ip как программа хочет (впиши руками в опциях конекта), и всё =)

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

Phantom 16.06.2013 00:03

Ответ: Ищу программу (описание в сообщении)
 
jimon, ты говоришь слишком абстрактно для меня. Поточнее и конструктивнее объясни, что ты предлагаешь?

h1dd3n 16.06.2013 00:05

Ответ: Ищу программу (описание в сообщении)
 
Всегда на один и тот же ип соединение? Какой, если не секрет?

Phantom 16.06.2013 00:09

Ответ: Ищу программу (описание в сообщении)
 
IP всегда один и тот же, ни разу не менялся за год, правда порт зачем-то меняют иногда. Но это не проблема, если будет решение готовое, то поменять IP легко. А зачем тебе IP, я уверяю, он ничем кроме цифр не отличается от других IP. :-D

Phantom 16.06.2013 00:12

Ответ: Ищу программу (описание в сообщении)
 
Появилась идея. В роутере всегда настраивал локальную сеть в 192.168.0.*, как все и делают. А что если я локальную сеть определю в пространстве, в котором находится адрес нужного мне сервера? Или роутер мне этого сделать не позволит? Правда, тогда нужно будет мой прокси сервер запускать в иной сети, за пределами роутера. В любом случае, это решение какое-то упоротое и некрасивое.

h1dd3n 16.06.2013 00:14

Ответ: Ищу программу (описание в сообщении)
 
Ну как я уже сказал у меня есть готовая ДЛЛ, и все что требуется это вообщем-то вписать туда твой ип, заинжектить в браузер или флеш плеер (flash это не процесс, flash выполняется плеером), и получить решение..

Phantom 16.06.2013 00:17

Ответ: Ищу программу (описание в сообщении)
 
h1dd3n, было бы круто, но я понятия не имею, как заинжектить dll в процесс флеш плеера. Если знаешь как, научи.

Ах да, на этот же IP приложение ещё вроде бы http запросы шлёт (вероятно по 80 порту, точно сейчас не скажу). Их я проксировать не собираюсь, то есть нужно соединение на конкретный IP и порт проксировать.

h1dd3n 16.06.2013 00:24

Ответ: Ищу программу (описание в сообщении)
 
WinJect выбираем ДЛЛ выбираем процесс (скорее всего это будет процесс браузера) нажимаем инжект. Ничего страшного не случится если заинжектить во все подряд (просто во всех этих процессах, при соединении на таинственный ИП будет происходить замена на 127.0.0.1)

Phantom 16.06.2013 00:27

Ответ: Ищу программу (описание в сообщении)
 
Было бы круто. А можешь мне запилить такую dll, чтобы она с текстового файла брала ip и порт, чтобы можно было без перекомпилирования изменять настройки?

h1dd3n 16.06.2013 01:46

Ответ: Ищу программу (описание в сообщении)
 
https://www.virustotal.com/ru/file/9...is/1371328541/
http://rghost.ru/46783587
Файл params.txt в корне на C: содержит ип и порт которые надо искать и заменять.
То есть пишем в этот файл (я использовал ya.ru для проверки)
77.88.21.3
80
Инжектим в браузер (тест на файрфоксе) вводим ya.ru в адресную строку нажимаем enter перенаправляет на 127.0.0.1 (у меня поднят денвер поэтому зашло в дефолтную страницу).
Для инжекта можно использовать что угодно. Я пробовал WinJect.

Phantom 16.06.2013 01:52

Ответ: Ищу программу (описание в сообщении)
 
h1dd3n, не сочти, что докапываюсь к мелочам, но нельзя ли как-то сделать так, чтобы файл с параметрами искался возле самой dll или возле Winject.exe (чтобы всё в одном месте было и портабельно)?:rolleyes:

h1dd3n 16.06.2013 01:55

Ответ: Ищу программу (описание в сообщении)
 
В том то и дело длл само по себе не процесс, можно только сделать вместо "C:\params.txt" просто "params.txt" тогда будет искаться данный файл в рабочей папке процесса в который ты инжектишь, сомневаюсь что это будет удобнее )

Phantom 16.06.2013 01:59

Ответ: Ищу программу (описание в сообщении)
 
В фаерфокс инжектит, в хром не инжектит, пишет: Both injection-method failed ! ( RemoteLoadLibrary and DetourInjecting ) -> chrome.exe Target is protected? err:0. Ну это не так критично, фаерфокс, так фаерфокс.

Цитата:

В том то и дело длл само по себе не процесс, можно только сделать вместо "C:\params.txt" просто "params.txt" тогда будет искаться данный файл в рабочей папке процесса в который ты инжектишь, сомневаюсь что это будет удобнее )
Будет удобнее, возьму портабельный фаерфокс и разверну всё возле него.
Но лучше, чтобы если файл почему-то не находит, то искало бы как сейчас на диске C.

Phantom 16.06.2013 02:15

Ответ: Ищу программу (описание в сообщении)
 
Кстати, winject чо, сообщает об ошибке голосом Джонни Кэша?:-D

Phantom 16.06.2013 08:44

Ответ: Ищу программу (описание в сообщении)
 
h1dd3n, протестировал программу, в фаерфоксе работает, позволяет гонять через неё флеш плеер. Написал прокси, всё работает. В общем, круто. Спасибо, ты меня спас. Я сам бы точно не разобрался, как подобное реализовать.:super:

h1dd3n 16.06.2013 12:50

Ответ: Ищу программу (описание в сообщении)
 
Цитата:

В фаерфокс инжектит, в хром не инжектит, пишет: Both injection-method failed ! ( RemoteLoadLibrary and DetourInjecting ) -> chrome.exe Target is protected? err:0. Ну это не так критично, фаерфокс, так фаерфокс.

Но лучше, чтобы если файл почему-то не находит, то искало бы как сейчас на диске C.
с хромом хз почему проблемы
http://rghost.ru/46788351
Цитата:

Сообщение от Phantom (Сообщение 261477)
h1dd3n, протестировал программу, в фаерфоксе работает, позволяет гонять через неё флеш плеер. Написал прокси, всё работает. В общем, круто. Спасибо, ты меня спас. Я сам бы точно не разобрался, как подобное реализовать.:super:

Длл читает нужный ИП при коннекте кстати, а не при инжекте, то есть можно менять params.txt не перезапуская браузер/открытую вкладку, и не используя winject заново.

Phantom 16.06.2013 15:41

Ответ: Ищу программу (описание в сообщении)
 
Спасибо! Удобно.:super:

Phantom 17.06.2013 01:18

Ответ: Ищу программу (описание в сообщении)
 
Решил запускать winject через консоль, слышится характерный "бульк", но ничего не работает. Если после этого запустить GUI и сделать всё вручную, то снова слышится "бульк" и всё работает. Но если через командную строку дважды подряд запустить, то второй раз выдаёт ошибку, что dll уже подключена и повторно её подключать нельзя. Но куда-то не туда судя по всему она подключается.

Phantom 17.06.2013 01:59

Ответ: Ищу программу (описание в сообщении)
 
Частично разобрался. Проблема в том, что exe флеш плеера запускается в двух экземплярах зачем-то. Если по PID обращаться, а не по имени процесса, то работает.

pax 20.03.2014 16:23

Ответ: Ищу программу (описание в сообщении)
 
Ищу программу для генерации Distance Field текстур, особенно хочется чтобы генерировала двойную дистанцию как на последней картинке в доке http://www.valvesoftware.com/publica...nification.pdf


Часовой пояс GMT +4, время: 03:43.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot