我的思路就是: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的地址。大家看看这个步骤是否可行!
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的地址。大家看看这个步骤是否可行!
解决方案 »
- Delphi7【IdTCPClient】问题!!!
- 经典的删除文件及文件夹例子,为什么提示 Types of actual and formal var parameters must be identical
- 这样一个数据库写入问题。
- FastReport/ReportMachine全能报表编辑器!
- 奇怪的问题?当我试作用缓存更新主表和从表,表能缓存修改,不能更新,但是我把query1.cachedupdate设为 false时就能保存,但我想采用事
- 100分太少了,我还想加,有关文本导入数据库的问题,很烦!
- 请教高手:Internal Error:URW2160 是怎么回事?
- 困扰我很久的问题请各位看看。
- 关于TStrings的问题
- DBGird中删除一条记录后点更新按钮怎么实现行序号也能连续起来
- swf透明问题.
- 怎么在一个大量数据中快飞的查询一个字符串?
是我的connect函数没有执行,不知道哪里出的问题...
1 SetWindowsHookEx 函数挂接的不对,参数错了。 另外不是LZ说的注入
2 SetWindowsHookEx 设置的消息函数原型错了。
3 另外要挂接Connect函数的,需要用陷阱式钩子,而LZ用的引入式钩子,所以要挂接的那部分根本没进去
4 另外代码没排版, 还有DLL 里不要用string类型。
啥也不说了,结贴!