An helper library for those that want to play around with Unity il2cpp games.
An helper library for those that want to play around with Unity il2cpp games.
Tested on Windows but should easily work for Android / iOS too. I think only the Process.findModuleByName("GameAssembly.dll")!;
in il2cpp.ts
needs to be changed.
import { Il2CppClassWrapper } from "../../frida-il2cpp/lib/il2cpp_class";
import { il2cpp } from "../../frida-il2cpp/lib/il2cpp_globals";
import { Il2CppObject } from "../../frida-il2cpp/lib/il2cpp";
export class CS_List<T> extends Il2CppClassWrapper {
private _handle: Il2CppObject;
private _type: (new (instance: Il2CppObject) => T);
constructor (handle: Il2CppObject, type: (new (instance: Il2CppObject) => T)) {
super("System.Collections.Generic", "List`1", il2cpp.il2cpp_object_get_class(handle));
this._handle = handle;
this._type = type;
}
public size(): number {
return this.get_instance_value(this._handle, "_size").toInt32();
}
public count(): number {
return this.invoke_instance_method(this._handle, "get_Count", "int");
}
public item(index: number): T {
const addrIndex = Memory.alloc(4);
addrIndex.writeS32(index);
const result = this.invoke_instance_method(this._handle, "get_Item", "object", [
addrIndex
]);
return new this._type(result);
}
}
let players: CS_List<AO_PlayerInfo> = gameData.allPlayers();
for (let index = 0; index < players.count(); index++) {
const element: AO_PlayerInfo = players.item(index);
console.log(element.playerName());
}