我的思路就是:hook socket's connect,使程序连接到socks代理服务器,其它send recv sendto等函数不做处理。以下是大概的实现步骤,可就是hook connect不成功,奔泪!1.运行A程序(获得process handle和threadid);--CreateProcess
2.为A程序注入hook.dll(hook socket's connect);--SetWindowsHookEx
3.A程序启动,调用connect函数,被hook.dll拦截,获得A程序要连接的server IP/PORT;
[myconnect函数:]
4.更改IP/PORT,指向socks代理服务器。
5.再写回A程序的connect函数。(writeprocessmemory(oldconnect))
6.再利用步骤3中获得的IP/PORT,与socks代理服务器握手协商。
7.再把connect函数的地址写成myconnect的地址。大家看看这个步骤是否可行!

解决方案 »

  1.   

    你确认你修改了connect的地址吗,你hook的进程是否正确呢
      

  2.   

    大哥,我QQ:413128818,求醍醐。hook的是刚创建的进程(CreateProcess)。
      

  3.   

    刚刚出去了,给同事送伞,淋成落汤鸡了。
    是我的connect函数没有执行,不知道哪里出的问题...
      

  4.   

    看代码看了下, 总结下LZ的问题
    1 SetWindowsHookEx 函数挂接的不对,参数错了。 另外不是LZ说的注入
    2 SetWindowsHookEx 设置的消息函数原型错了。
    3 另外要挂接Connect函数的,需要用陷阱式钩子,而LZ用的引入式钩子,所以要挂接的那部分根本没进去
    4 另外代码没排版, 还有DLL 里不要用string类型。
      

  5.   

    多谢 sanguomi !
    啥也不说了,结贴!
      

  6.   

    http://bbs.csdn.net/topics/360173238?page=1 老兄,你这个问题是怎么解决的》你的QQ是多少,我想和你交流下。我也同样遇到这个问题了。。