Ollyscript是本人认为非常强大的类汇编插件, 基本能满足我的需求, 功能及其强大. 但是在编写某些小脚本时, 仍感觉有些力不从心, 以下是本人长期使用过程中, 认为Ollyscript开发者可以加强或改善的几个地方.
1. 希望能实现浮点数的转换
例如本人希望能添加命令ATOF和FTOA
通过ALLOC申请内存并移入少量汇编码二进制代码, 然后进行更改EIP运行的方式可以实现FTOA, 即浮点数转ASCII, 但毕竟不是Ollyscript原生的, 还要使用到BP, EXEC/ENDE组合运行, 效率明显下降.
如果Ollyscript原生带有FTOA函数, 效率肯定会提高很多.
打个比方, 知道00401000h处浮点存储64位二进制DATA是
00401000: F4 D6 43 54 FB 21 09 40
参照ITOA的语法
ITOA int, [base=16.] // 整数转换为 ASCII 字串
应该可以添加一个类似的FTOA命令
FTOA float,[base=64.]
这样, 想要实现00401000h处浮点数转ASCII, 可以编写以下命令
FTOA [00401000],64.
运行命令后的结果结果放在 $RESULT 中, $RESULT = 3.14159265358 , 那多方便, 可惜Ollyscript没有FTOA这原生命令.
同样的, 要实现ATOF, 即ASCII转浮点数, 想用纯Ollyscript编写, 几乎难以实现, 比FTOA要复杂得多得多, 例如要转换ASCII数3.14159265358(或者ASCII数-1.23456e-7)为浮点进行存储, 难!
没一点的汇编能力几乎无从下手.
要是能有原生的ATOF命令, 设计形如:
ATOF str, dest, [base=32.] // ASCII 字串转换为单精度浮点型
ATOF str, dest, [base=64.] // ASCII 字串转换为双精度浮点型
ATOF str, dest, [base=80.] // ASCII 字串转换为长双精度浮点型
那岂不是爽哉!
例如往00401000写入单/双浮点数-1.23456e-7
ATOF "-1.23456e-7", [00401000], 32.
ATOF "-1.23456e-7", [00401000], 64.
2. 希望Ollyscript的ASK命令窗口应该提供一些额外的方便选项
例如"浏览"打开文件路径, 或者支持拖放文件到ASK命令窗口文本编辑框自动填写上文件路径. 这样就相当于在Ollydbg上做了一个功能强大的通用文件处理器. 例如编写以下脚本:
REASK:
ASK "本程序用于处理打开的文件. 请输入被处理文件的完整路径:"
CMP $RESULT,0
JE REASK
运行后原生的Ollyscript弹窗窗口如下:
如果能实现为以下功能, 岂不爽哉!
如此一来, 想打开例如C:\测试文件\新建文件夹\test.txt, 就不用先在资源管理器复制"C:\测试文件\新建文件夹", 然后粘贴到Ollyscript弹窗窗口中, 再输入"\", 然后复制"test.txt"的文件名粘贴到"C:\测试文件\新建文件夹\"的后面!
3. 建议Ollyscript添加能实现屏蔽屏幕输出的功能(也就是希望脚本运行时不显示运行到那一行命令及返回结果)
为和有这想法呢? 因为脚本运行过程耗费了大量的CPU在回显运行到哪一行及运行后的结果, 并将结果记录到行队列中, 因此导致脚本运行效率非常低下.
楼主知道有一个对命令DBH和DBS, 用于脚本运行时隐藏/显示Ollydbg, 但楼主用起来发现这两个命令很不听使唤(DBH无隐藏效果).
楼主在此建议开发者对Ollyscript该命令进行修正, 如果无法实现DBH命令屏蔽屏显, 建议在插件扩展菜单进行实现, 这样的Ollyscript的脚本运行效率将提高近好几倍!
楼主不才, 也只能提出建议, 望Ollyscript的开发者们能实现此类功能, 造福世界人民!
在此先谢过Ollyscript的原始开发者和后续开发者, 感谢你们的辛勤劳动, 制作出这么好的插件, 使我们用起来得心应手!
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)