import frida, time, subprocess
ADB="/opt/android-sdk/platform-tools/adb"
JS=r"""
function rd(p){try{if(p.isNull())return null;var l=p.add(8).readS32();if(l<0||l>200)return null;return p.add(0xc).readUtf16String(l);}catch(e){return "<e>";}}
function dumpList(L){try{ if(L.isNull())return "NULL"; var n=L.add(0xc).readS32(); var items=L.add(8).readPointer(); var out=[]; for(var i=0;i<n&&i<50;i++){var e=items.add(0x10+i*4).readPointer(); out.push(i+":"+rd(e));} return "count="+n+" ["+out.join(",")+"]"; }catch(e){return "dumperr "+e;}}
function ins(){var m=Process.findModuleByName("libil2cpp.so");if(!m)return false;var b=m.base;
 function T(f){try{f();}catch(e){send({warn:""+e});}}
 T(function(){Interceptor.attach(b.add(0xd3c44a),{onEnter:function(a){ send({info:"OnResponse err='"+rd(a[1])+"' recv="+dumpList(a[2])}); }});});
 T(function(){Interceptor.attach(b.add(0xd34fb9),{onEnter:function(a){ send({info:"DecodeResponse recv="+dumpList(a[1])}); },onLeave:function(){send({info:"DecodeResponse OK"});}});});
 T(function(){var ab=Process.findModuleByName("libc.so").findExportByName("abort");Interceptor.attach(ab,{onEnter:function(){send({info:"ABORT"});}});});
 send({info:"__ready"});return true;}
if(!ins()){var iv=setInterval(function(){if(ins())clearInterval(iv);},120);}
"""
dev=frida.get_usb_device(timeout=10)
pid=int(subprocess.run([ADB,"shell","pidof","se.foglo.svt"],capture_output=True,text=True).stdout.split()[0])
s=dev.attach(pid); sc=s.create_script(JS); t0=time.time()
sc.on("message",lambda mm,d: print("[%5.1f] %s"%(time.time()-t0,mm.get("payload",mm)),flush=True))
sc.load(); time.sleep(1.5)
subprocess.run([ADB,"shell","input","tap","690","730"]); time.sleep(4)
subprocess.run([ADB,"shell","input","tap","1350","960"]); time.sleep(12)
