30659653 发表于 2020-6-1 12:48

【游戏封包】处理线程发包

回顾一下上节课的内容,我们已经解决了定位发包的问题,发包函数都找到了,就可以开始下一个问题了.线程鬼打墙!开始!
又是一个风和日丽的早晨,又对一款游戏产生了念想,又是熟悉的传统手艺——断点发包函数定位功能Call。 奇怪的是无论怎么Ctrl+F9 都返回不到功能call, 点击OD快捷栏 K 按钮 查看堆栈调用关系,才惊讶的发现 无论做什么动作断下,调用关系都是一样的,也就是说游戏中任何动作都是走的一样的函数一样的代码? 当然不可能的,不同的动作不同的功能,怎么会是同样的代码产生的呢!在断点发包函数的时候,遇到这种现象 只能说明厂商对发送封包进行了特殊的处理。就像小说里面的鬼打墙,让我们一直在同样的代码里面打转转。不过这种手段远没有鬼打墙那么邪乎,它只不过是把发送封包的责任交给了一个子线程——俗称线程发包。 原理如图:上图就是线程发包最简单明了的情况了,厂商把游戏的功能代码和发包代码放在了不同的线程里面。通过一个一个不变的地址或者结构互相联系。 子线程发包,这个线程里面恐怕是一个死循环,一直在查看全局变量里面是否有游戏主线程写入的封包内容,如果有那就发送出去。 现在的情景就一目了然了,既然是死循环 那么循环里面每次运行的代码必然是一样的,所调用的函数也必然是一样的,那么每次的堆栈也是一样的。这就解释了为什么我们会看到一模一样的堆栈调用关系了。 **** Hidden Message *****是陌生的代码!没有我们的标记!我们一起成功的走出了鬼打墙!!!
好兄弟们,这一系列文章记得多给点HB

1015274595 发表于 2020-6-1 14:24

好帖,占个沙发

1946010 发表于 2020-6-1 19:29

还是熟悉的味道,来学习了

PerfectMagic 发表于 2020-6-1 19:39

这个鬼打墙真秀

cunzhang2016 发表于 2020-6-1 20:29

真的很热闹牛啊

||| 发表于 2020-6-1 20:50

和我现在的问题一样啊。。学习一下希望可以玩明白了。。{:5_118:}

learn0206 发表于 2020-6-2 06:30

研究學習 感謝

CrackThese 发表于 2020-6-3 01:43

看一看瞧一瞧

一万八_ 发表于 2020-6-3 03:00

感谢楼主分享

313108378 发表于 2020-6-3 07:54

每次看到大佬都莫名兴奋{:5_121:}
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 【游戏封包】处理线程发包