用拦截消息钩子()将dll注入目标进程,当然先要找到目标进程窗口,然后注入。然后就是对目标api函数入口地址进行改写,也就是对send(),recv,wsasend(),wsarecv(),等等函数的入口地址进行改写。方法有两种
1,最简单的,就是按照csdn开发高手上的madcodehook控件,用hookapi进行拦截再在自己改写的代码中对buf进行处理。
2,自己进行改写,比较麻烦,但过程也比较固定。在csdn文档里,有几篇这样的文章。我们可以用他们的思路,也就是在hookpro过程中载入'ws2_32.dll',并找到send,recv,wsasend,wsarecv,的地址,然后通过跳转指令和对内存的读写,达到修改的目的,并在自己的代码中对完成对buf的处理。 关于对buf的处理,我认为对其进行内存影射。在mysend或myrecv函数中用copymen将buf考出,在包含mysend单元的初始化中对buf的复制buf进行隐射,并定义redbuf函数将对buf的读结果作为result返回。在影射之前用CreateMutex进行读写控制,并对主窗体发送消息,在主窗体的响应函数中调用redbuf达到输出buf内容的目的。以上是我对一些技术实现的看法,请高手指点一下。
我还有几个问题1, 一般apihook用send,还是wsasend,还是用wsasend就能解决问题,还是要看目标进程用的是什么?
2,关于对buf包进行读取的结构定义,一般的是怎样定义的??3, 对buf显示用什么控件比较好
1,最简单的,就是按照csdn开发高手上的madcodehook控件,用hookapi进行拦截再在自己改写的代码中对buf进行处理。
2,自己进行改写,比较麻烦,但过程也比较固定。在csdn文档里,有几篇这样的文章。我们可以用他们的思路,也就是在hookpro过程中载入'ws2_32.dll',并找到send,recv,wsasend,wsarecv,的地址,然后通过跳转指令和对内存的读写,达到修改的目的,并在自己的代码中对完成对buf的处理。 关于对buf的处理,我认为对其进行内存影射。在mysend或myrecv函数中用copymen将buf考出,在包含mysend单元的初始化中对buf的复制buf进行隐射,并定义redbuf函数将对buf的读结果作为result返回。在影射之前用CreateMutex进行读写控制,并对主窗体发送消息,在主窗体的响应函数中调用redbuf达到输出buf内容的目的。以上是我对一些技术实现的看法,请高手指点一下。
我还有几个问题1, 一般apihook用send,还是wsasend,还是用wsasend就能解决问题,还是要看目标进程用的是什么?
2,关于对buf包进行读取的结构定义,一般的是怎样定义的??3, 对buf显示用什么控件比较好
解决方案 »
- 大侠们急救啊,很简单的两个文本框数据加相
- dll中变量声明的问题
- Delphi 10当中如何安装OCX控件
- 还是Delphi7.0的问题,关于功能键的问题
- 一个Form继承的问题
- 数据库:怎么跳出个登录窗口啊?
- >>>>>>>>>>我不想用vb,我爱delphi<<<<<<<<<<<<<我只有200分了
- 很简单的问题,一时想不起来,大家快来帮忙
- 谁有Webbrowser.ExecWeb的具体说明,E_mail给我一份!最好是webbrowser的使用说明!
- delphi中怎样实现内存拷贝
- 使用TOleContainer控件调用excel后为什么不能正确打开excel文档?(在线等待)
- 就是如果我用Grid显示数据,如何将分数低于60分的那条记录的颜色变成红色的呢?
如:
目标进程只有调用GetModuleHandle,没有调用LoadLibrary,GetProcAddress
目标进程挂接了ws2_32.dll的WSASend,WSARecv函数
我们怎么样找到目标进程自己的myWSASend,myWSARecv函数指针
(挂接后的WSASend,WSARecv函数指针)?