mao
mao
你给的那个报错信息不全,按理后面应该还有错误信息
.so自己保留一份没有strip过的,然后根据崩溃栈用ndk-stack得到源码位置,再根据转换后源码位置对应的native方法名确认java方法
绕过那些方法,具体不清楚怎么发生的,一般遇到这类绕过就行了。修改规则文件
也可能不是这个方法产生的,是之前一些复杂的jni调用,导致在这里刚好触发bug, 调用它的也一并绕过
com.lucent.easy.help.AssistUtil.T0这个方法经过混淆了,可能需要通过mapping.txt,找到混淆前的名称。
转换后,看不出原本java代码,opcode及各种索引都变化了,你可以贴这个类的smali或者反编译的java,我尝试去写测试,看看能重现bug吗
那就算了,绕过对应方法就行。
规则只实现了指定需要转换的类及方法,其他没有实现。其他功能可以自己去实现那个过滤接口。
找之前的issue有相关讨论, 要加固androidx相关,自己改so加载位置到自定义application里。顺便说一句加固开源库没任何意义,还能让人简单找到opcode映射表。这种跟那些隐藏dex的加固有很大的不同,弄清楚基本原理再使用。
> > 找之前的issue有相关讨论, 要加固androidx相关,自己改so加载位置到自定义application里。顺便说一句加固开源库没任何意义,还能让人简单找到opcode映射表。这种跟那些隐藏dex的加固有很大的不同,弄清楚基本原理再使用。 > > 有参考的代码可以看看吗? 可以看以前代码,最初就是在自定义application里注入的静态初始化方法里System.loadLibrary("libnmmp.so")。后面更新才在NativeUtils里加载so,目前只是推测原因(两个类互相引用,类加载时导致静态初始化方法还没执行就提前调用本地方法,然后报错找到不到native方法)。简单解决就是忽略一些类,打断这种循环引用,或者前面提到的自定义appliction里加载so