首页
社区
课程
招聘
[求助]修改包名后找不到jni接口
发表于: 2014-3-16 14:13 11278

[求助]修改包名后找不到jni接口

2014-3-16 14:13
11278
最近在修改一个apk,其中有个so库。包名改了之后,可以正常编译,也可以安装。但是在调用jni接口的时候提示找不到对应接口。
然后我直接修改了so的符号表,因为没有gcc的环境,所以是hex直接改的。根据我的理解应该是改的符号表。但是还是提示找不到对应jni接口。
真想不明白是什么原因了,希望有高手指点下。

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

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 7
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
没人吗?
2014-3-16 18:40
0
雪    币: 7
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
ida反编译so后,函数名确实也改了,可为什么就报找不到函数呢?到底为什么呢?
2014-3-16 23:09
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
so里的函数名有规则的,根据包名路径+类名+函数名的方式命名。改了包名需要连so的头文件重新生成
2014-3-18 09:33
0
雪    币: 47
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
顶楼上。要逆向,首先要会写啊。
2014-3-18 09:39
0
雪    币: 53
活跃值: (280)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
如果不是通过Jni_onload动态注册的方法映射表的话,
则默认java方法、JNI中的该方法对应的函数名有绑定关系的
改了包名,用javah重新对class文件生成一次C头文件,就能看到结果了
2014-3-18 14:51
0
雪    币: 7
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
很感谢你的回复。
我这里修改后so里的函数名是符合jni的命名规则的,这个用ida反编译so后可以看到对应的导出函数。
2014-3-18 23:23
0
雪    币: 7
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
你说的绑定关系,这个我也有怀疑过。如果有这个绑定关系,那么apk里应该会有相应的数据体现把,比如哪个文件或者什么表之类的,但是我都没有找到。
倒是有一个service应该是起到了java到jni接口的连接工作,但这个service的名称我也改了,似乎也没其作用。
不知道你能不能指出这个绑定关系具体在哪里隐藏的,或者体现的哪里。
2014-3-18 23:27
0
雪    币: 53
活跃值: (280)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
http://blog.csdn.net/androidsecurity/article/details/8978980
2014-3-19 22:03
0
雪    币: 2
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
调用so文件的类不要修改包名,自己写一个类继承他,这个类可以任意包名。
2014-3-24 08:50
0
游客
登录 | 注册 方可回帖
返回
//