首页
社区
课程
招聘
[旧帖] 关于OD调用堆栈,请教思路的问题。 0.00雪花
发表于: 2016-8-8 12:55 4111

[旧帖] 关于OD调用堆栈,请教思路的问题。 0.00雪花

2016-8-8 12:55
4111
某游戏,点击登录按钮后,先收到 recv ,然后发送 send

过程:登录 → recv(断点) → send(断点)

我在两次断点间,分别查看了调用堆栈的变化。

我原始的思路是:两个断点间新增的call,会有出现2次的,比如加解密(异或)。

但令我惊讶的是,recv到send之间,调用堆栈不是累积的,反而是减少了。
我的意思是:
登录 → recv(断点) → send(断点) 的堆栈情况比 登录 → recv(断点) 还要少。但我理解应该是更多才对,毕竟还有个 recv(断点) → send(断点) 的过程,难以理解!

所以也更没有出现加解密函数。

值得一提的是,其实封包的结构我已经推导完成,我能用异或从密文解密出原文。我目前还要去跟的原因是,封包的最后4字节,应该是个校验部分。

4字节的校验,用于游戏封包,我能想到的就是CRC32。但是我尝试了很多次,都无法从密文或原文算对封包最后的校验值。

我想,问题应该出自游戏采用了自定义的CRC32的多项式。

当然我并不肯定是CRC32,游戏有zlib库,我有在zlib里的crc32函数断点,游戏并没有调用。

但不管怎样,在  recv(断点) → send(断点)  之间,应该是加解密函数与校验函数都会出现两次才对呀!那为什么调用堆栈里没有出现2次的呢?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 140
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
问题已经解决了,找到了加解密与校验的位置。
我的方法是:
先用 WPE 修改封包,游戏提示封包校验异常,并离线。
然后 OD 查找参考文本,找到了位置。
2016-8-8 23:58
0
游客
登录 | 注册 方可回帖
返回
//