我在运行一个vb程序时出现这种情况,但是我如果f8好像不会出现 这段程序一个朋友的的帖子,功能为在内存中取socket数据 现摘录如下 Sleep (1000) Do Until False DoEvents DoEvents
nResult = recv(m_hSocket, Buff(0), MAX_PACK_LEN, 0) Call Sleep(200) DoEvents If nResult = SOCKET_ERROR Then MsgBox "Snap Error" Exit Do End If CopyMemory IPH, Buff(0), Len(IPH)
Select Case IPH.proto
Case IPPROTO_TCP Debug.Print HexIp2DotIp(IPH.sourceIP) & "----->" & HexIp2DotIp(IPH.destIP) End Select Loop
如果是关闭VB程序时发生,可以试试把外接管理器里面的所有外接都去掉(一般是sourcesafe引起的)
这段程序一个朋友的的帖子,功能为在内存中取socket数据
现摘录如下
Sleep (1000)
Do Until False
DoEvents
DoEvents
nResult = recv(m_hSocket, Buff(0), MAX_PACK_LEN, 0)
Call Sleep(200)
DoEvents
If nResult = SOCKET_ERROR Then
MsgBox "Snap Error"
Exit Do
End If
CopyMemory IPH, Buff(0), Len(IPH)
Select Case IPH.proto
Case IPPROTO_TCP
Debug.Print HexIp2DotIp(IPH.sourceIP) & "----->" & HexIp2DotIp(IPH.destIP)
End Select
Loop
这个技术难度要比原来的高很多哦,要有思想准备.
首先我们要替换winSock.dll或者winsock32.dll,我们写的替换函数要和原来的函数一致才行,就是说它的函数输出什么样的,我们也要输出什么样子的函数,而且参数,参数顺序都要一样才行,然后在我们的函数里面调用真正的winSock32.dll里面的函数就可以了
首先:我们可以替换动态库到系统路径
其次:我们应用程序启动的时候可以加载原有的动态库,用这个函数LoadLibary
然后定位函数入口用GetProcAddress函数获得每个真正socket函数的入口地址
当游戏进行的时候它会调用我们的动态库,然后从我们的动态库中处理完毕后才跳转到真正动态库的函数地址,这样我们就可以在里面处理自己的数据了,应该是一切数据.呵呵!
兴奋吧,拦截了数据包我们还要分析之后才能进行正确的应答,不要以为这样工作就完成了,呵呵!还早呢,等分析完毕以后我们还要仿真应答机制来和服务器通信,一个不小心就会被封号,呵呵,呜~~~~~~~~我就被封了好多啊!
分析数据才是工作量的来源呢,游戏每次升级有可能加密方式会有所改变,因此我们写外挂的人都是亡命之徒啊,被人娱乐了还不知道,呵呵!(声明我可没有赚钱,我是免费的)
好了,给大家一个不错的起点,这里有完整的替换socket源代码,呵呵!
http://www.vchelp.net/vchelp/zsrc/wsock32_sub.zip
http://lonelydeer.html.533.net/5.htm