lgh520 发表于 2020-4-24 17:20

某Q sessionkey查找完整版

# 为什么要发这个贴子
* 因为之前论坛某同学发的查找sessionkey的资料并不是很完全。
# 借鉴
* 我也是按照他的思路查找关键函数`oi_symmetry_encrypt2`找下去找到的,希望你也可以。
## 快速找到关键加密函数
* 按照之前的帖子我找了`Common.dll`下的`oi_symmetry_encrypt2`函数
不管你是用od,还是ce都可以快速找到
## 下断点
* 在这个函数下个`f2`断点
## 等待中断
* 这个函数非常容易下断,随便动下`某q`就会下断,不要怀疑,断点是不是错了,因为`某q`无时无刻都会给服务器发送反馈信息,其信息是加密的,所以很容易就会自动断下,或者直接发个消息也可以。
## 看堆栈
* 如果你具有一定的逆向知识,了解一个函数的调用过程,那你一定知道调用函数的`esp(也就是栈顶)`所指向的就是返回地址,也就是`call`指令的下一条语句的首地址,不了解也没关系,后面慢慢了解
## 从堆栈找到参数
* 现在`esp`指向的是返回地址
* 那么`esp+4`就是发的消息,不信你发个消息看看指针指向的内容是不是有你发的消息
* `esp+8`就是第一个参数的长度
* `esp+0xc`就是我们要找的`sessionkey`的指针了,那它指向的就是16位的`sessionkey`了。
## 如何通过软件获得?
* 既然找到了`sessionkey`了,那怎么写软件来获取呢?说实话我半年没摸逆向了,我就提供个思路具体只有靠大家了,我很多细节都忘了,以后有机会再写吧!
      1. 通过`hook`很容易获得,从开始`hook`函数,转跳到我们自己的程序断,`hook`请注意机器码的长度,`esp+0xc`获取地址,然后将`sessionkey`的内容复制到我们自己申请的地址,注意长度`16字节`
      2. 听说可以直接内存搜索,我试了一下没搜到,自己可以试一试
      3. 临时获取方法
                * 因为用ce调试,退出不会影响到程序运行,所以可以临时获取
      4. 欢迎补充。。。。。
## 为啥要获取`sessionkey`
* `sessionkey`故名思意,会话key,如果了解`某q协议`的朋友应该知道,前面那么复杂的登录协议,就是为了最后一步`sessionkey`有了它就可以获取`发送`、`聊天`了,如果为了省事情,就像网络爬虫一样,往往最复杂的就是最开始的`登录`、`验证`但是只要我们得到了`cookie`,那这些都是子虚乌有的,所以大家不仅要保护好自己的密码,更要保护好自己的`cookie`和`sessionkey`。


## 临时获取sessionkey
1.打开`ce`
2.赋载`某q`到`ce`
3.打开内存

4.找到函数


5.双击跳到指定函数入口,`F5`下个断点
6.开启`Full stack`

7.按照之前说的,找到第三个参数

8.一定要断下才可以得到,因为堆栈是临时存放数据的,并且存储`sessionkey`的内存地址也是动态的,所以一定要断下再查看

涛之雨 发表于 2020-4-25 08:17

话说貌似安卓更方便
没试过,不过可以打log出来吧
或者hook出来也成
ce。。。奇怪的姿势增加了{:301_995:}
不是姿势是知识

游泳的猪 发表于 2020-4-24 23:42

涨知识了!!!{:301_999:}

lyghost 发表于 2020-4-25 07:41

当年这个问题难倒了不少人啊;www

俯尘埃 发表于 2020-4-25 11:30

谢谢楼主

Light紫星 发表于 2020-4-25 13:13

大佬大佬,学习了

pojie888 发表于 2020-4-26 00:22

谢谢大佬,有时间研究一下

huangsijun17 发表于 2020-4-26 14:53

我只想知道,我有哪些sessionkey,能不能把那些全部作废掉。

dj215 发表于 2020-4-26 21:07

一点点都不懂这个是做什么用的,哈哈~

vrvree 发表于 2020-5-9 09:57



一点点都不懂这个是做什么用的,哈哈~
页: [1] 2
查看完整版本: 某Q sessionkey查找完整版