Frida下so注入(动态加载)

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目录)

1

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

2

编写mk(配置文件)

3

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

4

将so push至android temp目录

5

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

7

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

8

点赞
收藏

评论区

加载中...

相关推荐

某汽车社区App 签名和加解密分析 (二) : Frida Dump so

一、目标App安全的主战场在Native层,分析Native层的so,最趁手的兵器就是Frida和Unidbg了。今天我们的目标是某汽车社区Appv8.0.1so的分析。二、步骤特征字符串定位我们在上一篇教程已经定位了,数据加密和解密函数再java层的位置。按照常理来说,这个java类文件中,应该有个System.loadLibrary("

Android so注入(inject)和Hook技术学习(一)

  以前对Androidso的注入只是通过现有的框架,并没有去研究so注入原理,趁现在有时间正好拿出来研究一下。  首先来看注入流程。Androidso的注入流程如下:_attach到远程进程保存寄存器环境获取目标程序的mmap,dlopen,dlsym,dlclose地址远程调用mmap函数申请内存空间用来保存参

JNI线程、Linux常用命令、权限、防火墙配置

JNI\_OnLoad:调用System.loadLibrary()函数时,内部就会去查找so中的JNI\_OnLoad函数,如果存在此函数则调用。JNI\_OnLoad会:告诉VM此native组件使用的JNI版本。​对应了Java版本,android中只支持JNI\_VERSION\

Feign请求响应结果被截取com.fasterxml.jackson.core.io.JsonEOFException

在生产环境使用feign调用外部接口时,偶尔会出现下面错误2020101511:00:18,535ERRORcom.shein.abc.rmp.controller.RecExplainConfigControllerrec_explain_query.failffeign.codec.DecodeExc

Android So动态加载 优雅实现与原理分析

背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我

Android so注入(inject)和Hook技术学习(二)——Got表hook之导入表hook

  全局符号表(GOT表)hook实际是通过解析SO文件,将待hook函数在got表的地址替换为自己函数的入口地址,这样目标进程每次调用待hook函数时,实际上是执行了我们自己的函数。  GOT表其实包含了导入表和导出表,导出表指将当前动态库的一些函数符号保留,供外部调用,导入表中的函数实际是在该动态库中调用外部的导出函数。  这里有几个关键点要