Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
You are currently viewing the Chinese version of the introduction. You can click 【README】 to view the English version of this README.
我们提供了多份编程语言帮助文档 可供了解api的调用,但是他可能更新时间不及时,因为api非常多,需要编写文档是个不小的工程,hmc使用的是 TypeScript 编写的 并且他预带了一份类型声明 可以让您在主流的 ide编辑器 中显示类型 以及用法
代码参考性 : CPP 代码已经分离为独立 模块详见 hmc-module
hmc-autoit 是hmc的子集 他包含了一些列调用 autoitX api的函数,并且和hmc的优点一样,不需要再次编译和ffi魔法
进程控制 :kill / 信息 / 句柄 / 窗口 / 变化
网 络 :端口 / 网卡 / 局域网 / IP
文件系统 :软链接 / 硬链接 / USB
剪 贴 板 :文件列表 / 读写 / 文本 / 变化
自 动 化: :键盘 / 鼠标 / 执行 / 读取 / autoit3
注 册 表 :读 / 写
Shell :回收站 / Message / 快捷方式 / 执行软件 / 选取文件 / 保存文件
互斥体 : 创建 / 销毁 (防止进程重复启动)
托 盘 :创建 / 枚举 / 销毁
npm i hmc-win32
let HMC = require("hmc-win32");
console.log("App:Admin=>",HMC.isAdmin())
//App:Admin=> true
console.log("SystemIdleTime=>",HMC.getSystemIdleTime())
//SystemIdleTime=> 25
console.log("escapeEnvVariable=>",HMC.escapeEnvVariable("%AppData%\hmc-win32"))
//escapeEnvVariable=> C:\Users\...\AppData\Roaming\hmc-win32
console.log("Clipboard=>",setClipboardFilePaths(["D:/1.jpg"]),HMC.getClipboardFilePaths())
//Clipboard=> true , ["D:/1.jpg"]
import HMC = require("hmc-win32");
killProcess 结束该pid进程
sleep 同步阻塞(进程)
openApp 打开程序
getProcessList 获取进程列表
getDetailsProcessList 获取详细进程列表(慢20ms)
getProcessWindow 获取进程对应的主进程/线程的窗口句柄
getProcessName 获取进程名
getProcessFilePath 获取进程可执行文件位置
getForegroundWindowProcessID 获取活动窗口的进程id
getWindowProcess 获取句柄对应的进程id
isProcess 判断进程id 是否存在
hasProcess 判断进程id 是否存在
killProcessName 结束该名称 /(正则)匹配的 进程
processWatchdog 当监察的进程结束时候执行回调
getProcessNameList 获取该名称 /正则匹配的进程列表
getDetailsProcessNameList 获取该名称 /正则匹配的进程列表 带执行文件路径 慢20ms
getModulePathList 查询进程加载的模块
getProcessThreadList 枚举进程的线程id
getProcessParentProcessID 获取进程的主进程
getSubProcessID 获取子进程id列表
enumProcessHandle 枚举进程id的句柄
enumAllProcessHandle 枚举所有进程id的句柄
findProcess 搜索进程
getProcessStartTime 获取进程启动时间 (ms)
尾部带有2的为2.0api 均支持异步(2 / 2Sync ):**
Promise
callback
Promise
findProcess2 搜索进程 异步
findProcess2Sync 搜索进程 同步
getAllProcessList2 异步
获取进程列表(枚举) 枚举是最快的也不受应用是32位系统64位导致无法枚举到 但是信息不够细
getAllProcessList2Sync 同步
获取进程列表(枚举)
getAllProcessList2Snp 异步
获取进程列表 (快照) 请注意 如果可执行文件是32位而系统是64位将获取不到64位进程的信息
getAllProcessListSnp2Sync 同步
获取进程列表 (快照)
getAllProcessListNt2 异步
获取进程列表 (内核)
getAllProcessListNt2Sync 同步
获取进程列表 (内核)
getProcessCpuUsage2 异步
获取进程占用的cpu
getProcessCpuUsage2Sync 同步
获取进程占用的cpu
getProcessNameSnp2Sync 同步
获取进程的名称(快照)
getProcessNameSnp2 异步
获取进程的命令行(快照)
getProcessNameNt2Sync 同步
获取进程的名称(内核)
getProcessNameNt2 异步
获取进程的命令行(内核)
getProcessName2Sync 同步
获取进程的名称(正常)
getProcessName2 异步
获取进程的命令行(正常)
getProcessCommand2 异步
获取指定进程的启动命令行
getProcessCommand2Sync 同步
获取指定进程的工作目录
getProcessCwd2 异步
获取指定进程的工作目录
getProcessCwd2Sync 同步
获取指定进程的启动命令行
hasRegistrKey 判断键值是否存在
getStringRegKey 获取内容(文本)
removeStringRegKey 删除数据
setRegistrKey 设置键值对
createPathRegistr 创建新的路径
enumRegistrKey 枚举键值
getRegistrBuffValue 获取内容(二进制 Buffer)
openRegKey 打开该路径并返回方法的封装
listRegistrPath 将该路径下的内容以objcet 的方式显示
removeStringRegKeyWalk 删除一个文件夹键值
removeStringRegKey 删除一个文件夹key
removeStringRegValue 删除一个值
setRegistrDword 设置一个32位数字
setRegistrQword 设置一个64位数字
getRegistrDword 获取一个32位数字
getRegistrQword 获取一个64位数字
registr 注册表处理的集合
createSymlink 创建一个软链接
createDirSymlink 创建一个文件夹软链接
createHardLink 创建一个硬链接
Environment 合集
hasKeyExists 判断变量中是否存在指定值 用户
系统
hasUseKeyExists 判断变量中是否存在指定值 用户
hasSysKeyExists 判断变量中是否存在指定值 系统
escapeEnvVariable 通过当前的变量对变量内容进行解析(不受进程变量影响)实时
removeUserVariable 删除一个用户变量 用户
removeVariable 删除一个用户变量 用户
系统
removeSystemVariable 删除一个用户变量 系统
getSystemVariable 获取一个在系统变量中的值 系统
getUserVariable 获取一个在用户变量中的值 用户
getVariableAnalysis 获取一个在用户变量中的值 用户
系统
putSystemVariable 添加一个系统变量 (请注意 win进程获取的优先级: 进程变量 -> 用户变量 -> *系统变量) path变量不受此影响(win定义)
putUserVariable 添加一个系统变量 (请注意 win进程获取的优先级: 进程变量 -> 用户变量 -> *系统变量) path变量不受此影响(win定义)
getVariableAll 获取所有的值 从环境读取 (进程环境)
getRealGlobalVariableList 获取所有的值 从注册表读取 (配置环境)
getUserKeyList 获取用户变量的键列表用户
getSystemKeyList 获取系统变量的键列表 系统
updateThis 同步系统(全局)变量到当前进程
HMC所有API采用winapi+nodeapi实现,因此无需重新编译(允许运行在node8以上环境 node6.14.2 需要自行使用esbuld编译),如果您需要对源代码进行修改请使用node-gyp rebuild
进行编译,这需要有一定的C/C++基础,编译工具使用node-gyp即可,需要使用到的工具如下:
子进程/线程 信息获取不全
无法解决 因为 子进程/线程 使用进程快照消耗和安全性都最佳
每个功能模块都会经过千次以上循环调用 无出现进程崩溃
API已经通过js严格转码 只有调用native才需要 但是由于C++和C语言都是严格类型,必须严格使用typeScript严格传递类型
虽然经过疲劳测试,但是还是有可能会有无法预期的进程奔溃,所以建议在子进程下运行
C++ 的野指针和空指针和内存溢出 引用错误 类型错误 等 对于进程都是致命的,所以在编写新功能时候需要不断地进行模拟疲劳测试
FAQs
Connect to the system api in the easiest way (win-api)
The npm package hmc-win32 receives a total of 201 weekly downloads. As such, hmc-win32 popularity was classified as not popular.
We found that hmc-win32 demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.