frida-il2cpp-bridge-my
Version:
(my:Support IOS)Frida module to dump, manipulate and hijack any IL2CPP application at runtime with a high level of abstraction.
49 lines (48 loc) • 1.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Accessor = exports.filterAndMap = void 0;
const fastest_levenshtein_1 = require("fastest-levenshtein");
const console_1 = require("./console");
exports.filterAndMap = Symbol();
class Accessor {
constructor(keyClashProtection = false) {
return new Proxy(this, {
set(target, key, value) {
if (typeof key == "string") {
let name = key;
if (keyClashProtection) {
let count = 0;
while (Reflect.has(target, name))
name = key + "_" + ++count;
}
Reflect.set(target, name, value);
}
else {
Reflect.set(target, key, value);
}
return true;
},
get(target, key) {
if (typeof key != "string" || Reflect.has(target, key))
return Reflect.get(target, key);
const closestMatch = fastest_levenshtein_1.closest(key, Object.keys(target));
if (closestMatch)
console_1.raise(`Couldn't find property "${key}", did you mean "${closestMatch}"?`);
else
console_1.raise(`Couldn't find property "${key}"`);
}
});
}
*[Symbol.iterator]() {
for (const value of Object.values(this))
yield value;
}
[exports.filterAndMap](filter, map) {
const accessor = new Accessor();
for (const [key, value] of Object.entries(this))
if (filter(value))
accessor[key] = map(value);
return accessor;
}
}
exports.Accessor = Accessor;