chore: build core.lib

This commit is contained in:
linyuchen
2024-05-10 21:35:14 +08:00
parent fd8ff1fd21
commit 431328a875
49 changed files with 284 additions and 189 deletions

39
src/hook/frida_lood.ts Normal file
View File

@@ -0,0 +1,39 @@
import * as frida from 'frida';
import { promises as fs } from 'fs';
import path from 'node:path';
async function loadFridaScript(scriptPath: string): Promise<void> {
try {
// Attach to the process
const currentPid = process.pid;
console.log('Attaching to process:', currentPid);
const targetProcess = await frida.attach(currentPid);
// Read the script file
const scriptCode = await fs.readFile(scriptPath, { encoding: 'utf8' });
// Create the script in the target process
const script = await targetProcess.createScript(scriptCode);
// Connect to script messages
script.message.connect((message, data) => {
if (message.type === 'send') {
console.log('[Script]:', message.payload);
} else if (message.type === 'error') {
console.error('[Script Error]:', message.stack);
}
});
// Load the script into the target process
await script.load();
console.log('Script loaded successfully and is now running.');
} catch (error) {
console.error('Failed to load script:', error);
}
}
export function hookInit() {
// Assuming the process name and script file path are correct
loadFridaScript(path.join(path.resolve(__dirname), 'frida_script.js')).catch(console.error);
}

24
src/hook/frida_script.js Normal file
View File

@@ -0,0 +1,24 @@
const moduleName = 'wrapper.node';
const offset = 0x18152AFE0; // 静态地址偏移
// 查找模块基地址
const baseAddress = Module.findBaseAddress(moduleName);
if (!baseAddress) {
throw new Error('Module not found.');
}
// 计算绝对地址
const absoluteAddress = baseAddress.add(offset);
// 设置拦截器
Interceptor.attach(absoluteAddress, {
onEnter: function(args) {
console.log(`[+] Function at offset ${offset} in wrapper.node was called`);
console.log('Argument 0:', args[0].toInt32());
},
onLeave: function(retval) {
console.log('Return value:', retval.toInt32());
// 可以在这里修改返回值
retval.replace(42);
}
});

23
src/hook/test.cjs Normal file
View File

@@ -0,0 +1,23 @@
const frida = require('frida');
const fs = require('fs');
const path = require('path');
async function main() {
// 获取当前 Node.js 进程的 ID
const pid = process.pid;
const session = await frida.attach(pid); // 附加到当前进程
const scriptCode = fs.readFileSync(path.join(path.resolve(__dirname), 'frida_script.js'), 'utf-8');
const script = await session.createScript(scriptCode);
script.message.connect(message => {
console.log('Message from Frida:', message);
});
await script.load();
console.log('Frida script has been loaded successfully.');
}
main().catch(err => {
console.error(err);
});