背景
无论是IOS还是Android都存在手动动态加载库的操作,如Android使用System.loadLibrary()
动态加载so文件,IOS动态加载framework等,因此使用Frida进行Hook时,会提示找不到Module,因此需要延时Hook或者Hook动态加载函数进行适配。
解决方案
Android
- 如果不在意时效性,启动时不加“–no-pause”,可以等一段时间后,手动”%resume”
- 使用setTimeout(func, delay) 函数延时
- 使用frida的Module.load()或Module.ensureInitialized()来手动加载lib
- hook libart.so中的LoadNativeLibrary()或java层的System.loadLibrary(),判断加载完成特定so后,再进行后续的hook。
function readStdString(s