赞
踩
最近在学习frida的时候,同一个so文件,其他函数可以拦截,但是唯独拦截其中一个的时候,会出现 Process terminated,找了下资料,网上也没说是什么原因,经过自己研究发现,原来是hook到了未导出的函数,虽然拿到了so基址+偏移,但还不是不够的,还要让偏移+1,是因为thumb和arm指令的区分,地址最后一位的奇偶性来进行标志,所以这里还需加1也就是最终的地址,这一点很重要不管使用Cydia还是Frida都要注意最后计算的绝对地址要+1,不然会报错的。
- var str_name_so = "libcocos2dlua.so"; //需要hook的so名
- var n_addr_func_offset = 0x03548E4 + 1; //需要hook的函数的偏移
- var n_addr_so = Module.findBaseAddress(str_name_so); //加载到内存后 函数地址 = so地址 + 函数偏移
- var n_addr_func = parseInt(n_addr_so, 16) + n_addr_func_offset;
- var ptr_func = new NativePointer(n_addr_func);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。