mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2026-02-06 21:10:23 +00:00
chore: build core.lib
This commit is contained in:
39
src/hook/frida_lood.ts
Normal file
39
src/hook/frida_lood.ts
Normal 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
24
src/hook/frida_script.js
Normal 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
23
src/hook/test.cjs
Normal 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);
|
||||
});
|
||||
Reference in New Issue
Block a user