from frida import * import sys import threading import time
defkill(pid): device.kill(pid)
device = get_local_device() res = []
for i inrange(2501, 5005): try: pid = device.spawn(["./unstoppable"]) session = device.attach(pid) except ProcessNotFoundError: print(f"[!] {i:04x} Process not found, skip") continue
js_code = f""" var baseOffset = 0x555555554000; var initopPtr = Module.getBaseAddress("unstoppable").sub(baseOffset).add(0x5555555596A0); var input = {i}; var initop = new NativeFunction(initopPtr, 'int64', ['pointer', 'pointer']); var opBuf = Memory.alloc(0x1000); var oplist = Module.getBaseAddress("unstoppable").sub(baseOffset).add(0x55555556D110); initop(opBuf, oplist.add(30 * input)); var vmPtr = Module.getBaseAddress("unstoppable").add(0x5890); var vm = new NativeFunction(vmPtr, 'int64', ['pointer']); var result = vm(opBuf); send(result); """
var qpow = newNativeFunction(QpowPtr, 'uint64', ['pointer', 'uint64', 'uint64']); var mod = newNativeFunction(ModPtr, 'uint64', ['pointer', 'uint64', 'uint64']);
var seed = uint64(1); var junk = Memory.alloc(0x10);
for (var i = 0; i < blist.length; i++) { var j = blist[i][1]; var a = uint64(primelist[j]); var b = uint64(blist[i][0]); try { var tmp = qpow(junk, a, b); seed = mod(junk, seed, tmp); console.log("seed[" + i + "] = " + seed); } catch (e) { console.error("error at i=" + i, e); break; } } console.log("seed = " + seed); send(seed); });