能力值:
( LV2,RANK:10 )
|
-
-
2 楼
目标软件:请到通达信公司网站直接下载.
安装好软件后,请设好自选品种.
设置自选品种的目的在于在内存中定位行情数据
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
安装好本软件后,启动本软件,点插入调试.推出进程对话框.选择通信达进程
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
进入调试画面后,通过语言切换按钮切到进程分析脚本(看附图)
窗口右侧打印按钮下面的上下按钮用于脚本级别切换
左右按钮用于同级别脚本切换.
调试画面上,你看到的第一个脚本是顶级脚本
他通过
var m_path=m_exe_path;
Createsubobj=m_path+"autop\excode0000.jmp";
Createsubobj=m_path+"autop\excode0001.jmp";
创建了两个下级脚本
其中excode0001.jmp用于分析进程模块信息和窗口信息
excode0000.jmp脚本,我们用来做一些特定的分析
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
一般来讲,我们只需要知道进程的模块信息就可以进行分析
我们点模块按钮,切换到模块信息显示画面(假如excode0001.jmp没执行模块信息分析,你也可以点击模块按钮的g按钮来重新获得)
通达信的主模块大概范围在00400000--00f00000
这样我们在excode0000.jmp中作股票数据查询
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
在excode0000.jmp中
var m_smem_dir=Win_SearchProcessMemStringData(0x008668d5,0xF00000,"600100");//搜索进程数据字串*忽略
我们查询自选品种的"600100"
注意了,在修改了脚本后,一定要点S上传按钮,把修改后的脚本上传,因为脚本画面在当前画面,因而脚本处于单步状态(在起始位置),所以你必须点S单步或S执行按钮来执行你的分析脚本
需要注意的是,在通达信内部有好几处有"600100",所以你要不断的修改搜索起始位置,通过观察对象内存数据来确定是不是你要定位的位置.
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
上图我们几次搜索后定位到008668d5位置.
点击"数据"按钮,切换到内存数据画面,输入008668d5,然后鼠标双击008668d5,
这是008668d5地址会进入地址显示框中,点击"数据"按钮前面的D按钮,就可以看到该处的内存数据."数据"按钮前面的D按钮,每点一次,显示向下翻页一次,"数据"按钮前面的U按钮的功能是向上翻页
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
大家可以看到,该处正好是行情数据位置,图上选中的四个字节,在下面的数据解析窗口显示是浮点数27.7000
这正好是600100的开盘价.最新价27.79在008668f0位置
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
你仔细观察这段数据,正好是所有自选品种的行情数据,以行情代码为前导.
到了这步基本上,我们可以通过外挂方式来实现行情数据的获得.
但是,这里有个细节就是,行情数据位置是不是固定的,假如不是固定的,我们就要定位数据地址
现在我们通过内存断点来做这项工作.
我们在内存数据画面输入最新价27.79的位置008668f0,鼠标双击地址,然后点击上部的内存断点按钮
画面出现提示
设置内存断点:008668F0
内存断点: 008668F0
内存访问违例 EIP:00504c09
00000002 80000001----00000000----0086655C
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
点击违例地址,00504C09,然后点击DASM按钮前面的D按钮进行反汇编
(连续点击DASM按钮前面的D按钮,会自动向下反汇编,连续点击DASM按钮前面的D按钮是向上反汇编)
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
00504C09: A1 5C 65 86 00 mov eax,[0x86655c]
00504C0E: 8B AC 24 98 30 00 00 mov ebp,[esp+0x3098]
00504C15: 83 F8 02 cmp eax,0x2
00504C18: 0F 8D 0A 04 00 00 jnl 0x505028
00504C1E: 3B 35 34 6D 84 00 cmp esi,[0x846d34]
看到这段代码,我们的分析就没必要再进行下去.
因为地址已经出现,我们只要在专门的外挂程序中,在该段代码位置做代码插入.
每当通达信执行到该段代码,就运行一下插入代码,你就可以直接将行情数据取出
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
大家明白了吗?有些东东,其实很简单
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
大家晚安.见笑
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
沙发,谢谢分享,看看高手作品!
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
佩服佩服,感谢楼主分享!
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
佩服佩服,感谢楼主分享! 有没有例子啊.
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
能不能拿到所有股票的数据呢,貌似tdx是点播的,看什么股票就申请传什么数据,只拿到列表数据用处不是很大,不过这个思路还是值得学习
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
楼主我对你的调试工具很感兴趣呀...
|
|
|