electron node-ffi 注入DLL

本文介绍了如何在 Electron 应用中通过 node-ffi 库进行DLL注入。首先,安装必要的构建工具windows-build-tools和node-gyp。然后,初始化项目,并指定合适的 Electron 版本。接着,编译 ffi 和 ref 库,针对32位系统。最后,展示了DLL注入的具体代码实现。
摘要由CSDN通过智能技术生成

瞎折腾的

当写笔记

装上windows-build-tools 和 node-gyp

管理员运行powershell

yarn config set registry https://registry.npm.taobao.org/
yarn config set ELECTRON_MIRROR https://npm.taobao.org/mirrors/electron/
yarn global add windows-build-tools
yarn global add node-gyp

初始化项目

使用ffi的分支,不然node12过不了编译 electron 版本在这里找
https://npm.taobao.org/mirrors/atom-shell/

yarn init
yarn add electron@5.0.9 --dev
yarn add github:lxe/node-ffi#node-12 --dev
yarn add github:lxe/ref#node-12 --dev
yarn add github:lxe/ref-array#node-12 --dev

编译ffi和ref

–target=5.0.9 是electron的版本
–arch=ia32 32位node
ffi 和 ref 都CD 进去编译一下

cd .\node_modules\ffi\
node-gyp rebuild --runtime=electron  --target=5.0.9 --arch=ia32 --dist-url=https://npm.taobao.org/mirrors/atom-shell/
cd ..\ref\
node-gyp rebuild --runtime=electron  --target=5.0.9 --arch=ia32 --dist-url=https://npm.taobao.org/mirrors/atom-shell/

DLL注入代码

/**
 *  node -v v12.16.1
 * "electron": "5.0.9",
 * "ffi": "github:lxe/node-ffi#node-12",
 * "ref": "github:lxe/ref#node-12",
 * "ref-array": "github:lxe/ref-array#node-12"
 * 
 */

const ffi = require('ffi')
const ref = require('ref');
const refArray = require('ref-array');
const refStruct = require('ref-struct');

const customTypes = {
   
    // 进程快照数据类型
    PROCESSENTRY32: refStruct({
   
        dwSize: 'int',
        cntUsage: 'int',
        th32ProcessID: 'int',
        th32DefaultHeapID: 'int',
        th32ModuleID: 'int',
        cntThreads: 'int',
        th32ParentProcessID: 'int',
        pcPriClassBase: 'int',
        dwFlags: 'int',
        szExeFile: refArray(ref.types.char, 260),
    }),
    // 模块快照数据类型
    MODULEENTRY32: refStruct({
   
        dwSize: 'int',
        th32ModuleID: 'int',
        th32ProcessID: 'int',
        GlblcntUsage: 'int',
        ProccntUsage: 'int',
        modBaseAddr: 'int',
        modBaseSize: 'int',
        hModule: 'int',
        szModule: refArray(ref.types.char, 256),
        szExePath: refArray(ref.types.char, 256),
    }),
    // 没用上
    lpctstr: {
   
        name: 'lpctstr',
        indirection: 1,
        size: ref.sizeof.pointer,
        get: function (buffer, offset
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值