| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Сети > Запустить чужую программу через socks |
| Автор: BeeMaster 17.1.2012, 22:23 |
| Есть желание заставить работать чужую программу через сокс. Но проблема в том, что программа сама не умеет этого делать. Видел софт, который буквально "надевает" сокс на программу. Прошу объяснить как возможно сделать такое, по возможность рассказать алгоритм реализации. Нужно чтобы моё приложение заставило работать через сокс другое, которое не умеет этого. |
| Автор: BeeMaster 19.1.2012, 15:38 |
| может быть нужно внедряться в процесс? если так то что дальше... или не нужно вовсе... объчсните алгоритм пожалуйста |
| Автор: BeeMaster 20.1.2012, 18:04 |
| Люди, помогите, неужели не существует алгоритма решения вопроса? Но ведь другие программы делаю это, по какому алгоритму? |
| Автор: BeeMaster 22.1.2012, 20:01 |
| Up |
| Автор: northener 23.1.2012, 00:41 |
Приведите пример. |
| Автор: BeeMaster 23.1.2012, 20:48 | ||
| http://freecap.ru/?p=whatis Цитата с сайта
Вот мне нужно узнать алгоритм, по которому я бы мог сам реализовать возможность работы других приложений через сокс |
| Автор: BeeMaster 25.1.2012, 23:03 |
| хелп ми |
| Автор: Чучмек 26.1.2012, 00:45 |
| Организуй перехват функций WS2_32.dll |
| Автор: aivocco 26.1.2012, 10:07 |
| sockcap это делает отлично, просто перетащи мышкой exe файл или настрой запуск любой программы через sockcap, проксей в инете немерено |
| Автор: BeeMaster 26.1.2012, 20:03 | ||
aivocco, я же написал что мне нужен сам алгоритм так как я хочу реализовать это своими руками.
а чуть чуть поподробнее можно? |
| Автор: Чучмек 26.1.2012, 21:24 |
| Ну если рассматривать стек протоколов http/tcp/ip - тот же баузер. Запрос страницы сводится к вызову gethostbyname socket connect Send(WSASend)/Recv(WSARecv) Вот и надо перехватить gethostbyname чтобы узнать какой сервер запрашивает программа и connect, чтобы подменить IP/Port сервера. Создать локальный сервер, адрес и порт которого будет использоваться при вызове connect вместо оригинальных. А дальше тонкости протокола. Добавлено через 4 минуты и 15 секунд Или просто - локальный proxy(если программа поддерживает работу через proxy) |
| Автор: BeeMaster 27.1.2012, 05:44 | ||
| Спасибо, на днях попробую реализовать, если будут вопросы, обращусь сюда Сразу вопрос
То есть я узнаю какой адрес запрашивает программа, получается дальше нужно подменить IP коннекта? Но ведь ещё нужно перед началом работы с соксом отправить ему приветствие с авторизацией(речь о сокс5), это получается нужно внедриться в процесс и отправить это или просто подменить пакет? Этот момент не доходит... поясните плз |
| Автор: Чучмек 27.1.2012, 14:13 |
| Создаешь сервер IP:127.0.0.1 Port:8080(или любой другой свободный) При перехвате connect подменяешь IP/Port для всех соединений на 127.0.0.0.1:8080 Всю работу с SOCKS берет на себя локальный сервер. |
| Автор: BeeMaster 27.1.2012, 17:35 |
| Точно, спасибо. |