开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 16648|回复: 1
收起左侧

[Android逆向] Android中带你开发一款自动爆破签名校验工具kstools

[复制链接]
发表于 2021-11-10 21:35:47 | 显示全部楼层 |阅读模式   湖北省武汉市
一、技术回顾
为了安全起见,一些应用会利用自身的签名信息对应用做一层防护,为了防止应用被二次打包操作,在之前已经介绍了很多关于应用签名校验爆破的方法,一条基本原则不能忘:全局搜索”signature”字符串,这里可以在Jadx打开apk搜索,也可以在IDA中打开so搜索都可以。找到这信息之后可以手动的修改校验逻辑,但是这个法则有个问题,就是如果一个应用在代码中很多地方都做了签名校验,比如以前介绍的一篇爆破游戏文章:Android中爆破应用签名信息案例分析,那时候就会发现,应用在很多地方都做了签名校验,当时的解决办法是一个一个地方修改,这样会感觉操作非常繁琐,所以本人就发明了一个比较好的办法,就是直接hook应用的pms服务,拦截其获取签名的方法,然后替换正确的签名信息即可。这个技术得益于之前介绍的技术:Android中免root进行hook应用自身的系统服务,这个技术原理非常简单,就是借助于动态代理技术+反射机制即可。而这个技术正好可以用于这次自动爆破功能,我们只需要在程序的入口处添加这段hook代码即可。关于这个技术,在上一篇的文章中已经实践过了:Android中爆破应用签名校验的新姿势。在那篇文章中我结尾说到了,这样的操作步骤可以完全自动化,所以这篇文章就把这个操作步骤变成自动化,开发一款一键化操作工具,我将其命名为:kill_signed_tools(简称:kstools);
二、工具流程开发
在介绍这个工具开发之前,我们还必须了解一个知识点,就是我在之前开发的一个自动注入代码工具icodetools的原理,不了解的同学可以去查看这篇文章:Android中自动注入代码工具icodetools原理解析,主要利用asm技术和dex2jar工具进行操作的。因为本文我们需要在应用的入口插入hook代码,所以也需要这样类似操作。原理和准备工作已经介绍完了,下面开始正式的开发流程:
第一步:获取应用正确签名信息
因为我们在后面hook代码之后拦截签名方法,得返回应用本身正确的签名信息,所以得在第一步中就要获取应用签名信息,这个网上有很多代码可以直接获取apk文件的签名信息,这里不多说了。
第二步:获取应用入口信息
这个需要借助AXMLPrinter.jar工具来进行解析apk文件中的AndroidManifest.xml文件信息,然后获取程序入口,这里采用PullXML解析方式,需要注意的是:应用的入口一般有两处,一个是自定义的Application,一个是启动Activity。所以这里解析的时候,优先判断有没有自定义的Application入口,如果没有,就获取启动的Activity即可。找到入口之后一定要获取入口类的完整名称即:包名+类名。
第三步:插入hook功能代码
借助于icodetools工具,以及第二步中获取到的程序入口类信息,开始动态插入hook代码,这里需要注意的是:最好是在attachBaseContext方法中进行添加即可,如果入口类没有实现这个方法,可以在onCreate方法中添加,但是一定要在方法的第一行代码处添加。插入的asm代码也很简单,可以利用Bytecode插件进行查看即可:

我们只需要将这段asm代码添加到入口处即可:

而这里的ServiceManagerWraper类后面会给出下载地址。
第四步:二次打包签名
这个中间还有很多步骤,比如讲jar转化成dex,再把dex替换到apk中,这个过程在icodetools中已经有了,完全一样,这里就没必要在介绍了,最后一步都是二次打包签名操作。
三、hook代码分析
到这里我们就把操作步骤流程介绍完了,下面在来介绍关于hook代码逻辑,hook代码比较简单,就两个类,一个是反射类,一个是动态代理类,下载地址后面会给出:

这里的代码非常简单,通过传入的Context变量,利用反射机制替换服务的Binder对象,然后就是动态代理对象:

拦截获取签名信息的方法,替换正确的签名信息即可。然后将这两个类编译得到对应的class文件,放到工具目录下:

所以最终的工具目录是这样的结构,只要将操作的apk文件拷贝到这里,改名为src.apk,然后运行kstools.bat即可:

这个运行操作和icodetools操作一模一样,运行完成之后,会生成一个signed.apk签过名的,还有一个没有签名的unsigned.apk文件,如果想自己签名,可以利用这个文件即可。

这时候我们可以用Jadx工具查看signed.apk文件:

添加成功了。
四、工具使用说明
从github上弄下来的工具目录如下:

因为现在很多app做了加固操作,所以这里需要注意这么几个问题:
第一个问题:如果发现app加固了,第一步你得先脱壳,再次说明,本工具不适合加固app,需要自己手动脱壳修复apk才能继续操作。加固app操作,先把加固app放到当前目录下,直接拖动apk文件到apksign.bat上运行,获取正确的签名信息,会保存到apksign.txt文件中,然后再去脱壳修复apk,在放到当前目录下命名为src.apk,然后在此运行kstools.bat文件即可。操作过程不可错乱,不然会出错。
第二个问题:如果发现app没有加固,那么就直接将apk命名为src.apk放到当前目录下,直接运行kstools.bat即可,这里又要注意啦,如果直接运行kstools工具的话,当前目录可能存在你上次操作加固的app存留的apksign.txt文件,这时候需要手动删除,切记,不然也是操作失败的。
第三个问题:不要问怎么区分是加固的还是没有加固的,这个技能小学生都会了,这里不介绍了。
第四个问题:在获取app签名信息失败的时候,怎么办?我们需要手动的去获取,这里方法很多,可以用Android中的这段代码即可:

这样就可以得到签名信息了,然后再把签名信息拷贝到目录的apksign.txt文件中即可。
说明:工具第一次发布,肯定有一些问题,请敬请的使用,提问题,如果在操作的工程中遇到任何问题请在小密圈留言提供错误样本,我好进行研究爆破!
五、工具开发流程
这样就可以得到签名信息了,然后再把签名信息拷贝到目录的apksign.txt文件中即可。
说明:工具第一次发布,肯定有一些问题,请敬请的使用,提问题,如果在操作的工程中遇到任何问题请在小密圈留言提供错误样本,我好进行研究爆破!
下面在来说一下这个工具的缺点,其实就一点,对于一些加固的应用是没有效果的,本人尝试了一些加固app,最终都是失败的,不过这不代表就没有任何用了,因为不是所有的应用都会采取加固方式,只要不加固,那么这个工具就有效果,并且不管签名校验在哪都可以进行成功爆破。
Hook PMS代码下载地址:https://github.com/fourbrother/HookPmsSignature
kstools工具下载地址:https://github.com/fourbrother/kstools
六、总结
本文主要介绍了一个通过hook需要爆破应用的pms服务,拦截获取签名信息的方法,来做到全局爆破签名校验功能逻辑,这个工具可以解决以往需要手动的反编译app来进行破解,有了这个工具,完全可以一键化操作功能,无需在进行反编译破解操作了

头像被屏蔽
结帖率:0% (0/5)
发表于 2021-12-10 21:49:50 | 显示全部楼层   广东省汕尾市
寻求Android或IOS开发合作 游戏:未来之役
要求:绘制或内存功能 保量!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表