首页
社区
课程
招聘
[原创]Android强调native函数的两种方法
发表于: 2020-4-29 15:26 8637

[原创]Android强调native函数的两种方法

2020-4-29 15:26
8637

原文链接 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


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 2
支持
分享
最新回复 (9)
雪    币: 24
活跃值: (77)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
大佬牛逼!!! 
2020-4-29 15:32
0
雪    币: 2
活跃值: (430)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
大佬学习了
2020-4-29 15:36
0
雪    币: 0
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
牛批!!!学习了
2020-4-29 15:48
0
雪    币: 1467
活跃值: (1054)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
5
好厉害
2020-4-29 15:55
0
雪    币: 2968
活跃值: (319)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6

总结的很好~ 

编辑掉~

最后于 2020-4-30 11:38 被deff编辑 ,原因: 修改内容~
2020-4-30 11:23
0
雪    币: 2013
活跃值: (1301)
能力值: ( LV4,RANK:55 )
在线值:
发帖
回帖
粉丝
7

哈哈哈,是朋友们出来吹捧一下,开玩笑

最后于 2020-4-30 11:30 被Night_elf编辑 ,原因:
2020-4-30 11:28
0
雪    币: 2968
活跃值: (319)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
Night_elf 哈哈哈,是朋友们出来吹捧一下,开玩笑
这样啊,哈哈哈~那我的问题,我编辑掉~
2020-4-30 11:34
0
雪    币: 137
活跃值: (410)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
大佬威武
2020-5-21 02:41
0
游客
登录 | 注册 方可回帖
返回
//