From 31e23de4d69781697f83012c67a989042e9509fd Mon Sep 17 00:00:00 2001 From: HolographicHat Date: Wed, 13 Jul 2022 20:42:24 +0800 Subject: [PATCH] remove files --- .gitmodules | 3 - app.js | 179 ------------------ appcenter.js | 116 ------------ export.js | 162 ----------------- native/.gitignore | 6 - native/binding.gyp | 48 ----- native/package.json | 17 -- native/src/define.h | 15 -- native/src/homu.h | 11 -- native/src/main.cc | 250 -------------------------- native/src/registry/registry.hpp | 39 ---- native/src/utils.cc | 62 ------- native/src/utils.h | 15 -- native/src/wmi | 1 - package.json | 19 -- package/app.manifest | 2 - package/icon.ico | Bin 361166 -> 0 bytes package/package.js | 57 ------ package/rh.exe | Bin 5680128 -> 0 bytes package/rh.script | 10 -- package/version.rc | 23 --- regionServer.js | 111 ------------ utils.js | 299 ------------------------------- version.js | 7 - 24 files changed, 1452 deletions(-) delete mode 100644 .gitmodules delete mode 100644 app.js delete mode 100644 appcenter.js delete mode 100644 export.js delete mode 100644 native/.gitignore delete mode 100644 native/binding.gyp delete mode 100644 native/package.json delete mode 100644 native/src/define.h delete mode 100644 native/src/homu.h delete mode 100644 native/src/main.cc delete mode 100644 native/src/registry/registry.hpp delete mode 100644 native/src/utils.cc delete mode 100644 native/src/utils.h delete mode 160000 native/src/wmi delete mode 100644 package.json delete mode 100644 package/app.manifest delete mode 100644 package/icon.ico delete mode 100644 package/package.js delete mode 100644 package/rh.exe delete mode 100644 package/rh.script delete mode 100644 package/version.rc delete mode 100644 regionServer.js delete mode 100644 utils.js delete mode 100644 version.js diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 2aa7398..0000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "native/src/wmi"] - path = native/src/wmi - url = https://github.com/HolographicHat/wmi diff --git a/app.js b/app.js deleted file mode 100644 index 18deb9e..0000000 --- a/app.js +++ /dev/null @@ -1,179 +0,0 @@ -const proxy = require("udp-proxy") -const cp = require("child_process") -const appcenter = require("./appcenter") -const regionServer = require("./regionServer") -const cloud = require("./generated/secret") -const { - initConfig, splitPacket, upload, decodeProto, log, setupHost, KPacket, debug, checkUpdate, - brotliCompressSync, brotliDecompressSync, checkGameIsRunning, checkPortIsUsing -} = require("./utils") -const { exportData } = require("./export") -const { enablePrivilege, pause } = require("./generated/native") - -const onExit = () => { - setupHost(true) - console.log("按任意键退出") - pause() -}; - -(async () => { - try { - process.on("SIGHUP", () => setupHost(true)) - process.on("unhandledRejection", (reason, promise) => { - console.log("Unhandled Rejection at: ", promise, "\n0Reason:", reason) - }) - process.on("uncaughtException", (err, origin) => { - appcenter.uploadError(err, true) - console.log(err) - console.log(`Origin: ${origin}`) - process.exit(1) - }) - process.on("exit", onExit) - process.on("SIGINT", onExit) - try { - enablePrivilege() - } catch (e) { - console.log("请使用管理员身份运行此程序") - process.exit(-1) - } - appcenter.startup() - let conf = await initConfig() - cloud.init(conf) - checkPortIsUsing() - checkGameIsRunning() - log("检查更新") - await checkUpdate() - let gameProcess - let unexpectedExit = true - regionServer.create(conf,() => { - setupHost() - gameProcess = cp.execFile(conf.executable, { cwd: conf.path },err => { - if (err !== null && !err.killed) { - throw err - } - }) - log("启动原神") - gameProcess.on("exit", () => { - if (unexpectedExit) { - console.log("游戏进程异常退出") - process.exit(0) - } - }) - },(ip, port, hServer) => { - let login = false - let cache = new Map() - let lastRecvTimestamp = 0 - // noinspection JSUnusedGlobalSymbols - const options = { - address: ip, - port: port, - localaddress: "127.0.0.1", - localport: 45678, - middleware: { - message: (msg, sender, next) => { - const buf = Buffer.from(msg) - if (!(login && buf.readUInt8(8) === 0x51)) { - next(msg, sender) - } - }, - proxyMsg: (msg, sender, peer, next) => { - try { next(msg, sender, peer) } catch (e) {} - } - } - } - let monitor; - let stopped = false - const createMonitor = () => { - monitor = setInterval(async () => { - if (login && lastRecvTimestamp + 2 < parseInt(Date.now() / 1000) && !stopped) { - stopped = true - unexpectedExit = false - server.close(() => {}) - hServer.close() - gameProcess.kill() - clearInterval(monitor) - setupHost(true) - log("正在处理数据,请稍后...") - let packets = Array.from(cache.values()) - cache.clear() - packets.sort((a, b) => a.frg - b.frg) - .sort((a, b) => a.sn - b.sn) - .filter(i => i.data.byteLength !== 0) - .forEach(i => { - const psn = i.sn + i.frg - cache.has(psn) ? (() => { - const arr = cache.get(psn) - arr.push(i.data) - cache.set(psn, arr) - })() : cache.set(psn, [i.data]) - }) - packets = Array.from(cache.values()) - .map(arr => { - const data = Buffer.concat(arr) - const len = Buffer.alloc(4) - len.writeUInt32LE(data.length) - return Buffer.concat([len, data]) - }) - const merged = Buffer.concat(packets) - const compressed = brotliCompressSync(merged) - const response = await upload(compressed) - const data = brotliDecompressSync(response.data) - if (response.status !== 200) { - log(`发生错误: ${data}`) - log(`请求ID: ${response.headers["x-api-requestid"]}`) - log("请联系开发者以获取帮助") - } else { - const proto = await decodeProto(data, "Notify1") - await exportData(proto) - } - process.exit(0) - } - },1000) - } - const server = proxy.createServer(options) - server.on("message", (msg, _) => { - if (msg.byteLength > 500) { - login = true - } - }) - server.on("error", err => console.log(`Proxy error: ${err.message}` + err.message)) - server.on("proxyError", err => console.log(`Proxy error: ${err.message}` + err.message)) - server.on("proxyMsg", (msg, _) => { - lastRecvTimestamp = parseInt(Date.now() / 1000) - let buf = Buffer.from(msg) - if (buf.byteLength <= 20) { - switch(buf.readUInt32BE(0)) { - case 325: - createMonitor() - debug("Connection established.") - break - case 404: - debug("Connection terminated.") - lastRecvTimestamp = parseInt(Date.now() / 1000) - 2333 - break - default: - console.log(`Unhandled: ${buf.toString("hex")}`) - process.exit(2) - break - } - return - } - splitPacket(buf).forEach(sb => { - if (sb.readUInt8(8) === 0x51) { - const p = new KPacket(sb) - if (!cache.has(p.hash)) cache.set(p.hash, p) - } - }) - }) - return server - }).then(() => log("加载完毕")) - } catch (e) { - console.log(e) - if (e instanceof Error) { - appcenter.uploadError(e, true) - } else { - appcenter.uploadError(Error(e), true) - } - process.exit(1) - } -})() diff --git a/appcenter.js b/appcenter.js deleted file mode 100644 index 0b30430..0000000 --- a/appcenter.js +++ /dev/null @@ -1,116 +0,0 @@ -const axios = require("axios") -const crypto = require("crypto") -const { version } = require("./version") -const { getDeviceID, getDeviceInfo } = require("./generated/native") - -const getTimestamp = (d = new Date()) => { - const p = i => i.toString().padStart(2, "0") - return `${d.getUTCFullYear()}-${p(d.getUTCMonth() + 1)}-${p(d.getUTCDate())}T${p(d.getUTCHours())}:${p(d.getUTCMinutes())}:${p(d.getUTCSeconds())}.${p(d.getUTCMilliseconds())}Z` -} - -const queue = [] -const session = crypto.randomUUID() -const key = "648b83bf-d439-49bd-97f4-e1e506bdfe39" - -const install = (() => { - const id = getDeviceID() - return id === undefined ? crypto.randomUUID() : id -})() - -const device = (() => { - const info = getDeviceInfo() - info.appBuild = version.code - info.appVersion = version.name - info.sdkName = "appcenter.wpf.netcore" - info.sdkVersion = "4.5.0" - info.osName = "WINDOWS" - info.appNamespace = "default" - return info -})() - -const upload = () => { - if (queue.length > 0) { - const logs = [] - for (let i = 0; i <= queue.length; i++) { - logs.push(queue.pop()) - } - const data = JSON.stringify({"logs": logs}) - axios.post("https://in.appcenter.ms/logs?api-version=1.0.0", data,{ - headers: { - "App-Secret": key, - "Install-ID": install - } - }).catch(_ => {}).then() - } -} - -const uploadError = (err, fatal) => { - const eid = crypto.randomUUID() - const reportJson = process.report.getReport(err) - const reportAttachment = { - type: "errorAttachment", - device: device, - timestamp: getTimestamp(), - id: crypto.randomUUID(), - sid: session, - errorId: eid, - contentType: "application/json", - fileName: "report.json", - data: Buffer.from(JSON.stringify(reportJson, null, 2), "utf-8").toString("base64") - } - // noinspection JSUnresolvedVariable - const errorContent = { - type: "managedError", - id: eid, - sid: session, - architecture: "AMD64", - userId: install, - fatal: fatal, - processId: process.pid, - processName: process.argv0.replaceAll("\\", "/").split("/").pop(), - timestamp: getTimestamp(), - appLaunchTimestamp: getTimestamp(new Date(Date.now() - process.uptime())), - exception: { - "type": err.name, - "message": err.message, - "stackTrace": err.stack - }, - device: device - } - queue.push(errorContent, reportAttachment) - upload() -} - -const uploadEvent = (name, prop) => { - const content = { - type: "event", - id: crypto.randomUUID(), - sid: session, - name: name, - properties: prop, - timestamp: getTimestamp(), - device: device - } - queue.push(content) -} - -const startup = () => { - queue.push({ - type: "startService", - services: [ "Analytics","Crashes" ], - timestamp: getTimestamp(), - device: device - }) - queue.push({ - type: "startSession", - sid: session, - timestamp: getTimestamp(), - device: device - }) - upload() - setInterval(() => upload(), 5000) -} - -module.exports = { - startup, upload, uploadError, uploadEvent -} diff --git a/export.js b/export.js deleted file mode 100644 index 85ff727..0000000 --- a/export.js +++ /dev/null @@ -1,162 +0,0 @@ -const fs = require("fs") -const axios = require("axios") -const readline = require("readline") -const { version } = require("./version") -const { loadCache, log, openUrl } = require("./utils") -const { checkSnapFastcall, copyToClipboard } = require("./generated/native") - -const exportToSeelie = proto => { - const out = { achievements: {} } - proto.list.filter(a => a.status === 3 || a.status === 2).forEach(({id}) => { - out.achievements[id === 81222 ? 81219 : id] = { done: true } - }) - const fp = `./export-${Date.now()}-seelie.json` - fs.writeFileSync(fp, JSON.stringify(out)) - log(`导出为文件: ${fp}`) -} - -const exportToPaimon = async proto => { - const out = { achievement: {} } - const data = await loadCache() - proto.list.filter(a => a.status === 3 || a.status === 2).forEach(({id}) => { - const gid = data["a"][id]["g"] - if (out.achievement[gid] === undefined) { - out.achievement[gid] = {} - } - out.achievement[gid][id === 81222 ? 81219 : id] = true - }) - const fp = `./export-${Date.now()}-paimon.json` - fs.writeFileSync(fp, JSON.stringify(out)) - log(`导出为文件: ${fp}`) -} - -const UIAF = proto => { - const out = { - info: { - export_app: "YaeAchievement", - export_timestamp: Date.now(), - export_app_version: version.name, - uiaf_version: "v1.0" - }, - list: [] - } - proto.list.filter(a => a.status === 3 || a.status === 2).forEach(({id, finishTimestamp, current}) => { - out.list.push({ - id: id, - timestamp: finishTimestamp, - current: current - }) - }) - return out -} - -const exportToSnapGenshin = async proto => { - if (checkSnapFastcall()) { - const result = UIAF(proto) - const json = JSON.stringify(result) - copyToClipboard(json) - openUrl(`snapgenshin://achievement/import/uiaf`) - log("在 SnapGenshin 进行下一步操作") - } else { - log("请更新 SnapGenshin 后重试") - } -} - -const exportToCocogoat = async proto => { - const result = UIAF(proto) - const response = await axios.post(`https://77.cocogoat.work/v1/memo?source=${encodeURI("全部成就")}`, result).catch(_ => { - console.log("网络错误,请检查网络后重试 (26-1)") - process.exit(261) - }) - if (response.status !== 201) { - console.log(`API StatusCode 错误,请联系开发者以获取帮助 (26-2-${response.status})`) - process.exit(262) - } - const retcode = openUrl(`https://cocogoat.work/achievement?memo=${response.data.key}`) - if (retcode > 32) { - log("在浏览器内进行下一步操作") - } else { - log(`打开此链接以进行下一步操作: https://cocogoat.work/achievement?memo=${response.data.key}`) - } -} - -const exportToCsv = async proto => { - const data = await loadCache() - const outputLines = ["ID,状态,特辑,名称,描述,当前进度,目标进度,完成时间"] - const getStatusText = i => { - switch (i) { - case 1: return "未完成" - case 2: return "已完成,未领取奖励" - case 3: return "已完成" - default: return "未知" - } - } - const getTime = ts => { - const d = new Date(parseInt(`${ts}000`)) - const p = i => i.toString().padStart(2, "0") - return `${d.getFullYear()}/${p(d.getMonth() + 1)}/${p(d.getDate())} ${p(d.getHours())}:${p(d.getMinutes())}:${p(d.getSeconds())}` - } - const bl = [84517] - proto.list.forEach(({current, finishTimestamp, id, status, require}) => { - if (!bl.includes(id)) { - const curAch = data["a"][id] === undefined ? (() => { - console.log(`Error get id ${id} in excel`) - return { - g: "未知", - n: "未知", - d: "未知" - } - })() : data["a"][id] - outputLines.push(`${id},${getStatusText(status)},${data["g"][curAch.g]},${curAch.n},${curAch.d},${status !== 1 ? current === 0 ? require : current : current},${require},${status === 1 ? "" : getTime(finishTimestamp)}`) - } - }) - const fp = `./export-${Date.now()}.csv` - fs.writeFileSync(fp, `\uFEFF${outputLines.join("\n")}`) - log(`导出为文件: ${fp}`) -} - -const exportData = async proto => { - const rl = readline.createInterface({ - input: process.stdin, - output: process.stdout - }) - const question = (query) => new Promise(resolve => { - rl.question(query, resolve) - }) - const chosen = await question( - [ - "导出至: ", - "[0] 椰羊 (https://cocogoat.work/achievement)", - "[1] SnapGenshin", - "[2] Paimon.moe", - "[3] Seelie.me", - "[4] 表格文件 (默认)", - "输入一个数字(0-4): " - ].join("\n") - ) - rl.close() - switch (chosen.trim()) { - case "0": - await exportToCocogoat(proto) - break - case "1": - await exportToSnapGenshin(proto) - break - case "2": - await exportToPaimon(proto) - break - case "3": - await exportToSeelie(proto) - break - case "raw": - fs.writeFileSync(`./export-${Date.now()}-raw.json`, JSON.stringify(proto,null,2)) - log("OK") - break - default: - await exportToCsv(proto) - } -} - -module.exports = { - exportData -} diff --git a/native/.gitignore b/native/.gitignore deleted file mode 100644 index 4978b9c..0000000 --- a/native/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -CMakeLists.txt -.idea -cmake-build-debug -node_modules -build -src/homu.cpp diff --git a/native/binding.gyp b/native/binding.gyp deleted file mode 100644 index 4faea00..0000000 --- a/native/binding.gyp +++ /dev/null @@ -1,48 +0,0 @@ -{ - "targets": [ - { - "target_name": "native", - "sources": [ - "src/main.cc", - "src/utils.h", - "src/utils.cc", - "src/define.h", - "src/wmi/wmi.cpp", - "src/wmi/wmi.hpp", - "src/wmi/unistd.h", - "src/VMProtectSDK.h", - "src/wmi/wmiresult.cpp", - "src/wmi/wmiresult.hpp", - "src/wmi/wmiclasses.hpp", - "src/wmi/wmiexception.hpp", - "src/registry/registry.hpp" - ], - "cflags!": [ - "-fno-exceptions" - ], - "cflags_cc!": [ - "-fno-exceptions" - ], - "defines": [ - "NAPI_DISABLE_CPP_EXCEPTIONS" - ], - "include_dirs": [ - " -#include -#include -#include -#include - -using std::string, std::wstring, std::cout, std::to_string, std::unique_ptr, std::make_unique; -using Napi::Object, Napi::Env, Napi::Function, Napi::Value, Napi::CallbackInfo, Napi::TypeError, Napi::Error; - -typedef unsigned char byte; -typedef unsigned int ui; -typedef unsigned long ul; -typedef unsigned long long ull; diff --git a/native/src/homu.h b/native/src/homu.h deleted file mode 100644 index d63e69f..0000000 --- a/native/src/homu.h +++ /dev/null @@ -1,11 +0,0 @@ -// -// Created by holog on 2022/5/20. -// -#include "define.h" - -Value Initialize(const CallbackInfo &info); - -#ifndef GENSHIN_EXPORT_NATIVE_HOMU_H -#define GENSHIN_EXPORT_NATIVE_HOMU_H - -#endif //GENSHIN_EXPORT_NATIVE_HOMU_H diff --git a/native/src/main.cc b/native/src/main.cc deleted file mode 100644 index 0ea3718..0000000 --- a/native/src/main.cc +++ /dev/null @@ -1,250 +0,0 @@ -//#include "homu.h" -#include "utils.h" -#include "define.h" -#include "wmi/wmi.hpp" -#include "wmi/wmiclasses.hpp" -#include "registry/registry.hpp" -#include -#include -#pragma comment(lib,"ws2_32.lib") -#pragma comment(lib,"iphlpapi.lib") - -using Wmi::Win32_ComputerSystem, Wmi::Win32_OperatingSystem, Wmi::retrieveWmi; - -namespace native { - - Value CheckGameIsRunning(const CallbackInfo &info) { - Env env = info.Env(); - if (info.Length() != 1 || !info[0].IsString()) { - TypeError::New(env, "Wrong arguments").ThrowAsJavaScriptException(); - return env.Undefined(); - } - wstring name = StringToWString(info[0].As().Utf8Value()); - bool isRunning = false; - PROCESSENTRY32 entry; - entry.dwSize = sizeof(entry); - HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL); - if (Process32First(snapshot, &entry) == TRUE) { - while (Process32Next(snapshot, &entry) == TRUE) { - if (wstring(entry.szExeFile) == name) { - isRunning = true; - } - } - } - CloseHandle(snapshot); - return Napi::Boolean::New(env, isRunning); - } - - Value SelectGameExecutable(const CallbackInfo &info) { - Env env = info.Env(); - Napi::String path; - if (OpenFile(env, path) != ERROR_SUCCESS) { - Error::New(env, "Failed to open file: " + to_string(CommDlgExtendedError())).ThrowAsJavaScriptException(); - return env.Undefined(); - } - return path; - } - - Value WhoUseThePort(const CallbackInfo &info) { - Env env = info.Env(); - if (info.Length() != 1 || !info[0].IsNumber()) { - TypeError::New(env, "Wrong arguments").ThrowAsJavaScriptException(); - return env.Undefined(); - } - DWORD dwSize = 0; - PMIB_TCPTABLE_OWNER_PID pTcpTable = nullptr; - GetExtendedTcpTable(pTcpTable, &dwSize, TRUE,AF_INET,TCP_TABLE_OWNER_PID_ALL,0); - pTcpTable = (PMIB_TCPTABLE_OWNER_PID)new byte[dwSize]; - if(GetExtendedTcpTable(pTcpTable,&dwSize,TRUE,AF_INET,TCP_TABLE_OWNER_PID_ALL,0) != NO_ERROR) { - Error::New(env, "GetExtendedTcpTable failed").ThrowAsJavaScriptException(); - return env.Undefined(); - } - int port = info[0].As().Int32Value(); - auto nNum = (int)pTcpTable->dwNumEntries; - DWORD pid = 0; - for(int i = 0; i < nNum; i++) { - if (htons(pTcpTable->table[i].dwLocalPort) == port) { - pid = pTcpTable->table[i].dwOwningPid; - break; - } - } - delete pTcpTable; - Value ret = env.Undefined(); - if (pid != 0) { - HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, pid); - if (hProcess == nullptr) { - Error::New(env, "OpenProcess error: " + to_string(GetLastError())).ThrowAsJavaScriptException(); - return env.Undefined(); - } - TCHAR fnBuf[MAX_PATH]; - DWORD length = MAX_PATH; - if (QueryFullProcessImageName(hProcess, 0, fnBuf, &length) == 0) { - Error::New(env, "QueryFullProcessImageName error: " + to_string(GetLastError())).ThrowAsJavaScriptException(); - return env.Undefined(); - } - Object obj = Object::New(env); - obj.Set("pid", Napi::Number::New(env, pid)); - obj.Set("path", Napi::String::New(env, WStringToString(fnBuf))); - ret = obj; - } - return ret; - } - - Value GetDeviceID(const CallbackInfo &info) { - Env env = info.Env(); - wstring wd; - if (RegUtils::GetString(HKEY_CURRENT_USER, L"SOFTWARE\\miHoYoSDK", L"MIHOYOSDK_DEVICE_ID", wd) != ERROR_SUCCESS) { - return env.Undefined(); - } - string id = WStringToString(wd); - return Napi::String::New(env, id.substr(0, 8) + "-" + id.substr(8, 4) + "-" + id.substr(12, 4) + "-" + id.substr(16, 4) + "-" + id.substr(20, 12)); - } - - Value GetDeviceInfo(const CallbackInfo &info) { - Env env = info.Env(); - HDC desktop = GetDC(nullptr); - int sw = GetDeviceCaps(desktop, DESKTOPHORZRES); - int sh = GetDeviceCaps(desktop, DESKTOPVERTRES); - ReleaseDC(nullptr, desktop); - DWORD buildNum = RegUtils::GetInt(env, HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", L"UBR", 0); - wstring locale; - if (RegUtils::GetString(HKEY_CURRENT_USER, L"Control Panel\\International", L"LocaleName", locale) != ERROR_SUCCESS) { - locale = L"zh-CN"; - } - wstring country; - if (RegUtils::GetString(HKEY_CURRENT_USER, L"Control Panel\\International\\Geo", L"Name", country) != ERROR_SUCCESS) { - country = L"CN"; - } - Object obj = Object::New(env); - obj.Set("locale", Napi::String::New(env, WStringToString(locale))); - obj.Set("screenSize", Napi::String::New(env, to_string(sw) + "x" + to_string(sh))); - obj.Set("carrierCountry", Napi::String::New(env, WStringToString(country))); - try { - auto computer = retrieveWmi(); - obj.Set("model", Napi::String::New(env, computer.Model)); - obj.Set("oemName", Napi::String::New(env, computer.Manufacturer)); - } catch (Wmi::WmiException &e) { - obj.Set("model", Napi::String::New(env, "Unknown")); - obj.Set("oemName", Napi::String::New(env, "Unknown")); - } - try { - auto os = retrieveWmi(); - string osv = os.Version; - obj.Set("osBuild", Napi::String::New(env, osv + "." + to_string(buildNum))); - obj.Set("osVersion", Napi::String::New(env, osv)); - obj.Set("timeZoneOffset", Napi::Number::New(env, os.CurrentTimeZone)); - } catch (Wmi::WmiException &e) { - obj.Set("osBuild", Napi::String::New(env, "Unknown")); - obj.Set("osVersion", Napi::String::New(env, "Unknown")); - obj.Set("timeZoneOffset", Napi::Number::New(env, 480)); - } - return obj; - } - - Value EnablePrivilege(const CallbackInfo &info) { - Env env = info.Env(); - HANDLE hToken; - if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken)) { - Error::New(env, "OpenProcessToken error: " + to_string(GetLastError())).ThrowAsJavaScriptException(); - return env.Undefined(); - } - TOKEN_PRIVILEGES tp; - ZeroMemory(&tp, sizeof(tp)); - tp.PrivilegeCount = 1; - tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; - if (!LookupPrivilegeValue(nullptr, L"SeDebugPrivilege", &tp.Privileges[0].Luid)) { - Error::New(env, "LookupPrivilegeValue error: " + to_string(GetLastError())).ThrowAsJavaScriptException(); - return env.Undefined(); - } - if (!AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(tp), nullptr, nullptr)) { - Error::New(env, "AdjustTokenPrivileges error: " + to_string(GetLastError())).ThrowAsJavaScriptException(); - return env.Undefined(); - } - if (GetLastError() == ERROR_NOT_ALL_ASSIGNED) { - Error::New(env, "The token does not have the specified privilege.").ThrowAsJavaScriptException(); - return env.Undefined(); - } - CloseHandle(hToken); - return env.Undefined(); - } - - Value CopyToClipboard(const CallbackInfo &info) { - Env env = info.Env(); - string text = info[0].As().Utf8Value(); - if (OpenClipboard(nullptr)) { - EmptyClipboard(); - HGLOBAL hg = GlobalAlloc(GMEM_MOVEABLE, text.length() + 1); - if (hg != nullptr) { - memcpy(GlobalLock(hg), text.c_str(), text.length() + 1); - GlobalUnlock(hg); - SetClipboardData(CF_TEXT, hg); - } - CloseClipboard(); - } - return env.Undefined(); - } - - Value Pause(const CallbackInfo &info) { - while(!_kbhit()) { - Sleep(10); - } - return info.Env().Undefined(); - } - - Value OpenUrl(const CallbackInfo &info) { - Env env = info.Env(); - wstring url = StringToWString(info[0].As().Utf8Value()); - HINSTANCE retcode = ShellExecute(GetConsoleWindow(), L"open", url.c_str(), nullptr, nullptr, SW_SHOWNORMAL); - return Napi::Number::New(env, (INT_PTR)retcode); // NOLINT(cppcoreguidelines-narrowing-conversions) - } - - Value CheckSnapFastcall(const CallbackInfo &info) { - Env env = info.Env(); - wstring queryResult; - RegUtils::GetString(HKEY_CLASSES_ROOT, L"snapgenshin", L"", queryResult); - return Napi::Boolean::New(env, wcscmp(queryResult.c_str(), L"URL:snapgenshin") == 0); - } - - Value GetMACAddress(const CallbackInfo &info) { - Env env = info.Env(); - ULONG ulOutBufLen = sizeof(IP_ADAPTER_INFO); - auto pAdapterInfo = (IP_ADAPTER_INFO *) malloc(ulOutBufLen); - if (GetAdaptersInfo(pAdapterInfo, &ulOutBufLen) != ERROR_SUCCESS) { - pAdapterInfo = (IP_ADAPTER_INFO *) malloc(ulOutBufLen); - if (GetAdaptersInfo(pAdapterInfo, &ulOutBufLen) != ERROR_SUCCESS) { return env.Undefined(); } - } - PIP_ADAPTER_INFO pAdapter = pAdapterInfo; - while (pAdapter) { - if (pAdapter->Address[0] == 0x00) { - pAdapter = pAdapter->Next; - continue; - } - char *result; - ToHex((char *)pAdapter->Address, 6, &result); - auto ret = Napi::String::New(env, result); - free(result); - free(pAdapterInfo); - return ret; - } - return env.Undefined(); - } - - Object init(Env env, Object exports) { - exports.Set("pause", Function::New(env, Pause)); - exports.Set("openUrl", Function::New(env, OpenUrl)); - //exports.Set("homuInit", Function::New(env, Initialize)); - exports.Set("getDeviceID", Function::New(env, GetDeviceID)); - exports.Set("getMACAddress", Function::New(env, GetMACAddress)); - exports.Set("getDeviceInfo", Function::New(env, GetDeviceInfo)); - exports.Set("whoUseThePort", Function::New(env, WhoUseThePort)); - exports.Set("copyToClipboard", Function::New(env, CopyToClipboard)); - exports.Set("enablePrivilege", Function::New(env, EnablePrivilege)); - exports.Set("checkSnapFastcall", Function::New(env, CheckSnapFastcall)); - exports.Set("checkGameIsRunning", Function::New(env, CheckGameIsRunning)); - exports.Set("selectGameExecutable", Function::New(env, SelectGameExecutable)); - return exports; - } - - NODE_API_MODULE(addon, init) - -} diff --git a/native/src/registry/registry.hpp b/native/src/registry/registry.hpp deleted file mode 100644 index 0a591fc..0000000 --- a/native/src/registry/registry.hpp +++ /dev/null @@ -1,39 +0,0 @@ -#pragma once - -#ifndef REGISTRY_HPP -#define REGISTRY_HPP - -#include "../define.h" - -namespace RegUtils { - - DWORD GetInt(Env env, HKEY hKey, const wstring &path, const wstring &value, DWORD defaultValue) { - DWORD data = 0; - DWORD size = sizeof(DWORD); - LSTATUS retcode = RegGetValue(hKey, path.c_str(), value.c_str(), RRF_RT_REG_DWORD, nullptr, &data, &size); - if (retcode != ERROR_SUCCESS) { - return defaultValue; - } - return data; - } - - LSTATUS GetString(HKEY hKey, const wstring &path, const wstring &value, wstring &result) { - DWORD size = 0; - LSTATUS retcode = RegGetValue(hKey, path.c_str(), value.c_str(), RRF_RT_REG_SZ, nullptr, nullptr, &size); - if (retcode != ERROR_SUCCESS) { - return retcode; - } - wstring data; - DWORD len = size / sizeof(WCHAR); - data.resize(len); - retcode = RegGetValue(hKey, path.c_str(), value.c_str(), RRF_RT_REG_SZ, nullptr, &data[0], &size); - if (retcode != ERROR_SUCCESS) { - return retcode; - } - data.resize((len-1)); - result = data; - return ERROR_SUCCESS; - } -} - -#endif //REGISTRY_HPP diff --git a/native/src/utils.cc b/native/src/utils.cc deleted file mode 100644 index f35a464..0000000 --- a/native/src/utils.cc +++ /dev/null @@ -1,62 +0,0 @@ -#include "utils.h" -#include "define.h" - -wstring StringToWString(const string &src, UINT codePage) { - int len = MultiByteToWideChar(codePage, 0, src.c_str(), -1, nullptr, 0); - auto *buffer = new WCHAR[len]; - MultiByteToWideChar(codePage, 0, src.c_str(), -1, buffer, len); - wstring strTemp(buffer); - delete[] buffer; - return strTemp; -} - -string WStringToString(const wstring &src, UINT codePage) { - int len = WideCharToMultiByte(codePage, 0, src.c_str(), -1, nullptr, 0, nullptr, nullptr); - auto *buffer = new CHAR[len]; - WideCharToMultiByte(codePage, 0, src.c_str(), -1, buffer, len, nullptr, nullptr); - string strTemp(buffer); - delete[] buffer; - return strTemp; -} - -void Log(Env env, const string &msg) { - auto logFunc = env.Global().Get("console").As().Get("log").As(); - logFunc.Call({ Napi::String::New(env, msg) }); -} - -void Log(Env env, const wstring &msg) { - auto logFunc = env.Global().Get("console").As().Get("log").As(); - logFunc.Call({ Napi::String::New(env, WStringToString(msg)) }); -} - -char* ToHex(const char *bin, int binsz, char **result) { - char hexStr[] = "0123456789ABCDEF"; - if (!(*result = (char *) malloc(binsz * 2 + 1))) return nullptr; - (*result)[binsz * 2] = 0; - if (!binsz) return nullptr; - for (int i = 0; i < binsz; i++) { - (*result)[i * 2 + 0] = hexStr[(bin[i] >> 4) & 0x0F]; - (*result)[i * 2 + 1] = hexStr[(bin[i]) & 0x0F]; - } - return *result; -} - -LSTATUS OpenFile(Env env, Napi::String &result, HWND parent) { - OPENFILENAME open; - ZeroMemory(&open, sizeof(open)); - WCHAR file[32768]; - file[0]=L'\0'; - open.Flags = OFN_FILEMUSTEXIST | OFN_NONETWORKBUTTON | OFN_PATHMUSTEXIST | OFN_EXPLORER; - open.hwndOwner = parent; - open.nMaxFile = 32768; - open.lpstrFile = file; - open.lpstrTitle = L"选择原神主程序"; - open.lpstrFilter = L"国服/国际服主程序 (YuanShen/GenshinImpact.exe)\0YuanShen.exe;GenshinImpact.exe\0"; - open.lStructSize = sizeof(open); - if(GetOpenFileName(&open)) { - result = GetACP() == 936 ? Napi::String::New(env, WStringToString(file, CP_UTF8)) : Napi::String::New(env, WStringToString(file)); - return ERROR_SUCCESS; - } else { - return ERROR_ERRORS_ENCOUNTERED; - } -} diff --git a/native/src/utils.h b/native/src/utils.h deleted file mode 100644 index c9c4a48..0000000 --- a/native/src/utils.h +++ /dev/null @@ -1,15 +0,0 @@ -#pragma once - -#include "define.h" - -string WStringToString(const wstring &src, UINT codePage = CP_ACP); -wstring StringToWString(const string &src, UINT codePage = CP_ACP); -LSTATUS OpenFile(Env env, Napi::String &result, HWND parent = GetConsoleWindow()); -char* ToHex(const char *bin, int binsz, char **result); -void Log(Env env, const string &msg); -void Log(Env env, const wstring &msg); - -#ifndef GENSHIN_EXPORT_NATIVE_UTILS_H -#define GENSHIN_EXPORT_NATIVE_UTILS_H - -#endif //GENSHIN_EXPORT_NATIVE_UTILS_H diff --git a/native/src/wmi b/native/src/wmi deleted file mode 160000 index aab36ea..0000000 --- a/native/src/wmi +++ /dev/null @@ -1 +0,0 @@ -Subproject commit aab36ea1e1700f3d33f9dfc9f8df950c30e2c6ec diff --git a/package.json b/package.json deleted file mode 100644 index 0833deb..0000000 --- a/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "genshin-export", - "version": "1.0.0", - "description": "", - "main": "app.js", - "keywords": [], - "author": "", - "license": "ISC", - "private": true, - "dependencies": { - "axios": "^0.26.1", - "ini": "^2.0.0", - "protobufjs": "^6.11.2", - "udp-proxy": "^1.2.0" - }, - "devDependencies": { - "pkg": "file:C:/Users/holog/Desktop/pkg-main" - } -} diff --git a/package/app.manifest b/package/app.manifest deleted file mode 100644 index ea57069..0000000 --- a/package/app.manifest +++ /dev/null @@ -1,2 +0,0 @@ - -truetrue diff --git a/package/icon.ico b/package/icon.ico deleted file mode 100644 index d845eccd31e0360848e66d07fddb45ec76cf0713..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361166 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�+8KYRn-6Z`dU%4(0- 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