od过滤心跳包
① 服务器不能收到客户端的心跳包
不知这个心跳包传输模式是广播还是点到点呢
也许是交换机工作模式不匹配你的应用,二级交换可直接广播,三级交换会过滤广播的心跳包.需要三级交换配置下转发广播
检查几点,心跳包发包模式,网络互通,程序设置,交换机工作模式
② 在OD数据窗口中下内存写入或硬件写入怎么过滤心跳包
send 函数头下条件断点
[esp+*]!=数据包长度 && [esp+*]!= 数据包长度
③ OD下bp send断点 断下的都一样 请高人指点一下怎样解决 我想找各种CALLA 可以的话留个QQ 我会加你
不清楚你说什么
bp send 就是在send函数的入口设置软中断,send函数有4个参数,当然就有4个数据
用od下断点时,要及时把堆栈区的信息保存,已防止心跳断开连接
④ od下bp send 游戏不操作自己断下
废话,游戏本身就有心跳包
⑤ OD 汇编 找CALL
你代码太乱了,根本没法看,手动整理了下,苦逼。
你找的地方根本不对,没法注入,这是其一。
其二就是,就算你的功能函数是对的,不给我OD,起码也给个IDA静态分析下吧。给这么一段,神仙也写不出注入代码来。
你这里的2个call,一个是ws2_32.send,一个是ws2_32.recv.分别是windows系统中的收包/发包函数。现在是在系统领空的,你在ws2_32.,dll里,这里根本就不在游戏的主线程中,不可能有打坐功能。自己进去send内部,在send头部下个断点,或者在command bar 里 bp send。这两个都是在send头部下断。
注意避免心跳包干扰,然后去游戏执行打坐功能。断下来后Ctrl+F9,执行到返回。一般次数要多一点,因为一开始2-3次还是在组包函数里,外面才是正常的游戏功能。不确定的话可以返回2层以后在每次返回后下断,不放心可以多下点。这个层数跟游戏有关系。一般从明文call出来,不会超过5层就能找到合适的调用接口。
断点下完了,F9游戏跑起来。看看是否马上会有断点断下。断了的删了,应该是层数返回的太多,跑到GUI上去了,肯定不是。然后执行些无关紧要的操作,把断下来的断点删掉。
然后打坐,看看第一个断下的断点,那个call是什么形式。首先看看调用接口好不好,push参数多不多,push了几个,有没有ecx赋值,这个一般要进去看retn语句,反正自己细看下,找出参数个数。
然后找个代码注入器,写个汇编测试下,能用最好,崩溃了也很正常。看看push参数个数是否正确,多查找一下。
测试成功了,就要找参数来源了。这个是OD基本功,跟着反汇编层层返回,直到找到基址。
一般来说,当前断下的位置不一定是最合适的调用位置。找参数之前可以长个心眼,看看这个call的内层call的参数含义是否更明确。或者你找到了这个call,它的push参数,都是[esp+0xXXX]读取的,如果从堆栈看都是外层call的push参数,可以考虑是否调用外层call来的更方便。
总之就是要够鸡贼,怎么好弄怎么来。
都找到了,请用E,Delphi,VC等写出注入程序,用内联汇编嵌入你的代码,完成调用。
基本就是这样了,祝你成功,如果感觉我这些还够辛苦费,请采纳。
⑥ mina 同时发送心跳包 和数据 要加入两个字符编码过滤器吗,该怎么弄啊
你如果心跳包的格式跟数据格式一样,就不需要加两个了
⑦ bp wsasend 怎样过滤心跳包
用 wsasend 断下后 在堆栈中可以看到包大小,用 bp wsasend [包大小地址]>包大小
⑧ OD找Call的疑问
你问的比较概括。我也只能概括性的回答
并不是bp send没用。是用处大了。而网络通信的封包发送是基于函数send 或者函数WSASend进行的。某些游戏用其中一种通信。或者两种都用。有些游戏是用send发送密码封包。wsasend发送游戏数据封包。
时时刻刻在发送封包,有3个原因。
1是心跳包。比如10秒发送一次。且发送有规律。判断你是否掉线。
2是游戏里怪物或别的玩家在移动。这个比较好控制。找个没人没怪的地方进行下断。
3是你正在下载地图。因为有数据交流所以造成recv和send
所以bp send会一直下断。
如果你是下断某个call的话。这个call可能涵盖加密算法。或者这个call里面的某功能,其它程序需要调用。比如心跳包,游戏玩家的移动包,地图下载之类都需要它。造成一直下断。
此时,断到这样的call的时候大多都不对。我以前搞大型网游时候。断过这样的call
LZ需要多读读书。看看帖。封包的加解密需要一些技巧和层层剥离分析。主要在于自己的分析和联想。