在经历股市多年的大起大落、大赚大赔之后,痛定思痛,深切感到在金融市场拼搏,必须建立健全交易纪律守则,严格执行。
这套完整的纪律守则,就是“交易系统”。在许多方面,它与一般的专家系统相近似。
专家系统的最佳开发工具,是Erlang下的Eresye。它的缺点是,其他语言如C、Python对它的调用不方便。
如果主程序是C或Python,一般需将Eresye做成服务器,通过sockets通讯调用,比较麻烦。
在简单实用方面,Prolog是第二佳的开发工具。如果只采用其推理机功能,Visual Prolog 也是不错的选择。
我用的是Visual Prolog 5.2。
这是个免费软件,其编译的EXE、DLL文件运行之始,会弹出一个窗口:
为了不显示这个窗口,我先后试过几次,在5.0、5.1和旧版5.2下均获成功。
第一次的破解,是在Win98下用动态跟踪工具(忘记了名字),无休无眠地追了22个小时,找到关键分支点,绕过了窗口弹出指令。
上一次的破解,是在Win2000下用个静态分析工具(好像叫exescope,记不清了),看到exe文件中有两个函数调用,一个好像是openwindow,另一个好像是closewindow,以及相对应的机器码指令。然后,在ultraEdit里,用CloseWindow的机器码,覆盖OpenWindow的机器码。于是,任务完成。
这都多年前的事情,具体细节已记不清。
第一次的动态跟踪,事后曾写过篇幅庞大、十分详细的操作过程记录。但不知何故后来丢失,可惜。
以后的破解过程,都没做记录。这次破解,只好重新开始,摸索前行。
一、准备工具
用google、baidu等,以“静态查看EXE"等句子搜索,找到几个软件,试过后,确定用PEbrowse。
又搜到机器码编辑器010Editor,工具备齐了(UltraEdit 为了收费会自动罢工,等等,很讨厌,好多年不再用它)。
二、准备目标文件
用Visual Prolog 自动生成并编译一个空白项目,比如 learn01.exe。
三、使用PEbrowse
1、打开目标文件learn01.exe
2、展开左栏的Sections
3、双击其中的对象.text。右栏出现反汇编的代码
4、Ctrl-F键,搜索”messagebox“,找到:
0x44329F: FF1560044900 CALL DWORD PTR [USER32.DLL!MessageBoxA]; (0x490460)
5、记住机器码:FF1560044900
6、Ctrl-F键,搜索”destroywindow“,找到:
0x431D7E: FF153C034900 CALL DWORD PTR [USER32.DLL!DestroyWindow]; (0x49033C)
7、记住机器码:FF153C034900
8、关闭 PEbrowse。
四、使用 010Editor
1、打开目标文件learn01.exe
2、Ctrl-F键,打开Find窗口
在 Type 下拉框选择 Hex Bytes (H)
在 Value 文本框填入 FF1560044900
3、按钮 Find All,会在编辑器中找到第一处的 FF1560044900
4、按键 F3 共计3次,定位于第4处 FF1560044900
5、把 FF1560044900 改为 FF153C034900
6、保存文件learn01.exe
7、运行learn01.exe,提示窗口Attention不再弹出。
注意!确定第4处机器码,是逐次实验的结果。即:第1处 FF1560044900 改为 FF153C034900后,存盘,并运行。未达标,则恢复第1处代码,再修改第2处代码,存盘运行,……直至修改第4处代码。