“7.0.15.1版某当劳,一点开就闪退,手机没root,也没装Xposed,纯粹因为后台偷偷跑了个Frida检测线程。
”
昨晚群里有人甩出这句话,炸出一堆同款受害者。
大家以为只是版本bug,其实是libDexHelper.so在搞鬼。
先说结论:
只要把检测线程函数nop成ret,APP秒变老实。
具体怎么逮住这条线程?
往下看。
第一步,找入口。
hookandroid_dlopen_ext,能抓到libmsaoaidsec.so和libDexHelper.so的加载顺序。
后者是某梆加固的看门狗,专门嗅Frida。
第二步,线程藏得深。
直接hook pthread_create抓不到,因为它底层调clone。
用Frida把clone也挂上,读线程控制块,地址就躺在偏移0xB0的位置。
打印出来一看,指向libDexHelper.so+0x1234,简单粗暴。
第三步,干掉检测。
IDA打开libDexHelper.so,找到那个0x1234函数,开头改成ret。
重新打包,签名不改,APP不再自杀。
libmsaoaidsec.so同理,换条无操作回调,闪退消失。
有人担心法律。
文章里那句“仅供学习交流”不是免责符,是真红线。
真拿去薅羊毛,后果自负。
最后留个小尾巴:
下次遇到别的加固,别急着hook java层,先盯clone。
底层比上层诚实,也更好骗。