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

一、技术回顾

为了安全起见,一些应用会利用自身的签名信息对应用做一层防护,为了防止应用被二次打包操作,在之前已经介绍了很多关于应用签名校验爆破的方法,一条基本原则不能忘:全局搜索”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来进行破解,有了这个工具,完全可以一键化操作功能,无需在进行反编译破解操作了

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容