首页
社区
课程
招聘
[原创]调试小技巧:绕过apk安装时的签名验证
发表于: 2014-8-6 18:27 72244

[原创]调试小技巧:绕过apk安装时的签名验证

2014-8-6 18:27
72244

小菜第一次发帖,不知道这篇文章有没有意义,大家多多包涵,多多指点。本文所说的小技巧的作用只有一个,就是能让你重打包某些有签名验证的apk用于调试,除此之外,确实没什么用处,大牛们可以直接飘过了。

1、
      事情是这样的,最近在调试一个apk,有签名验证,验证方法是将签名信息发往服务器验证的,所以不能进行重打包。更变态的是,签名信息的获取是在.so里调用Java层的getPackageInfo实现的。
      最初的想法就是能hook住getPackageInfo,替换掉里面的签名信息。试过用xposed hook 函数getPackageInfo,但是没有成功,咨询过高人说是“动态加载的.so是没法hook住的”,所以这种方法就作罢了。还想过.so注入,定制rom等方法,但因自己都没有做过,就没有尝试。

2、
      其实自己一直有个想法,就是能不能把重打包之后的apk里的签名信息(RSA文件)换成原apk的签名信息,如果这样能安装成功的话,是不是就能突破这种签名验证了。
      在网上看到了一篇文章http://wendal.net/321.html,说通过修改services.jar能“移除apk的签名验证机制”,于是就试验了一下,把重打包过的apk里的CERT.RSA文件替换为原先apk里的CERT.RSA,然后按照作者的方法修改了services.odex(网上有对odex的修改方法),结果还是没有安装成功,但是直接修改odex的方法还是很不错的。错误的原因可能还是因为修改的函数不对引起的。于是,根据安装时报出来的错误INSTALL_PARSE_FAILED_NO_CERTIFICATES,还有Logcat里的堆栈信息,去源码里去找。最后定位到了出错的位置是在android4.0\libcore\luni\src\main\java\org\apache\harmony\security\utils\JarUtils.java中的verifySignature函数,在函数的最后:

if(!sig.verify(sigInfo.getEncryptedDigest())) {
               throw new SecurityException("Incorrect signature");
            }

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 3
支持
分享
最新回复 (24)
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
屌,学习了!
2014-8-6 21:56
0
雪    币: 738
活跃值: (3818)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
最新在学习安迪,mark
2014-8-6 22:49
0
雪    币: 37
活跃值: (43)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
可以写个Xposed插件,更为灵活,貌似现成的也有了。
2014-8-7 09:14
0
雪    币: 86
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
是有的,这个叫 DisableSignatrueCheck 的插件。话说,Xposed插件怎么开发。
2014-8-7 14:01
0
雪    币: 97
活跃值: (98)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
已更新,多谢提醒。 另外,确实有个插件是叫DisableSignatrueCheck ,但他hook的是compareSignatures函数,应该是对重打包系统的应用是有用的(我没试,猜的)。
2014-8-7 14:16
0
雪    币: 97
活跃值: (98)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
哈哈,共同学习。
2014-8-7 14:17
0
雪    币: 427
活跃值: (64)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
这个不错 支持一下
2014-8-9 20:05
0
雪    币: 35
活跃值: (139)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
9
mark,感谢分享,,,,=(:
2014-8-10 11:51
0
雪    币: 35
活跃值: (139)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
10
楼主把带有签名认证的apk,发出来吧.
2014-8-10 11:56
0
雪    币: 250
活跃值: (251)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
Xposed的确是个非常好非常方便的框架
2014-8-10 18:14
0
雪    币: 5
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
mark mark
2014-8-11 01:09
0
雪    币: 11
活跃值: (80)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
mark,感谢分享啊
2014-8-12 11:33
0
雪    币: 168
活跃值: (823)
能力值: ( LV10,RANK:173 )
在线值:
发帖
回帖
粉丝
14
厉害,下来慢慢研究
2014-8-12 16:27
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
最近也遇到类似问题,首先拜谢!请问楼主在调试哪款app遇到此问题的呢?
2014-8-13 10:53
0
雪    币: 4
活跃值: (781)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
看了帖子有一个疑问:为什么有签名验证就不能重新打包尼..顶多就是不能正常打开软件啊
2014-8-14 12:02
0
雪    币: 97
活跃值: (98)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
17
那是我说错了。可以打包。只不过不能正常运行。
2014-8-14 12:13
0
雪    币: 224
活跃值: (42)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
18
装个幸运破解器,里面有个功能叫“核心破解”
2014-8-14 23:37
0
雪    币: 195
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
支持一下,
2014-8-30 17:44
0
雪    币: 36
活跃值: (30)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
20
mark
2014-9-30 13:59
0
雪    币: 0
活跃值: (80)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
mark
2017-4-25 11:52
0
雪    币: 221
活跃值: (66)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
pzz
22
谢谢,学习了
2017-10-12 17:34
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
天天逛论坛,总觉得大家起点真高!一口一个小白小菜。学习四天的我貌似完全看不懂!那我是巨白?
2018-1-3 13:30
0
雪    币: 234
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
mark
2018-1-10 08:19
0
雪    币: 4883
活跃值: (18890)
能力值: ( LV13,RANK:317 )
在线值:
发帖
回帖
粉丝
25
感谢分享
2020-4-7 09:48
0
游客
登录 | 注册 方可回帖
返回
//