From 24848a0280137e3041d0a367601af279112c072d Mon Sep 17 00:00:00 2001 From: Mathieu Strypsteen Date: Sun, 17 Mar 2024 12:12:28 +0100 Subject: [PATCH] Use frida-compile --- .gitignore | 2 +- scripts/package-lock.json | 463 ++++++++++++++++++++++++++++++++++++++ scripts/package.json | 1 + scripts/tsconfig.json | 4 +- scripts/utils.ts | 34 ++- 5 files changed, 493 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index 9209ef5..23a608b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ node_modules -out +*.js diff --git a/scripts/package-lock.json b/scripts/package-lock.json index 27079f0..bc980b4 100644 --- a/scripts/package-lock.json +++ b/scripts/package-lock.json @@ -9,6 +9,7 @@ "@types/frida-gum": "^18.7.0", "@types/node": "~20.9.5", "eslint": "^8.57.0", + "frida-compile": "^16.4.1", "typescript": "^5.4.2", "typescript-eslint": "^7.2.0" } @@ -78,6 +79,257 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@frida/assert": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@frida/assert/-/assert-3.0.2.tgz", + "integrity": "sha512-JXJq5SbXGrM5EkjrZKfRmB29zOoEOix02NC6A5TSJ+C1GE/X051EinJJsuOO2pEOx7KZwpvAHvS0WXW0+levKg==", + "dev": true + }, + "node_modules/@frida/base64-js": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@frida/base64-js/-/base64-js-2.0.3.tgz", + "integrity": "sha512-2w0F+1TynOTCZ/v7du9LdHPWwq0lJhazjo2fF9upMyQmA1zHetT14fLuQ1v/6T0qPgyeEGkiSrybstU8EsgeUA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/@frida/buffer": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@frida/buffer/-/buffer-7.0.4.tgz", + "integrity": "sha512-RxQ1lZRRiCJj7nhcCiD8xeJx0NsLpGGnjqsmTg7jShGmbnVFMN5W7+J+3gqdPSQhc/IxNBIWc6zRXVp4+qnYHg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.5.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/@frida/crosspath": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@frida/crosspath/-/crosspath-3.0.0.tgz", + "integrity": "sha512-bNdO1spIPD2P40XtK89N49oZpJhstdlnkJZcD4yJ17jrdkm9Ctu0sd9MIEX6Z8Tm8ydhVJBAOMEKl9/R27onAQ==", + "dev": true, + "dependencies": { + "@types/node": "^17.0.36" + }, + "engines": { + "node": ">=14.9.0" + } + }, + "node_modules/@frida/crosspath/node_modules/@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "dev": true + }, + "node_modules/@frida/crypto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@frida/crypto/-/crypto-1.0.1.tgz", + "integrity": "sha512-WXTkVjESvX8TIVXIynJJv9BKSIdQP0Iis04StIXknkDi1ULdMlrypA9p5C4KW1H6GCkNsVnKbybpzsulYCTvag==", + "dev": true + }, + "node_modules/@frida/diagnostics_channel": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@frida/diagnostics_channel/-/diagnostics_channel-1.0.0.tgz", + "integrity": "sha512-mYX1jp/5Bpk24tHArJNx65iCk7qSuV8YJkdU0gFNVtJUXxfV8BG5WuPa4mL+ynxsbWWpsg/cwKZbLAepYKTdQQ==", + "dev": true + }, + "node_modules/@frida/events": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@frida/events/-/events-4.0.4.tgz", + "integrity": "sha512-qJVQ6VWHf9sjUKuiJzoCAC00frbpcwxeYfvQ+PP9LU/d70j+QvjWgYe98Qa3ekLaBU6r/AvWm8ThKCDUCLWrQQ==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/@frida/http": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@frida/http/-/http-4.0.2.tgz", + "integrity": "sha512-cvkc7ex7GmVXVOWqtjXKBWUUbYEBgpNRKZbEEoMeI8KiIs8zejKwg+N7rx7296Ao+EP3+xcUr4wBVr3xLaUVfQ==", + "dev": true, + "dependencies": { + "http-parser-js": "^0.5.3" + } + }, + "node_modules/@frida/http-parser-js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@frida/http-parser-js/-/http-parser-js-1.0.0.tgz", + "integrity": "sha512-2nMrNXt/OeTlWbqnE8AH4Sfz4I2+BGoN206dzKEyC/g2svtn83Xu+zuv/V3TkwrA27s26Mcy84ZwsXeNlqNxUQ==", + "dev": true + }, + "node_modules/@frida/https": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@frida/https/-/https-1.0.0.tgz", + "integrity": "sha512-OiqQ6qsALcWOktRLq07oJ0i6sH8eX6MXb/MdZS1qVKDRf6wchH4Pjn6fiLB+pt/OlYbggk+DOfpHwSdjTwuHMQ==", + "dev": true + }, + "node_modules/@frida/ieee754": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@frida/ieee754/-/ieee754-2.0.2.tgz", + "integrity": "sha512-wlcUebnne4ENN7GDr5pTH598ZDLMVOsh0FjenxeVOe6u7ewZkz9gGRnLnZKJAm9kl5G6XhdxhI0cSXVQK/rQUw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/@frida/net": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@frida/net/-/net-4.0.2.tgz", + "integrity": "sha512-qQRe7hQ+ZfCcG/SE3P1TRqQ9bmuK/T7wPCYaT4z56rBPWAxsaQbQHpX4fR6OrFaSDr7X0xJLsTbdIp9hGhhLZg==", + "dev": true + }, + "node_modules/@frida/os": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@frida/os/-/os-1.0.2.tgz", + "integrity": "sha512-3ISAiGNiyIya3QN2EHBCz1wqP0enTdSxP99wUeroeh8+AQRmgoOr/5TRnrVry8pe378anay3fmV/tdUMMSkehQ==", + "dev": true + }, + "node_modules/@frida/path": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@frida/path/-/path-2.0.3.tgz", + "integrity": "sha512-2RQy36QatoC846fzBhBhV8sXMsSOBGoYvwTHeaE1zUdz7F4RNScP4QEekTTooBYWYX/XjiF36KQpYAzc9OYFtg==", + "dev": true + }, + "node_modules/@frida/process": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@frida/process/-/process-1.2.1.tgz", + "integrity": "sha512-nvCu22DstFW2ttGFtOKekHM7vnjbZm+XgtvavOt427GNT6uV7k0JYK9tnMbcLMRWv57DG6udAmuJlWs8Paq1ag==", + "dev": true + }, + "node_modules/@frida/punycode": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@frida/punycode/-/punycode-3.0.0.tgz", + "integrity": "sha512-XVSDY2KamDs1D5/fTVgHcOSNxdU4kTboxzqJMBbTjcQC7XScIT9c0EfbwKCq7Kci6gWQdsHSCr7lU+9Oc4KAdg==", + "dev": true + }, + "node_modules/@frida/querystring": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@frida/querystring/-/querystring-1.0.0.tgz", + "integrity": "sha512-15m1fOZPmoO/vWlgPJrG/J9/BJDz6a2/JpVGpS8ynNzo+fBhTznaStX5nHxUs24mVTqh/OqLo0EiYJM5WWHXxg==", + "dev": true + }, + "node_modules/@frida/readable-stream": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@frida/readable-stream/-/readable-stream-4.1.3.tgz", + "integrity": "sha512-ntGUFmi+CryRGRJIK13a/VST2Ad19uivbln8Xd92vKPAARq+6vMIASDyZIqyl5BLRccfiyCHdYgrgQ6RI5rUig==", + "dev": true + }, + "node_modules/@frida/reserved-words": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@frida/reserved-words/-/reserved-words-1.0.0.tgz", + "integrity": "sha512-2yG/XxJlsGlk/mm6eZTb4OAaQEhkTI2qaFfZFtAsrA/XuCpuMWkS4y/guyBlsRu4hAuhK2HPmNM8+OLLK1zM9Q==", + "dev": true + }, + "node_modules/@frida/stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@frida/stream/-/stream-1.0.2.tgz", + "integrity": "sha512-4OuaC1ztmEKgTq3WeBhsy8Oq+AwW9n9cYnvLklcC9jwD93AEwgbWpecLlxJCVuALvTMdhKPg0nQVfyGYP/i9Bw==", + "dev": true, + "dependencies": { + "@frida/readable-stream": "^4.1.3" + } + }, + "node_modules/@frida/string_decoder": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@frida/string_decoder/-/string_decoder-2.0.0.tgz", + "integrity": "sha512-in371tYZMHQiW9HF5MS3JDw6Ao6tyBoq34UWy2rzOswYyMG1rpizh85ofi/yVkxDiaqybEZefxzkVittpPGT6g==", + "dev": true + }, + "node_modules/@frida/terser": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@frida/terser/-/terser-1.0.0.tgz", + "integrity": "sha512-59h9WuNzD1Rx/zwoWqQ/FW/4Y/Q3R91Eng2hEwdHapqiTDvtKbZ08F6CynCR7ZVinrh4tLYsF46AtVPTz1ys9g==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@frida/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/@frida/timers": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@frida/timers/-/timers-3.0.0.tgz", + "integrity": "sha512-3b+0igv10aT8TMxefrTAd06rActqbxJLY2Xkkq9vYcPBffB/yHszl0NYIp/5ko8WC3ecDYPU6bQiY6fjs72zTA==", + "dev": true + }, + "node_modules/@frida/tty": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@frida/tty/-/tty-1.0.0.tgz", + "integrity": "sha512-p/kjLnKYxEAB1MdYP8+5rKv9CsHzyA+0jg9BcGETzjQVKHHcroHDULRxDYUh+DC7qs6cpX8QdDQh9E+a6ydgsQ==", + "dev": true + }, + "node_modules/@frida/url": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@frida/url/-/url-1.0.2.tgz", + "integrity": "sha512-ZKunbKJHMr8w2Eb/5K1avy0MzK1B998S17wYXNv3RmzBGxMm8S5T0F3qEpRxkU7/72P8m4izyQU87fWl+FjQsQ==", + "dev": true, + "dependencies": { + "@frida/punycode": "^3.0.0", + "@frida/querystring": "^1.0.0" + } + }, + "node_modules/@frida/util": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@frida/util/-/util-1.0.3.tgz", + "integrity": "sha512-htcG3uDiRXv89ERVNNYhfase39kJ2X75ZARfrYcYEtJLFEsSk0nemM1YnEIR4CjrHvdvkWHrwgKkS+acOyoNEg==", + "dev": true + }, + "node_modules/@frida/vm": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@frida/vm/-/vm-2.0.0.tgz", + "integrity": "sha512-7fsjLWscZT5odNIBtg6qbLNI+vAk1xmii6H5W2kaYkMYt0vRohQEcDSUWacA+eaWlu5SvMjZI82Yibj/3G9pJw==", + "dev": true + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.14", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", @@ -111,6 +363,64 @@ "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", "dev": true }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -475,6 +785,26 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -497,6 +827,12 @@ "node": ">=8" } }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -540,6 +876,15 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "dev": true, + "engines": { + "node": ">=16" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -876,6 +1221,53 @@ "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true }, + "node_modules/frida-compile": { + "version": "16.4.1", + "resolved": "https://registry.npmjs.org/frida-compile/-/frida-compile-16.4.1.tgz", + "integrity": "sha512-xI9HNtUFpHxuKBGXaL6XJAYH1zWTvNJDrHRnz1hp0oS24iPHt6c01Jmm3qljZek3oQWn8HhvfNvrzfgbsKzoBQ==", + "dev": true, + "dependencies": { + "@frida/assert": "^3.0.1", + "@frida/base64-js": "^2.0.3", + "@frida/buffer": "^7.0.4", + "@frida/crosspath": "^3.0.0", + "@frida/crypto": "^1.0.1", + "@frida/diagnostics_channel": "^1.0.0", + "@frida/events": "^4.0.4", + "@frida/http": "^4.0.2", + "@frida/http-parser-js": "^1.0.0", + "@frida/https": "^1.0.0", + "@frida/ieee754": "^2.0.2", + "@frida/net": "^4.0.1", + "@frida/os": "^1.0.0", + "@frida/path": "^2.0.3", + "@frida/process": "^1.2.1", + "@frida/punycode": "^3.0.0", + "@frida/querystring": "^1.0.0", + "@frida/readable-stream": "^4.1.3", + "@frida/reserved-words": "^1.0.0", + "@frida/stream": "^1.0.2", + "@frida/string_decoder": "^2.0.0", + "@frida/terser": "^1.0.0", + "@frida/timers": "^3.0.0", + "@frida/tty": "^1.0.0", + "@frida/url": "^1.0.2", + "@frida/util": "^1.0.3", + "@frida/vm": "^2.0.0", + "commander": "^11.1.0", + "frida-fs": "^5.2.3", + "typed-emitter": "^2.1.0" + }, + "bin": { + "frida-compile": "dist/cli.js" + } + }, + "node_modules/frida-fs": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/frida-fs/-/frida-fs-5.2.5.tgz", + "integrity": "sha512-Eyb4OqUlcv1/Eq7Q+B9IZmYZIgIM2YjqDojrjmAGzPSSXBuUKwSkuObQcQ8Dup9JTOMIUcSII9/I8DaTe6LFKw==", + "dev": true + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -964,6 +1356,32 @@ "node": ">=8" } }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/ignore": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", @@ -1401,6 +1819,16 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "optional": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/semver": { "version": "7.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", @@ -1446,6 +1874,25 @@ "node": ">=8" } }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -1512,6 +1959,13 @@ "typescript": ">=4.2.0" } }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true, + "optional": true + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -1536,6 +1990,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/typed-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/typed-emitter/-/typed-emitter-2.1.0.tgz", + "integrity": "sha512-g/KzbYKbH5C2vPkaXGu8DJlHrGKHLsM25Zg9WuC9pMGfuvT+X25tZQWo5fK1BjBm8+UrVE9LDCvaY0CQk+fXDA==", + "dev": true, + "optionalDependencies": { + "rxjs": "*" + } + }, "node_modules/typescript": { "version": "5.4.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.2.tgz", diff --git a/scripts/package.json b/scripts/package.json index 2129be7..0168021 100644 --- a/scripts/package.json +++ b/scripts/package.json @@ -5,6 +5,7 @@ "@types/frida-gum": "^18.7.0", "@types/node": "~20.9.5", "eslint": "^8.57.0", + "frida-compile": "^16.4.1", "typescript": "^5.4.2", "typescript-eslint": "^7.2.0" } diff --git a/scripts/tsconfig.json b/scripts/tsconfig.json index 7c87082..5cf0047 100644 --- a/scripts/tsconfig.json +++ b/scripts/tsconfig.json @@ -2,11 +2,11 @@ "compilerOptions": { "target": "es2022", "module": "es2022", - "outDir": "out", "strict": true, "moduleResolution": "node", "lib": [ "es2022" - ] + ], + "noEmit": true } } diff --git a/scripts/utils.ts b/scripts/utils.ts index a3bd8e7..db1a3d5 100644 --- a/scripts/utils.ts +++ b/scripts/utils.ts @@ -1,23 +1,31 @@ function allocString(str: string): NativePointer { return Memory.allocUtf8String(str); } -function backtrace(): DebugSymbol[] { +global.backtrace = function backtrace(): DebugSymbol[] { const context = Process.enumerateThreads()[0].context; const backtrace = Thread.backtrace(context); const symbols = backtrace.map(address => { return DebugSymbol.fromAddress(address); }); return symbols; -} -function pauseAt(name: string): void { +}; +let resume = false; +global.pauseAt = function pauseAt(name: string): void { const addr = DebugSymbol.getFunctionByName(name); Interceptor.attach(addr, { onEnter() { - Thread.sleep(3600); + while (!resume) { + Thread.sleep(1); + } + resume = false; + console.log("Resumed"); } }); -} -function backtraceAt(name: string): void { +}; +global.resumeBreakpoints = function resumeBreakpoints(): void { + resume = true; +}; +global.backtraceAt = function backtraceAt(name: string): void { const addr = DebugSymbol.getFunctionByName(name); Interceptor.attach(addr, { onEnter() { @@ -28,8 +36,18 @@ function backtraceAt(name: string): void { console.log(JSON.stringify(symbols, null, 4)); } }); -} -function getFunc(name: string, ret: NativeFunctionReturnType, args: NativeFunctionArgumentType[]): NativeFunction { +}; +global.getFunc = function getFunc(name: string, ret: NativeFunctionReturnType, args: NativeFunctionArgumentType[]): NativeFunction { const addr = DebugSymbol.getFunctionByName(name); return new NativeFunction(addr, ret, args); +}; + +export { }; +declare global { + function allocString(str: string): NativePointer; + function backtrace(): DebugSymbol[]; + function pauseAt(name: string): void; + function backtraceAt(name: string): void; + function getFunc(name: string, ret: NativeFunctionReturnType, args: NativeFunctionArgumentType[]): NativeFunction; + function resumeBreakpoints(): void; }