node-asm
v1.0.7
Published
Cross-platform external access, execution, and modification of process, module, memory, and procedure for node.js
Downloads
2
Maintainers
Readme
Node-ASM
Node-asm is cross-platform process memory access for NodeJS with various features for easy access, execution, and modification of process, modules, memory and procedures.
🕹 Install
$ yarn add node-asm
$ npm install node-asm
Warning
The Linux version is still in development and not stable. (not recommended.)
🔥 Features
- Cross-platform, Typescript and Promise based, zero dependencies.
- Load and explore all open processes and process modules.
- External library injection and ejection to process.
- Read and write process memory with defined types.
- Pointer address calculation, array of bytes pattern scanning, memory allocation.
- Execute procedure with shellcode generated according to arguments. ✨
- Create module procedure interface, funtionalize procedure.
- Windows PE format header implementations.
📌 About Node Addon
Node-asm internally uses C++ native modules using the Node Addon API and Node-gyp, but the deployed package includes binary files compiled for each platform and architecture, and uses the binary file of the appropriate platform and architecture depending on the execution environment of the NodeJS process.
⭐ So you can use node-asm normally without installing Node Addon API and Node-gyp. but if you want to modify or rebuild node-asm package, the above modules are required.
🔐 Windows PE Headers
const dos: image_dos_header = new image_dos_header(process, module.address);
const nt: image_nt_header32 | image_nt_header64 = await image_nt_headers(process, module.address + await dos.e_lfanew);
const machine = await nt.FileHeader.Machine;
console.log(machine === 0x8664 ? 'x64' : 'x86');
Node-asm implements the Windows PE headers to execute tasks such as load_procedures and load_sections. Also users can use exported implementations in node-asm/header
path.
Headers with architecture-dependent structures such as image_nt_headers
and image_optional_headers
support functions that return appropriate structures depending on the target process.
See more information about headers here.
📋 License
Distributed under the MIT License. See LICENSE
for more information.