注意!11.91.0-release.0(311910000)版本的X增强了LSposed开始检测内联钩子(Inline Hook)了!当发现LSposed修改了目标函数机器码会直接拒绝启动!如果你现在要hookX,必须开启Lsposed-设置的,还原内链钩子!
唉老马,为了让用户看广告,真的要做这么绝吗?
要知道之前X的11.82.0引入了PairIP谷歌加固(
t.me/CopyRightZGQInc/1887),导致现在X pico这样的修改版只能停留在11.81.0,到现在也没能破解PairIP(
github.com/crimera/twitter-a…),现在又引入了内链钩子检测,可恶啊老马,银行软件都没有这么恶心!!!
PairIP为什么这么难干?(
t.me/CopyRightZGQInc/1920)几乎全部的校验逻辑在JNI层,干JNI层比干Java层痛苦,这东西相当于一个黑盒,不是logcat逆向调试就能看出逻辑的,Java层就没多少逻辑,链接中出现的替换lib的方法只针对市面上的原生库加了个PairIP,而推特使用的是谷歌自己的libpairipcore. so,就是说不能用市面上的原生库源码编译一下替换进去。
再顺便说一下JNI相关的知识,这里引用网友“一只 傻猫”解释ffmpeg原生库的讲述:
mobile-ffmpeg其本质也是一种预制菜,ffmpeg用c写的,但app不认原始的c代码,只读的懂Java/Kotlin,那就得用ndk跨平台编译成共享库(.so,可以被Android加载和调用的二进制库)和写jni接口做java与c之间的翻译。其实就是一道做好了的预制菜,放微波炉加热就是加载和调用共享库,jni就是给app的说明书。
你可能还是听不懂,我换个比喻:
Java不需要知道c是怎么算的,可以理解成Java是日本人,c是中国人,Java发指令给c,c看不懂,JNI充当翻译官,c看懂了,吭哧吭哧算完,再把结果给JNI翻译,Java也就看懂了,重新编译实际上不算重新,还是做了特定适配用ndk从源码编译。