-
-
[旧帖]
关于OD调用堆栈,请教思路的问题。
0.00雪花
-
发表于:
2016-8-8 12:55
4111
-
[旧帖] 关于OD调用堆栈,请教思路的问题。
0.00雪花
某游戏,点击登录按钮后,先收到 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期)