This commit is contained in:
手瓜一十雪 2024-08-23 11:04:47 +08:00
parent 509390af20
commit 3b5e6553cd

View File

@ -1,4 +1,8 @@
// 此代码禁止除NapCat外任何地方使用 使用需获取许可 /**
* @description 此代码禁止除NapCat外任何地方使用 使用需获取许可
*@author: Mlikiowa
*@date: 2024-08-23
*/
let Process = require('process'); let Process = require('process');
let os = require('os'); let os = require('os');
@ -8,14 +12,12 @@ Process.dlopenOrig = Process.dlopen;
let RealWrapper; let RealWrapper;
let loginService; let loginService;
//Fuck LoginService
class LoginService { class LoginService {
constructor() { constructor() {
console.log('[NapCat] Fuck LoginService Loading...'); console.log('[NapCat] Fuck LoginService Loading...');
} }
} }
//NapCat 专有逻辑
let initCallBack; let initCallBack;
let wrapperSession; let wrapperSession;
let wrapperLoginService; let wrapperLoginService;
@ -31,13 +33,6 @@ function CreateFuckService(ServiceName) {
get: function (target, ClassFunName, receiver) { get: function (target, ClassFunName, receiver) {
return function () { return function () {
let ret = loginService[ClassFunName](...arguments); let ret = loginService[ClassFunName](...arguments);
// if (ret instanceof Promise) {
// ret.then((data) => {
// console.log("Called ", '实例方法 NodeIKernelLoginService/' + ClassFunName, ' 参数:', ...arguments, '返回:', data);
// });
// } else {
// console.log("Called ", '实例方法 NodeIKernelLoginService/' + ClassFunName, ' 参数:', ...arguments, '返回:', ret);
// }
return ret; return ret;
} }
@ -60,21 +55,12 @@ function CreateFuckService(ServiceName) {
if (ClassFunName == 'init') { if (ClassFunName == 'init') {
let origin = arguments[3].onSessionInitComplete; let origin = arguments[3].onSessionInitComplete;
arguments[3].onSessionInitComplete = function () { arguments[3].onSessionInitComplete = function () {
//console.log("Listner ", '注册方法 NodeIKernelSessionListener/onSessionInitComplete', ' 参数:', ...arguments);
origin(...arguments); origin(...arguments);
initCallBack.forEach((cb) => cb(...arguments)); initCallBack.forEach((cb) => cb(...arguments));
clearHook(); clearHook();
} }
} }
let ret = Session[ClassFunName](...arguments); let ret = Session[ClassFunName](...arguments);
// if (ret instanceof Promise) {
// ret.then((data) => {
// console.log("Called ", '实例方法 NodeIQQNTWrapperSession/' + ClassFunName, ' 参数:', ...arguments, '返回:', data);
// });
// } else {
// console.log("Called ", '实例方法 NodeIQQNTWrapperSession/' + ClassFunName, ' 参数:', ...arguments, '返回:', ret);
// }
return ret; return ret;
} }
@ -91,12 +77,9 @@ function CreateFuckService(ServiceName) {
Process.dlopen = function (module, filename, flags = os.constants.dlopen.RTLD_LAZY) { Process.dlopen = function (module, filename, flags = os.constants.dlopen.RTLD_LAZY) {
let dlopenRet = this.dlopenOrig(module, filename, flags); let dlopenRet = this.dlopenOrig(module, filename, flags);
if (filename.indexOf('wrapper.node') == -1) return dlopenRet; if (filename.indexOf('wrapper.node') == -1) return dlopenRet;
//仅对Wrapper.node进行处理
RealWrapper = module.exports; RealWrapper = module.exports;
//先行获取LoginService操作权
loginService = new RealWrapper.NodeIKernelLoginService(); loginService = new RealWrapper.NodeIKernelLoginService();
wrapperLoginService = loginService; wrapperLoginService = loginService;
//开始针对性处理
module.exports = new Proxy({}, { module.exports = new Proxy({}, {
get: function (target, ServiceName, receiver) { get: function (target, ServiceName, receiver) {
if (ServiceName == 'NodeIKernelLoginService') return CreateFuckService(ServiceName); if (ServiceName == 'NodeIKernelLoginService') return CreateFuckService(ServiceName);
@ -104,11 +87,8 @@ Process.dlopen = function (module, filename, flags = os.constants.dlopen.RTLD_LA
return RealWrapper[ServiceName]; return RealWrapper[ServiceName];
} }
}); });
//返回预先构造的对象
return dlopenRet; return dlopenRet;
}; };
//辅助函数
function clearHook() { function clearHook() {
initCallBack = []; initCallBack = [];
process.dlopen = dlopenOrig; process.dlopen = dlopenOrig;