Skip to content

Add typing for typescript users #98

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,5 +36,9 @@
"eslint": "^8.5.0",
"eslint-config-airbnb-base": "^12.1.0",
"node-addon-api": "^3.2.1"
},
"types": "types",
"devDependencies": {
"@types/node": "^18.6.3"
}
}
79 changes: 79 additions & 0 deletions types/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
import type { Process } from "./models/Process";
import type { Module } from "./models/Module";
import type { Callback } from "./models/Callback";
import type { DataTypeBoolean, DataTypeNumber, DataTypeString, DataTypeVector3, DataTypeVector4 } from "./models/enums/DataType";
import type { Vector3, Vector4 } from './models/Vector';
import type { ProtectionType } from "./models/enums/ProtectionType";
import type { SignatureType } from "./models/enums/SignatureType";
import type { FunctionArg } from "./models/FunctionArg";
import type { ReturnTypeBoolean, ReturnTypeNumber, ReturnTypeString, ReturnTypeVoid } from "./models/enums/ReturnType";
import type { ReturnObject } from "./models/ReturnObject";
import type { TriggerType } from "./models/enums/TriggerType.d.";

declare namespace MemoryJs {

function openProcess(pid: number): Process;
function openProcess(pid: number, callback: Callback<Process>): void;

function getProcesses(): Process[];
function getProcesses(callback: Callback<Process[]>): void;

function findModule(moduleName: string, pid: number): Module;
function findModule(moduleName: string, callback: Callback<Module[]>): void;

function getModules(pid: number): Module[];
function getModules(pid: number, callbacK: Callback<Module[]>): void;

function readMemory(handle: number, address: number, dataType: DataTypeNumber): number;
function readMemory(handle: number, address: number, dataType: DataTypeString): string;
function readMemory(handle: number, address: number, dataType: DataTypeBoolean): boolean;
function readMemory(handle: number, address: number, dataType: DataTypeVector3): Vector3;
function readMemory(handle: number, address: number, dataType: DataTypeVector4): Vector4;

function readMemory(handle: number, address: number, dataType: DataTypeNumber, callback: Callback<number>): void;
function readMemory(handle: number, address: number, dataType: DataTypeString, callback: Callback<string>): void;
function readMemory(handle: number, address: number, dataType: DataTypeBoolean, callback: Callback<boolean>): void;
function readMemory(handle: number, address: number, dataType: DataTypeVector3, callback: Callback<Vector3>): void;
function readMemory(handle: number, address: number, dataType: DataTypeVector4, callback: Callback<Vector4>): void;

function readBuffer(handlle: number, address: number, size: number): Buffer;
function readBuffer(handlle: number, address: number, size: number, callback: Callback<Buffer>): void;

function writeMemory(handle: number, address: number, value: number, dataType: DataTypeNumber): void;
function writeMemory(handle: number, address: number, value: string, dataType: DataTypeString): void;
function writeMemory(handle: number, address: number, value: boolean, dataType: DataTypeBoolean): void;
function writeMemory(handle: number, address: number, value: Vector3, dataType: DataTypeVector3): void;
function writeMemory(handle: number, address: number, value: Vector4, dataType: DataTypeVector4): void;

function writeBuffer(handle: number, address: number, buffer: Buffer): void;

function getRegions(handle: number): any;
function getRegions(handle: number, callback: Callback<any>): any;

function virtualProtectEx(handle: number, address: number, size: number, protection: ProtectionType): ProtectionType;

function findPattern(handle: number, moduleName: string, signature: any, signatureType?: SignatureType, patternOffset?: number, addressOffset?: number): number;
function findPattern(handle: number, moduleName: string, signature: any, signatureType: SignatureType, patternOffset: number, addressOffset: number, callback: Callback<number>): void;


function callFunction(handle: number, args: FunctionArg[], returnType: ReturnTypeBoolean, address: number): ReturnObject<boolean>;
function callFunction(handle: number, args: FunctionArg[], returnType: ReturnTypeNumber, address: number): ReturnObject<number>;
function callFunction(handle: number, args: FunctionArg[], returnType: ReturnTypeString, address: number): ReturnObject<string>;
function callFunction(handle: number, args: FunctionArg[], returnType: ReturnTypeVoid, address: number): ReturnObject<void>;

function callFunction(handle: number, args: FunctionArg[], returnType: ReturnTypeBoolean, address: number, callback: Callback<ReturnObject<boolean>>): void;
function callFunction(handle: number, args: FunctionArg[], returnType: ReturnTypeNumber, address: number, callback: Callback<ReturnObject<number>>): void;
function callFunction(handle: number, args: FunctionArg[], returnType: ReturnTypeString, address: number, callback: Callback<ReturnObject<string>>): void;
function callFunction(handle: number, args: FunctionArg[], returnType: ReturnTypeVoid, address: number, callback: Callback<ReturnObject<void>>): void;

function attackDebugger(pid: number, exitOnDetatch: boolean): any;
function detatchDebugger(pid: number): any;

function handleDebugEvent(pid: number, threadId: number);
function setHardwareBreakpoint(pid: number, address: number, hardwareRegister, trigger: TriggerType, length: number);

function removeHardwareBreakpoint(pid: number, hardwareRegister);

}

export = MemoryJs;
2 changes: 2 additions & 0 deletions types/models/Callback.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@

export declare type Callback<T> = (error: any, data: T) => any;
8 changes: 8 additions & 0 deletions types/models/FunctionArg.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import type { ReturnTypeBoolean, ReturnTypeNumber, ReturnTypeString, ReturnTypeVoid } from "./enums/ReturnType";

declare interface FunctionArgNumber { type: ReturnTypeNumber, value: number }
declare interface FunctionArgBoolean { type: ReturnTypeBoolean, value: boolean }
declare interface FunctionArgString { type: ReturnTypeString, value: string }
declare interface FunctionArgVoid { type: ReturnTypeVoid }

export declare type FunctionArg = FunctionArgNumber | FunctionArgBoolean | FunctionArgString | FunctionArgVoid;
7 changes: 7 additions & 0 deletions types/models/Module.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
export declare interface Module {
modBaseAddr: number;
modBaseSize: number;
szExePath: string;
szModule: string;
th32ProcessID: number;
}
10 changes: 10 additions & 0 deletions types/models/Process.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
export declare interface Process {
dwSize: number;
th32ProcessID: number;
cntThreads: number;
th32ParentProcessID: number;
pcPriClassBase: number;
szExeFile: string;
modBaseAddr: number;
handle: number;
}
4 changes: 4 additions & 0 deletions types/models/ReturnObject.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
export declare interface ReturnObject<T> {
returnValue: T,
exitCode: number
}
13 changes: 13 additions & 0 deletions types/models/Vector.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@

export declare interface Vector3 {
x: number,
y: number,
z: number
}

export declare interface Vector4 {
x: number,
y: number,
z: number,
w: number
}
38 changes: 38 additions & 0 deletions types/models/enums/DataType.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@

export declare enum DataType {
BYTE = "byte",
INT = "int",
INT32 = "int32",
UINT32 = "uint32",
INT64 = "int64",
UINT64 = "uint64",
DWORD = "dword",
SHORT = "short",
LONG = "long",
FLOAT = "float",
DOUBLE = "double",
BOOL = "bool",
BOOLEAN = "boolean",
PTR = "ptr",
POINTER = "pointer",
STR = "str",
STRING = "string",
VEC3 = "vec3",
VECTOR3 = "vector3",
VEC4 = "vec4",
VECTOR4 = "vector4"
}

export declare type DataTypeNumber = DataType.BYTE |
DataType.INT | DataType.INT32 |
DataType.UINT32 | DataType.UINT32 |
DataType.INT64 | DataType.UINT64 |
DataType.DWORD | DataType.SHORT |
DataType.LONG | DataType.FLOAT | DataType.DOUBLE |
DataType.PTR | DataType.POINTER;
export declare type DataTypeBoolean = DataType.BOOL | DataType.BOOLEAN;
export declare type DataTypeString = DataType.STR | DataType.STRING;
export declare type DataTypeVector3 = DataType.VEC3 | DataType.VECTOR3;
export declare type DataTypeVector4 = DataType.VEC4 | DataType.VECTOR4;


6 changes: 6 additions & 0 deletions types/models/enums/MemoryAllocationType.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
export declare enum MemoryAllocationType {
MEM_COMMIT,
MEM_RESERVE,
MEM_RESET,
MEM_RESET_UNDO
}
17 changes: 17 additions & 0 deletions types/models/enums/ProtectionType.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
export declare enum ProtectionType {
PAGE_NOACCESS,
PAGE_READONLY,
PAGE_READWRITE,
PAGE_WRITECOPY,
PAGE_EXECUTE,
PAGE_EXECUTE_READ,
PAGE_EXECUTE_READWRITE,
PAGE_EXECUTE_WRITECOPY,
PAGE_GUARD,
PAGE_NOCACHE,
PAGE_WRITECOMBINE,
PAGE_ENCLAVE_THREAD_CONTROL,
PAGE_TARGETS_NO_UPDATE,
PAGE_TARGETS_INVALID,
PAGE_ENCLAVE_UNVALIDATED
}
14 changes: 14 additions & 0 deletions types/models/enums/ReturnType.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
declare enum ReturnType {
T_VOID = 0x0,
T_STRING = 0x1,
T_CHAR = 0x2,
T_BOOL = 0x3,
T_INT = 0x4,
T_DOUBLE = 0x5,
T_FLOAT = 0x6
}

export declare type ReturnTypeNumber = ReturnType.T_INT | ReturnType.T_DOUBLE | ReturnType.T_FLOAT;
export declare type ReturnTypeBoolean = ReturnType.T_BOOL;
export declare type ReturnTypeString = ReturnType.T_CHAR | ReturnType.T_STRING;
export declare type ReturnTypeVoid = ReturnType.T_VOID;
6 changes: 6 additions & 0 deletions types/models/enums/SignatureType.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@

export declare enum SignatureType {
NORMAL,
READ,
SUBTRACT
}
5 changes: 5 additions & 0 deletions types/models/enums/TriggerType.d..ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@

export declare enum TriggerType {
TRIGGER_ACCESS,
TRIGGER_WRITE,
}