免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!
内容参考于:图灵Python学院
工具下载:
链接:https://pan.baidu.com/s/1bb8NhJc9eTuLzQr39lF55Q?pwd=zy89
提取码:zy89
复制这段内容后打开百度网盘手机App,操作更方便哦
上一个内容:30.安卓逆向2-frida hook技术-hook So文件(获取app加载的所有模块、导入函数、导出函数、hook SO函数)
上一个内容里hook了nativeMessage方法,它是一个无参带有返回值的方法,然后上一个内容里有两个方法,接下来就来hook第二个nativeSum方法,这是一个有两个参数的方法
function hookSo函数(){/*** findExportByName函数用来在指定so文件中查找一个函数的地址* libnative-lib.so 文件名* Java_com_luoge_com_MainActivity_nativeMessage so文件中的函数名*/var addr = Module.findExportByName("libnative-lib.so","Java_com_luoge_com_MainActivity_nativeSum");console.log(addr);Interceptor.attach(addr,{onEnter: function(args){console.log("函数调用:");// 第一个参数是JNIEnv*,第二个是jobject这俩是jni传的,现在我们不用管// 将jstring转换为JavaScript字符串var strArg1 = Java.cast(args[2], Java.use('java.lang.String'));console.log("第一个String参数:", strArg1);var strArg2 = Java.cast(args[3], Java.use('java.lang.String'));console.log("第二个String参数:", strArg2);},onLeave: function(retval){// 同样使用Java.cast处理返回值var stringClass = Java.use('java.lang.String');var strResult = Java.cast(retval, stringClass);console.log("原始返回值:", strResult.toString());// 修改返回值var env = Java.vm.getEnv();var jstring = env.newStringUtf("frida hook native 你要的jstring");retval.replace(ptr(jstring));//修改返回值}});}
hookSo函数();

