锦州市广厦电脑维修|上门维修电脑|上门做系统|0416-3905144热诚服务,锦州广厦维修电脑,公司IT外包服务
topFlag1 设为首页
topFlag3 收藏本站
 
maojin003 首 页 公司介绍 服务项目 服务报价 维修流程 IT外包服务 服务器维护 技术文章 常见故障
锦州市广厦电脑维修|上门维修电脑|上门做系统|0416-3905144热诚服务技术文章
Android中带你开发一款自动爆破签名校验工具kstools

作者: jiangwei212  日期:2017-05-23 20:15:42   来源: 本站整理

 一、技术回顾为了安全起见,一些应用会利用自身的签名信息对应用做一层防护,为了防止应用被二次打包操作,在之前已经介绍了很多关于应用签名校验爆破的方法,一条基本原则不能忘:全局搜索"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文件中即可。
说明:工具第一次发布,肯定有一些问题,请敬请的使用,提问题,如果在操作的工程中遇到任何问题请在小密圈留言提供错误样本,我好进行研究爆破!
五、工具开发流程总结到这里,我们就介绍完了,自动爆破签名校验工具的原理了,下面用一张图来总结一下:
下面在来说一下这个工具的缺点,其实就一点,对于一些加固的应用是没有效果的,本人尝试了一些加固app,最终都是失败的,不过这不代表就没有任何用了,因为不是所有的应用都会采取加固方式,只要不加固,那么这个工具就有效果,并且不管签名校验在哪都可以进行成功爆破。
Hook PMS代码下载地址:https://github.com/fourbrother/HookPmsSignature

kstools工具下载地址:https://github.com/fourbrother/kstools
六、总结本文主要介绍了一个通过hook需要爆破应用的pms服务,拦截获取签名信息的方法,来做到全局爆破签名校验功能逻辑,这个工具可以解决以往需要手动的反编译app来进行破解,有了这个工具,完全可以一键化操作功能,无需在进行反编译破解操作了



热门文章
  • 机械革命S1 PRO-02 开机不显示 黑...
  • 联想ThinkPad NM-C641上电掉电点不...
  • 三星一体激光打印机SCX-4521F维修...
  • 通过串口命令查看EMMC擦写次数和判...
  • IIS 8 开启 GZIP压缩来减少网络请求...
  • 索尼kd-49x7500e背光一半暗且闪烁 ...
  • 楼宇对讲门禁读卡异常维修,读卡芯...
  • 新款海信电视机始终停留在开机界面...
  • 常见打印机清零步骤
  • 安装驱动时提示不包含数字签名的解...
  • 共享打印机需要密码的解决方法
  • 图解Windows 7系统快速共享打印机的...
  • 锦州广厦电脑上门维修

    报修电话:13840665804  QQ:174984393 (联系人:毛先生)   
    E-Mail:174984393@qq.com
    维修中心地址:锦州广厦电脑城
    ICP备案/许可证号:辽ICP备2023002984号-1
    上门服务区域: 辽宁锦州市区
    主要业务: 修电脑,电脑修理,电脑维护,上门维修电脑,黑屏蓝屏死机故障排除,无线上网设置,IT服务外包,局域网组建,ADSL共享上网,路由器设置,数据恢复,密码破解,光盘刻录制作等服务

    技术支持:微软等