龙卷风接口 - 逆向解出请求历史数据API

先贴两张界面截图:

      图1 龙卷风设置界面


      图2 龙卷风请求数据界面


CnStockDrv.dll 导出函数:



其中,请求数据的有
QueryKData
GetTradeData
QueryTradeData
GetMinData
QueryMinData
QueryManyReportData
QueryReportData

GetMinData和GetKData函数是没有代码的空函数,

QueryXXXX函数实际上通过lParam参数,发送MSGID为0x07E8的消息到龙卷风的设置窗口。然而我调用了这个函数也没个卵用。 



除此之外:
GetTotalNumber
ReInitStockInfo
SCAskData
SCStockInit
SetNewsPath
都是保留兼容性的空函数,没有任何实现代码


------------   以上的文字和图 并没有卵用   -------------

我跟踪了“补充数据”按钮的事件_TDfm_btnMendStartClick,请求历史数据其实是发了个消息给某个线程,而这个线程正是CnStockDrv中的的网络通信线程TDownloadTask。这样解决方法就用了,就是拼凑0x0856消息的参数,发消息到TDownloadTask线程,需要解决两个问题:
     1.参数格式;
     2.获取线程ID  



a> 获取参数格式,OllyDBG中在上图发消息前设置,查看esi指向的内存内容即可获知

参数esi 寄存器指向 一个字符串(pascal 字符串),字符串格式如下:

个股F10     2|1|sh600688

当日分时    3|1|sh600688

日线历史    4|1|sh600688    4|2|sh600688  4|3|sh600688

历史5分钟   5|1|sh600688    5|2|sh600688  5|3|sh600688

分笔成交    6|3|sh600688

除权数据    7|1|sh600688

财务数据    8|1|sh600688

信息地雷    9|1|sh600688 

b> 获取线程ID 比较麻烦,不过我们知道线程处理函数 sub_4D5C60, 我们可以用MS 研究院的Detours工具劫持修改函数前几个指令, 跳转到我们自己的函数,然后调用一下GetCurrentThreadId获取保存该线程ID。


猜你喜欢

转载自blog.csdn.net/wadahana/article/details/49780339