- 帖子
- 957
- 积分
- 4938
- 技术
- 72
- 捐助
- 0
- 注册时间
- 2008-10-31
|
2楼
发表于 2012-9-30 09:40
| 只看该作者
本帖最后由 defanive 于 2012-11-5 04:21 编辑
开发手记
在非注入版CAPI的开发完成后,很多人提到了非注入版的缺陷
由于调用API之后进程被销毁,很多在进程内保存信息的API都无法正常使用
而且由于频繁打开新进程,调用API的效率降低了很多
于是注入版CAPI就在开发当中了
经过几个星期的开发,大约在6月底完成了CAPI 1.0版的开发
后续进行了几次修改,加入了COM调用功能,版本号改为1.1
这就意味着,支持COM功能的CAPI可以调用DirectX8了,也就是可以用批处理开发DX游戏等
还未进行过DX的调用测试,但是理论上应该是可以的
然后就这样搁置了几个月在我电脑里面
现在快10月份了,终于决定,不管BUG有多少,先发布出来再说
由于是注入版的,所以本身只能适用于32位的操作系统
因为dll是32位代码,所以无法注入到64位的cmd.exe进程中
但是,批处理可以判断自己是否在64位系统中,然后启动32位的cmd.exe,这样CAPI也可以运行在64位的系统中
没有测试环境,无法确定是否运行正常
免杀问题实在没办法怎么做,cmd.exe属于非常敏感的系统进程,基本上注入都很危险
尽量做到最好了,基本不怎么杀(360就算了,跟360玩免杀毫无意义)
因此想使用这个的开发者们,自己斟酌使用,有被杀的风险
用CAPI进行开发,个人感觉更考验的是对API的理解
CAPI除了API调用和COM调用和一些简单功能以外,本身并不带有任何其他功能
因此如果对API使用不熟,用CAPI也没办法做出特别超群的东西
暂时是这样,先发布1.1 Build 1D861
BUG反馈,建议等会帮助CAPI前进
————————————————————————————————————————
关于API可调用的回调函数,例如EnumWindows的回调,窗口消息的回调函数,有一个想法
最近学业甚忙,等到有时间了就开始做
简单的来说就是CAPI虚拟一个回调函数,然后虚拟的回调函数调用批处理
如果做成了的话,批处理就可以彻底的开发窗口程序了
也可以使用SetWindowsHookEx里面的Lower-Level Hooks,做键盘钩子和鼠标钩子
总之一切需要用到回调函数的都可以使用了
原理可用性大致确定,稳定性尚不清楚,有待测试
如果做好了就是一大进步,做不好就只能想其他办法了
————————————————————————————————————————
杯具试了一下结果不行,暂时没什么可以做的了
————————————————————————————————————————
更新1.1, Build 1D8B0, x32
对Inline API Hook进行了改进,改用新的方法提高效率
现在5000条set命令的执行耗时和无CAPI注入的耗时相差在1毫秒以内
基本上已经不影响set命令的执行效率了
另外一个重要的BUG修正,Mem Put命令的@标识符,现在可以正常的移动指针了
API Call增加了.标识符,可以传字节参数(目的是兼容cdecl函数)
CAPI.dll大小缩小了0.50KB
————————————————————————————————————————
更新1.2, Build 1D910, x32
把CAPI的调用方式分成两类,SetCall和GetCall
SetCall为旧版的"set CAPI=命令"的调用方式
GetCall为"%CAPI 命令%"的调用方式
对API调用时的dll加载做了优化,dll加载后不进行卸载,加速下一次使用dll的速度 |
|