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

[其他] 第三方命令CAPI:批处理调用API

CAPI
By Defanive
1.0(VC++) 5.51KB
批处理调用API

比APICall功能要强很多,APICall可以退役了
CAPI的特性在于可以直接访问、操作批处理中的变量

提供3个基本方法:Put、Get、Call

参数的标识方式:
[标识][数据]
总共有如下的标识及其意义:
  1. .  字节
  2. ;  短整型
  3. #  长整型
  4. $  字符串
  5. *  变量
  6. ~  已加密的变量
  7. @  移动指针
复制代码
Put:
用于批处理变量中写入数据,基本语法为
  1. CAPI Put [~][变量名] [标识][数据] [标识][数据]...
复制代码
其中变量名可加~标识,表示这是个被加密的变量
Put方法只能覆盖已有的数据,而不能增加
因此在写入前需保证有足够的空间
可用的标识为 . ; # $ * ~ @

下面的例子具体解释Put方法的用法
  1. rem 将var变量的第一个字节覆盖为65
  2. CAPI Put var .65
  3. rem 将var变量的前两个字节覆盖为25105
  4. CAPI Put var ;25105
  5. rem 将var变量的前四个字节覆盖为4325441
  6. CAPI Put var #4325441
  7. rem 将var变量的值覆盖为ab
  8. CAPI Put var $ab
  9. rem 将var变量的值覆盖为var2变量的值
  10. CAPI Put var *var2
  11. rem 将var变量的值覆盖为被加密变量var2的原值
  12. CAPI Put var ~var2
  13. rem 可以同时执行多个参数,如将var变量的前两个字节覆盖为25105,再将第3个字节覆盖为65
  14. CAPI Put var ;25105 .65
  15. rem 将var变量的第一个字节覆盖为65,指针后移1位,将第3个字节覆盖为66
  16. CAPI Put var .65 @1 .66
复制代码
Put方法可以让批处理直接以字节等格式操作变量内容
可以直接产生特殊字符

Get:
将变量中的数据以一定格式输出,基本格式为
  1. CAPI Get [~][变量名] [标识][长度] [标识][长度]...
复制代码
如下例
  1. rem 将var变量中的前两个字节输出
  2. CAPI Get var .2
复制代码
类似用法参见Put方法
可用的标识为 . ; # $ @

Call:
调用API,基本格式为
  1. CAPI Call [Dll名] [API名] [标识][数据] [标识][数据]...
复制代码
errorlevel为API的执行返回值
可用的标识为 # $ * ~

注意,CAPI是以Unicode方式调用和储存值的(为了兼容cmd中的变量储存方式)
因此API应选用Unicode版
使用~进行加密变量内容是为了防止API执行结果中含有\0(这样会中断变量内存块,使得CMD出错)

2L展示几个简单的API应用

http://bcn.bathome.net/s/tool/index.html?key=CAPI
3

评分人数

    • sl543001: 加油技术 + 1
    • raymai97: 强,才5.51kb就能实现这些功能,加油!技术 + 1
    • batman: 神品出世了,批的春天来了PB + 30 技术 + 1
第三方命令行工具编程
Http://Hi.Baidu.Com/Console_App

提示应用程序错误,按确定退出
https://pc.woozooo.com/mydisk.php

TOP

要是大神能把C++的源代码分享一下 成为开源项目就好了。。。
期待 啊~

TOP

新手不知道这个有什么用……但是看上去很强大,还需要好好学习,不知道开发者有没有官网?

TOP

回复 18# xie
新方法做的被杀率比较低,貌似就只有几款国外的杀出来。。
看使用者意愿,自己权衡使用
第三方命令行工具编程
Http://Hi.Baidu.Com/Console_App

TOP

回复 17# defanive


   注入容易被报毒...

TOP

回复 16# xie
CAPI我做了一个dll注入的版本,成品做好很久了,但是一直都没时间发上来
由于是在cmd进程里面执行的代码,所以可以做GDI绘图等等。。
第三方命令行工具编程
Http://Hi.Baidu.Com/Console_App

TOP

TOP

一个神一样的作品啊。

TOP

好东西,一定得顶,不顶可惜啊
你好吗

TOP

回复 12# netbenton
应该可行,但是速度怎么样就不知道了。。感觉set /p不会快,执行大的循环的话效率自然就下去了。。
第三方命令行工具编程
Http://Hi.Baidu.Com/Console_App

TOP

我有方案了,3方起动后,隐藏运行,监听cmd的一个变量,有变化则读取命令去执行。把结果以消息方式返回数据。CMD方用set/p back=,接收反回数据。这样就不会报毒了

TOP

win7 X64下不能运行:“应用程序无法正常启动(0xc0000018)。”

TOP

回复 9# caruko
这个我已经做到了,但是注入过程非常容易被报毒
第三方命令行工具编程
Http://Hi.Baidu.Com/Console_App

TOP

我有考虑过,注入一个DLL到CMD进程中,然后监视进程中的某个特定变量的值来决定执行什么命令。
这样跟变量的结合就更紧密,不知道有没可行性。

比如 注入一个线程,循环读取 %usercmdline% 变量,如果 %usercmdline% 变量的值等于"play d"\a.mp3"就播放MP3,等于"stop"就停止,等于"exit"就退出线程。

TOP

返回列表