千牛整体框架是内嵌web浏览器,通过CEF接口间接调用js代码,所以关键在于定位2个call
- 调用ExecuteJavascript的call
- 执行完js代码后的响应call
关于1,思路大概是:定位到消息查询的可疑call之后,重点关注call 寄存器之类的虚函数调用,然后F7一直跟进去,在底层模块中可以看到对ExecuteJavascript的调用
关于2,主要思考的是结果保存在那里?常见的结果保存一般有3种:
- 存储在引用类型的形参
- 函数返回值:
-
call 0x12345678 mov dword ptr ss: [ebp-0x1234], eax
- 回调函数
目前已实现的功能有:收发消息、消息查询、获取登录账号信息、聊天对象切换通知、登录状态检测