原文链接 https://yunnigu.dropsec.xyz/2020/04/29/Android%E5%BC%BA%E8%B0%83native%E5%87%BD%E6%95%B0%E7%9A%84%E4%B8%A4%E7%A7%8D%E6%96%B9%E6%B3%95/#more
在逆向分析APP的过程中,经常会遇到native函数调用,有些是可以通过正常的IDA动态调试分析其函数逻辑算法等,但有些函数由于多线程造成调试不便,甚至由于ollvm等混淆造成逆向困难就需要自行调用native函数实现想要的结果。
一般普通的native函数都是有导出函数的,因此只要找到导出函数名即可调用该native函数。
首先在java层找到native函数的调用
接下来在so中导出函数中该native函数
自己写一个带按钮的APP,调用该函数
模拟原APP调用类调用native函数
将libAes.so及其依赖库libstlport.shared.so放入jni目录,并编写mk文件配置。
里面写#include<jni.h>即可
最后将APP安装到手机上运行即可输出调用结果
在逆向过程中还会遇到很多APP动态注册native函数,甚至是将导出函数隐藏的,就无法使用上述的调用方案了,本方案是通过函数地址来调用native函数,理论上只要找得到native函数在so中的地址就可以实现调用。
在java层找到native函数,确定其传入参数类型及个数
kxtmp函数是动态注册函数,现在字符串中搜索函数名,之后通过回溯找到函数注册地址
本方案主要是通过自己编写的so调用native函数所在的so,自己的so名为hookso
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
总结的很好~
编辑掉~
哈哈哈,是朋友们出来吹捧一下,开玩笑
Night_elf 哈哈哈,是朋友们出来吹捧一下,开玩笑