标题: [问题求助] 在Powershell中如何调用AHK代码的函数 [打印本页]
作者: 小白龙 时间: 2024-2-13 11:00 标题: 在Powershell中如何调用AHK代码的函数
我在下面的贴子中介绍过一个在powershell中执行AHK代码的方法
http://www.bathome.net/thread-68249-1-1.html
但现在我想在powershell使用下面AHK函数CryptHexStringToBinary,
例如想把 48B80000000000000000FFD0C3 这段16进制字符串转为二进制数据, 不知道怎么用了, 请求路过大佬帮忙, 谢谢
在AHK中使用CryptHexStringToBinary函数的方法如下- CryptHexStringToBinary(hexString, &binary){
- DllCall("crypt32\CryptStringToBinaryW", "str", hexString, "uint", len := StrLen(hexString), "uint", 4, "ptr", 0, "uint*", &bytes := 0, "ptr", 0, "ptr", 0)
- return DllCall("crypt32\CryptStringToBinaryW", "str", hexString, "uint", len, "uint", 4, "ptr", binary := binary ?? Buffer(bytes), "uint*", bytes, "ptr", 0, "ptr", 0)
- }
- CryptHexStringToBinary("48B80000000000000000FFD0C3", &hookBuf)
复制代码
作者: Five66 时间: 2024-2-13 23:26
花里胡哨的,直接用ps实现不就行了- [regex]::Matches("48B80000000000000000FFD0C3",'..') |%{[byte]"0x$($_.value)"}
复制代码
作者: 小白龙 时间: 2024-2-14 07:27
回复 2# Five66
多谢大佬,
ahk调用系统api的代码有些时候比在powrshell中实现要简单许多, 更主要是有现成的轮子, 就不用转成powershell了,
感觉我的问题, 肯定有更好的解决方法
作者: buyiyang 时间: 2024-2-14 20:20
你贴的帖子不是实现调用AHK函数了吗?
不过的你写的CryptHexStringToBinary函数应该要返回binary开始,bytes长度的二进制。
作者: newswan 时间: 2024-2-14 21:24
ai 给的方法- "48B80000000000000000FFD0C3".ToCharArray() | ForEach-Object { [Convert]::ToString( [Convert]::ToInt32($_, 16) , 2 ).padleft(4,'0') }
复制代码
作者: Five66 时间: 2024-2-15 20:58
回复 3# 小白龙
额..,ahk调用系统api的代码,然后ps调ahk,这都两层调用了,为了使用轮子,都差不多得造个比轮子还复杂的出来,甚至还不如直接ps调api
非要ps调ahk,将ahk那个函数签名的里的&去掉,然后传个stringbulider过去(ahk那个dll支持的话),类似
$hookBuf=[text.stringbuilder]::new(512)
CryptHexStringToBinary("48B80000000000000000FFD0C3", $hookBuf)
或者修改原来的ahk函数,全程在ahk里进行(ahk那个dll支持的话),然后通过ps那个dll提供的getvar方法手动封送数据获取返回值
又或者封装原来的ahk函数(ahk那个dll支持的话)
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |