WinanDH
-
目的:
解决frida new主动调用so函数,调用次数过多出现程序崩溃问题。解决函数外部调用耗时过长问题 -
环境:
frida version == 12.8.0 、某汽车故障诊断设备
frida hook 部分测试代码
1function FUNC_0006(){ 2 var libUSAFORD_FILEPTR = Module.findExportByName("libUSAFORD_FILE.so", "LAUNCH_FORD_READFILE_FUNC_0026") 3 var MYlibUSAFORD_FILEPTR = new NativeFunction(libUSAFORD_FILEPTR, 'int', ['int','int','pointer']); 4 var out=Memory.alloc(0x600) 5 var zero="000" 6 for(var i=0xc400;i<0xc500;i++){ 7 var dtccode="" 8 var index="" 9 10 if(i>0x7fff) 11 i-=0x10000 12 13 MYlibUSAFORD_FILEPTR(i*0x10000,0,out) 14 var data=new Uint8Array(ArrayBuffer.wrap(out, 8)) 15 16 if(i>=0x0&&i<0x10) 17 console.log("dtccode:000"+(i.toString(16)).slice(-6)+"0000") 18 if(i>=0x10&&i<0x100) 19 console.log("dtccode:00"+(i.toString(16)).slice(-6)+"0000") 20 if(i>=0x100&&i<0x1000) 21 console.log("dtccode:0"+(i.toString(16)).slice(-6)+"0000") 22 if(i>=0x1000&&i<0x10000) 23 console.log("dtccode:"+(i.toString(16)).slice(-6)+"0000") 24 for(var m=7;m>3;m--){ 25 index+=("00"+data[m].toString(16)).slice(-2) 26 } 27 console.log("index:"+index) 28 } 29}
下载 android NDK
ndk 目录下创建jni及libs文件夹 (下面cpp及mk文件存放在jni中,生成的so存在libs目录)

将frida hook 函数编写成cpp(功能函数),测试函数为遍历某中文文件地址索引

编写mk(配置文件)

cmd启动 ndk-build,编译生成新的so

将so push至android temp目录

调用cpp中的输出函数,保存至999.txt

启动 frida hook,Module.load 加载编译好的so ,并测试

