proxychains-ng 工作原理分析
2016-05-04 00:03
639 查看
概要
linux 中使用LD_PRELOAD
mac osx 中使用
DYLD_INSERT_LIBRARIES在
DYLD_FORCE_FLAT_NAMESPACE=1环境下
对网络相关的 API(
sys/socket.h, 见
src/libproxychains.c) 进行 hook 实现代理的功能
细节
src/libprocychains.c
// hook socket 相关的函数 static void setup_hooks(void) { SETUP_SYM(connect); SETUP_SYM(sendto); SETUP_SYM(gethostbyname); SETUP_SYM(getaddrinfo); SETUP_SYM(freeaddrinfo); SETUP_SYM(gethostbyaddr); SETUP_SYM(getnameinfo); SETUP_SYM(close); }
src/main.c
// 主要逻辑如下,加载动态链接库,然后执行后面的程序,由于是同一个进程仅仅更换执行的代码所以动态链接的网络库使用的是修改过的不会变 // proxychains4 curl http://ipecho.net/plain; echo int main(int argc, char *argv[]) { int start_argv = 1; putenv("LD_PRELOAD=/usr/local/lib/libproxychains4.dylib"); execvp(argv[start_argv], &argv[start_argv]); }
待续
references
https://github.com/rofl0r/proxychains-nghttp://www.catonmat.net/blog/simple-ld-preload-tutorial/
http://www.catonmat.net/blog/simple-ld-preload-tutorial-part-2/
相关文章推荐
- MySQL Proxy(解决注入的另一思路)
- mysql proxy问题的解决方法
- Win2003 WinHTTP Web Proxy Auto-Discovery Service 导致的服务器重启
- use jscript with List Proxy Server Information
- MySQL Proxy的安装及基本命令使用教程
- Ubuntu10下如何搭建MySQL Proxy读写分离探讨
- WinHTTP Web Proxy Auto-Discovery Service 服务处于停止状态
- 基于zbus的MySQL透明代理(<100行)
- zabbix 分布式部署
- java动态代理模式
- AOP切面编程
- 如何用Go语言打造一个高性能MySQL Proxy
- 如何利用一个数据库中间件扩展MySQL集群——kingshard使用指南
- Go语言项目(kingshard)性能优化实例剖析
- 一个高性能的MySQL proxy(kingshard)的性能测试报告
- 实现lighttpd-1.5+mod_proxy_core+多 Fastcgi backends 解析PHP负载平衡
- Web***测试框架-Zed Attack Proxy v 2.0.0(OWASP出品)
- Zabbix-proxy的搭建和配置全过程