import frida, time, subprocess
ADB="/opt/android-sdk/platform-tools/adb"
JS=r"""
function il2str(p){ try{ if(p.isNull())return null; var l=p.add(8).readS32(); if(l<0||l>300)return null; return p.add(0xc).readUtf16String(l);}catch(e){return "<e>";} }
function ins(){ var m=Process.findModuleByName("libil2cpp.so"); if(!m) return false;
  var b=m.base; var EBX=b.add(0x1df6b7c);
  var slots={ "get#1[0x675c8]":0x675c8, "fetch-key[0x4d5c8]":0x4d5c8, "err[0x68994]":0x68994,
              "s[0x675cc]":0x675cc, "s[0x675c4]":0x675c4, "s[0x675d0]":0x675d0, "s[0x675d4]":0x675d4,
              "s[0x675d8]":0x675d8, "s[0x675bc]":0x675bc, "s[0x675c0]":0x675c0 };
  var out=[];
  for(var k in slots){ try{var p=EBX.add(slots[k]).readPointer(); out.push(k+" = "+il2str(p));}catch(e){out.push(k+" ERR");} }
  send(out.join("\n"));
  return true; }
if(!ins()){ var iv=setInterval(function(){ if(ins()) clearInterval(iv); },150); }
"""
dev=frida.get_usb_device(timeout=10)
r=subprocess.run([ADB,"shell","pidof","se.foglo.svt"],capture_output=True,text=True).stdout.split()
if not r:
    subprocess.run([ADB,"shell","monkey","-p","se.foglo.svt","-c","android.intent.category.LAUNCHER","1"],stdout=-3,stderr=-3); time.sleep(5)
    r=subprocess.run([ADB,"shell","pidof","se.foglo.svt"],capture_output=True,text=True).stdout.split()
pid=int(r[0]); s=dev.attach(pid); sc=s.create_script(JS)
sc.on("message",lambda m,d: print(m.get("payload",m),flush=True)); sc.load(); time.sleep(2)
