[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[2017.2.11更新]CAPIx 2 让批处理调用API

本帖最后由 bailong360 于 2017-2-19 22:38 编辑

致敬D大和他的CAPI(注入版)


简介:
CAPI是bathome的defanvie开发的一款第三方,堪称批处理第三方的登峰造极之作
CAPI提供的最大功能就是一个:调用系统API 除此之外,CAPI并没有任何功能
而且其注入式的特点,一方面使得其调用速度得到了飞一般的提升,另一方面也使得其能够保存进程数据
这两个功能,赋予了CAPI无穷的力量
何为系统API?简而言之,是MS为了便利开发者,而封装在dll中的一系列函数
通过这些函数,开发者可以不需要理解系统的内部原理就方便地开发出产品
比如著名的image(第一代),就是调用了gdi32中的API从而实现了绘图功能
而利用CAPI,我们可以轻松地实现这个功能,而且由于CAPI是注入式的,我们可以甚至可以实现双缓冲
即先把图片画到内存中的画布上,等待所有的图片都绘制完成,再将整块画布复制到CMD中
这样做的最大好处就是可以避免闪烁,实现流畅地绘制

然而CAPI有几个问题,导致了它虽然强大,但却很少被使用
1.它采取远程线程注入的方法将dll注入到cmd中,这是病毒的常用伎俩,因此误杀率极高
2.开发者defanvie已经很久没有现身,而且CAPI没有开源.已经无法在最新的系统上运行了

CAPIx就是为了解决这两个问题而开发的
首先CAPIx摒弃了远程线程注入的方式,而是使用一个修改过的提取自win 2003的cmd
这个cmd在启动时会自动加载CAPIx.dll,免去了注入的危险,还提高了兼容性——只要能运行这个cmd.exe,就能使用CAPIx
并且CAPIx在API调用的功能上做出了进一步的加强,主要有下

1.在API Call之外又提供了一个新命令API Exec,用来调用遵循__cdecl约定的函数
简而言之,可以调用其他dll中的函数,比如msvcrt中的大部分函数,像printf, scanf之类的
又比如调用regex2.dll实现正则匹配,还可以自己写dll供Exec调用,比如写一个浮点运算的dll代替set/a之类的
2.增加了浮点型和双浮点型两种类型, 传参更加方便
3.可以指定API返回值类型,比如调用sqrt,就需要指定返回值类型为双浮点型
4.标识符'*'不是单纯地取内容,而是取地址,可以将修改同步到变量中,而且提供了指针类型.
也就是说可以使用set CAPI=API Exec scanf "#%d %d" *;_1 *;_2这样的语句了

CAPIx潜力无限!

下载地址: https://github.com/YinTianliang/CAPIx/tree/master/bin
请务必下载CAPIx.dll和cmd.exe,  CAPIx_Help.html为详细帮助,建议下载
使用CAPIx进行的程序只能在上面这个cmd.exe中正常运行
所以建议使用以下JS启动游戏(该cmd.exe需要与js, capix.dll放在同一目录下)
  1. new ActiveXObject('WScript.Shell').Run('"' + WScript.ScriptFullName.replace(/[^\\]*$/,'') + 'cmd.exe" /c 游戏主程序.bat')
复制代码
或者在批处理开头加上这两行
  1. %1@start "" "%~dp0cmd.exe" "/c %~fs0 :"
  2. %1@exit
复制代码
PS
这是6个月前的作品...最近突然灵光一闪修正了最后一个bug,然后就发布了
再拖估计就要等到6.8号以后了....


关于回调函数的一点想法:
由于加入了Exec命令,CAPIx现在可以调用libtcc.dll了.而libtcc提供了API可以获取编译后的函数在内存中的地址
或许可以利用libtcc来实现回调函数



GC[和谐]D.dll 1.1
封装了一些函数, 供CAPIx调用 https://github.com/YinTianliang/%47%43%44/tree/master/bin
比如绘图 鼠标什么的
比如
  1. set CAPI=API Exec GC[和谐]D  NewMemDC *#MemDC
  2. set CAPI=API Exec GC[和谐]D LoadImage *#Img #test.jpg ;0 ;0
  3. set CAPI=API Exec GC[和谐]D DrawImage #%MemDC% #%Img% ;0 ;0 ;0 ;0
  4. set CAPI=API Exec GC[和谐]D ApplyDraw #%MemDC%
复制代码
3

评分人数

你们这论坛真是蛋疼啊。简称都过滤。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

很强大, 感谢分享~~~~

TOP

返回列表