挂海论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
 友情提示:文字/图片广告均非网站意见,请担保交易勿直接付款,由此产生的责任自负
游戏交易就上寄售网-专注稳定-诚信赢天下玩游戏来117游戏网(H5不下载也能玩手游传奇,吃鸡,竞技都有)天下盾/国内/免实名/免备案CDN无视一切CC/DD攻击 找塔科夫作者TG @wuhao1954 QQ283931494 →入驻S9企业发卡网各种全黑号辅助群:475351077
██【我要租此广告位】██... .
查看: 7618|回复: 0
打印 上一主题 下一主题

[安卓分享] 爆破Android应用签名的一种好方法(实战Native+服务器验证)

[复制链接]

6

积分

121

主题

6

听众
已帮网友解决0 个问题
好评
-2
贡献
-115
海币
9
交易币
0
跳转到指定楼层
楼主
发表于 2017-5-8 09:59:40 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
提醒:若下载的软件是收费的"请不要付款",可能是骗子,请立即联系本站举报,执意要付款被骗后本站概不负责。(任何交易请走第三方中介,请勿直接付款交易以免被骗!切记).

友情提示:文字/图片广告均非本站意见,请担保交易勿直接付款,由此产生的责任自负!!!↑↑


一、常识回顾关于Android中的签名校验是一种很遍及的安全防护战略了,许多运用也都做了这部分的作业,在之前我也介绍了几篇关于怎么爆炸运用的签名校验疑问的文章,不了解的同学能够去检查:Android中爆炸运用签名校验功用,其时介绍完这篇文章以后,本来总结了如今爆炸签名校验的几种办法,其间最方便快捷的即是:大局查找字符串内容:“signature”,由于只需有签名校验功用,一定会调用体系的一个办法,而这个办法中即是包含了这个字符串内容。之前的这篇文章中介绍的签名校验处理办法也是如此,找到详细签名校验功用以后,直接更换准确的签名信息就可,或许把if判别手动改成true也能够。可是其时提到一个疑问,即是如今运用为了加强防护,几乎在主要的内容部分中都加了签名校验功用,所以假如要手动的改,就需求把每个签名校验的当地都得改一下,这么会显得很费力,有的人说了,有一个好的办法,即是用Xposed来hook这个运用的获取体系签名的办法,然后更换办法的回来值即可。这种办法是能够的,可是不是最佳的,由于假如你处理了签名校验,二次打包给他人用,不也许叫人家还root手机,然后在装Xposed结构功,是不合理的。所以咱们需求从根本上处理这个疑问,也是这篇文章介绍的一个要点。后面会介绍一种全能的高效办法。之前的文章中咱们能够看到,大多数签名校验都是在Java层,本地做的校验。所以爆炸难度不是很大,而今天咱们要介绍的一个运用样本他的签名校验是放在so中,并且联系了效劳端进行验证,难度加大。不过万变不离其宗,签名校验永远都是需求获取运用自身的签名信息,进行比对操作的。
二、爆炸签名校验下面就开端进入这篇文章的主题,看一下运用样本的签名校验疑问,拿到样本以后,直接反编译,二次打包,装置出现如下过错信息提示:
这个直接弹出对话框信息,点击断定就退出程序了,这个比较简略,反编译以后,经过提示内容,找到签名校验进口,在values/string.xml中找到这个字符串信息即可:
然后用Jadx翻开这个运用,大局查找这个name值:
点击进入代码方位即可:
看到i办法中有一个show办法,应当即是对话框展现的逻辑。看看这个i办法调用的当地:
看到了,在之前有一个判别,假如为false,即是走到i办法,展现对话框,所以这个checkHashKey办法必定是签名校验的办法,进入检查:
是个native办法,大局搜SocketJNI类调用的当地:
在这儿看到会加载一个so文件,也即是libmzd.so文件,咱们用IDA翻开这个文件(文件在反编译以后的libs目录下):
找到对应的native函数,检查详细逻辑代码:
为了十分好的阅览代码,运用F5,检查对应的C言语代码,这儿的逻辑十分简略,即是把Java层传递的签名字符串内容,在做一次MD5值,然后和指定的字符串"8f2a24...."作比对即可。那么上面传入到的checkHashKey办法的值是经过com.xiaoenai.app.utils.aj.m办法:
这儿看到即是规范的获取运用签名信息的办法。
到这儿就看到了一个Java层的签名校验办法,这儿处理这个疑问有许多种办法,能够修正对应的smali办法,把if判别强行改成true即可。还能够直接修正m办法的回来值为准确的签名字符串内容。这儿挑选第二种,由于咱们需求引证的签名字符串内容,后面会持续用到。这个获取办法也很简略,直接写一个Demo事例,经过运用包名构建出对应的Context变量,然后就开端获取签名信息即可:
运转这个demo程序,条件是你的设备中要装置一个官方版别的运用,这么才干获取到准确的签名字符串内容:
看到了,其间签名字符串:"aN+VCd8ns0yqsotX2WuKyScq/ZA=" 即是准确的官方版别的值。下面在趁便写一个直接回来这个字符串的办法,然后变编译得到对应的smali代码:
然后把这个办法的的代码复制更换样本运用的aj.m办法代码即可:
保留,二次打包即可,记住:这儿没必要手动的编写smali代码回来指定的签名字符串,除非你对smali语法十分熟悉了,不过我是不会这么做的。由于我不熟悉smali,最笨的最有用的办法即是自个手动写一个Java办法,然后反编译得到对应的smali代码即可。二次打包成功以后,装置运用,运转发现竟然还有过错,登录失利:
这时候,就想到了,样本运用也许做了效劳端数据验证,下面就来看看怎么处理这个疑问,这个疑问的突破口比较简略,不要在用提示字符串信息去找了,由于这过错信息也许是效劳端回来的,这时候就需求凭借抓包了,每次恳求一次,就抓一次效劳包,这儿用了Fiddler东西:
这儿看到,恳求的参数十分简略,一个加密以后的数据data和版别号ver,回来的数据提示加密签名过错,所以咱们能够在Jadx中大局搜"login2"字符串信息,找到突破口:
找到以后,双击进入代码:
看到终究调用了,a办法,点击进入a办法:
这儿会经过一个过程结构出一个json参数格局,持续往下看:
携带了这些信息参数值,为了十分好的看到这个json数据格局,咱们能够运用Xposed下一个hook功用:
然后运转这个Xposed模块,在点击样本的登录功用,检查日志信息:
看到了,result即是终究拼接好的json参数格局内容。其间终究一个字符串sig是将签名全部参数做一次加密操作,为了在效劳端校验参数的完整性。得到这个json格局以后,会调用com.xiaoenai.app.utils.b.a.a办法: 持续检查这个办法完结:
持续盯梢代码:
又是到了native办法了,到这儿本来前次Java将拼接好的参数信息以json格局传递到native层进行加密操作,持续看native层代码完结,仍然在之前的那个libmzd.so中:
找到对应的中心函数功用,盯梢检查完结:
持续盯梢:
这儿看到了,有data字符串内容了,也即是这儿开端对上面传递的json数据进行加密,然后拼接到data中,在native层在拼接一套json:{"data":"加密以后的值", "ver":"1.1"},而在这儿有一个寻觅加密key的函数,惋惜这儿我不在剖析了,由于我看的头疼,他的加密算法仍是比较杂乱的。所以就抛弃剖析了。那么到这儿,咱们有什么办法能够得到加密算法呢?有的同学也许想到了动态调试,这个办法是最佳的,可是这个app做了许多反调试战略,动态调试也是不好弄的,并且这个算法有点杂乱,及时动态调试,也要详细阅览arm指令,才干猜到这个加密算法功用。所以这条路不好走。那么还有别的办法了?当然有,即是文章最初提到的一句处理签名校验的根本规律:大局查找字符串"signature";在IDA中也是如此,运用Shirt+F12翻开so中的字符串窗口,然后查找signature:
公然找到了,双击进入:
看到这儿也许是在native层调用了体系获取签名的办法,选中赤色框中的内容,然后按X键,展现被调用的当地索引:
双击进入,这个即是咱们之前剖析的那个SocketJNI的init办法:
到这儿,为了十分好的阅览代码,需求把这个函数地址改成可读,也即是JNIEnv*即可,选中赤色框,按下Y键即可:
修正成JNIEnv*,断定即可:
这么就看的比较清楚了,而这部分代码也十分简略,即是调用体系获取签名的办法,然后赋值到一个变量中,不过这儿获取的不是字符串内容,而是int类型的hashCode值:
在回来到arm代码处,看到赋值,即是将R0寄存器值搞到R9中去。
到这儿,咱们一定要思路清楚,即是不论native层怎么加密,终究会运用运用的签名值来做加密的key信息。所以咱们只需处理掉获取签名信息值即可,也即是这儿的R9寄存器值,咱们还需求再一次去获取正版的签名信息的hashCode值即可:
然后运转,检查值:-2081383250
然后咱们能够修正上面的arm指令:MOV R9,R0;不过这儿还不好弄,由于这个hashCode值int类型四个字节,而这儿看到一个命令才2个字节,必定不够用。需求凭借LDR伪指令来进行操作了。可是这儿不做这么费力的修正了。由于假如别的当地也有这么的功代码,那么还得去修正,即是回到了咱们文章开端提到的那个疑问,要处理一切的签名校验功用,才是这篇文章的意图。
不过到这儿,咱们能够先这么尝试查验咱们的爆炸成果,即是凭借Xposed结构,hook这个运用获取签名的hashCode办法,将回来值更换成准确的-2081383250值:
修正以后,运转:
公然成功了,并且关于之前的去掉对话框那个逻辑也能够不用那么麻烦了,这么一来全部app一切的签名校验当地都是爆炸了。不过这种办法运用的是Xposed,所以不是终究计划。下面就来介绍一种高新技能来处理这个疑问。
三、高效的Hook爆炸办法不知道我们是不是还记得我之前介绍过一个体系篇系列文章,介绍怎么Hook体系的各个效劳,比方AMS,PMS等功用,然后在运用内进行阻拦activity发动的功用。不了解的同学能够看这篇文章:Android中Hook体系效劳功用;原理十分简略即是运用反射机制+动态代{过}{滤}理技能,更换体系效劳的Binder目标即可。这个技能好处是免root操作,缺陷是只能在运用内部进行操作运用。那有的人猎奇了,已然只能在运用自身内部有用,那有什么用呀?本来不然,如今有些开发场景就需求这个技能,及时如今没用到,将来也不一定,这不在这儿就用到了。下面咱们就用这个技能来Hook体系的PMS效劳,阻拦运用获取签名信息的办法。由于只需在本运用中操作,所以正好符合要求。操作过程很简略,咱们在样本运用发动的进口处,加上咱们的阻拦代码即可,那么下面咱们先把阻拦PMS效劳代码写好,这个代码下载地址文章结尾给出。
即是运用反射去hook体系的类,然后用动态代{过}{滤}理结构一个自个的PMS Binder进行更换即可:
在这儿咱们能够经过办法名来阻拦签名信息,咱们用正版的签名信息结构一个新的Signature目标,然后将其设置已有的目标中即可。由于咱们终究仍是需求把代码放到样本事例的进口处,所以就在这儿将这两个类放到样本进口类的包下面,详细包名能够手动结构:
然后将这个demo反编译,得到对应的smali代码,复制到样本事例对应的包下面,然后在样本事例的进口处加上办法调用:ServiceManagerWraper.hookPMS(this);对应的smali代码如下:invoke-static {p0}, Lcom/xiaoenai/app/ServiceManagerWraper;->hookPMS(Landroid/content/Context;)V
而样本进口能够从AndroidManifest.xml中的application找到:
在Application的onCreate办法进口增加即可,增加完结以后,二次打包,再次运用Jadx翻开修正以后的apk包:
进口处代码现已增加结束了。然后装置运转,就能够完结。而这么操作以后运用一切的签名信息即是准确的。包含native层的签名校验逻辑。所以这种办法是最靠谱的。不要改多处签名校验的逻辑了。
四、签名校验爆炸办法总结到这儿咱们就成功的爆炸了一款效劳端+Native双签名校验的样本事例了,而这次操作签名爆炸以后,后面将不会在介绍更多的签名校验了,因素很简略,由于这次操作以后,咱们发明晰一个通用的爆炸办法,能够处理签名校验疑问了,下面就来总结一下现阶段Android中签名校验逻辑处理办法:榜首、根本规律不能忘:大局查找字符串"signature",Java层能够用Jadx进行查找,so中能够用IDA进行查找。第二、在逆向领域中,字符串信息永远是榜首挑选的爆炸的突破口,在之前的文章我现已屡次讲到了,不论是IDA,仍是Jadx东西,只需大局查找要害字符串信息,就能够找到咱们想要的进口。第三、这篇文章的要点:发明晰一种全新的高效的爆炸运用签名校验逻辑,即是能够手动Hook样本运用的PMS功用,然后在运用的进口处加上hook代码。终究在hook的invoke办法中阻拦想要的办法即可。有了这篇文章的思路,后面会开发一个东西,一键式处理签名疑问,原理即是运用我之前介绍的 icodetools东西 和这篇文章介绍的hook体系PMS效劳,篡改运用签名信息。关于详细细节和东西开发敬请期待。假如此东西开发完结,那么关于签名校验的运用肯定是一个新的应战。安全不息,逆向不止!
严峻声明:这篇文章的意图只要一个,经过一个事例来剖析如今运用逆向剖析窍门,假如有人运用这篇文章内容进行任何商业意图和不合法牟利,带来的任何法律责任将由操作者自己承当,和这篇文章作者没有任何关系,所以仍是由衷的期望我们秉着技能学习的意图阅览此文,十分感谢!

Hook代码下载地址:https://github.com/fourbrother/HookPmsSignature
五、总结这篇文章介绍的内容稍微有点多,所以我们看的也许有点累,本来还有一部分内容没介绍,即是怎么拜访已有的so文件中的函数,变量值,这个是我在这个样本事例中用到的一个办法,限于篇幅因素就不多介绍了。可是一定要记住这篇文章的终究一种爆炸签名校验办法的办法。此等肯定高档正能量。


联系我时,请说是在 挂海论坛 上看到的,谢谢!



上一篇:我家移动网络50兆
下一篇:可自动爆破安卓签名校验的工具kstools 下载
免责声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关。一切关于该内容及资源商业行为与www.52ghai.com无关。

2、本站提供的一切资源内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。

3、本站信息来自第三方用户,非本站自制,版权归原作者享有,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

4、如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵犯你版权的,请邮件与我们联系删除(邮箱:[email protected]),本站将立即改正。

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

免责声明|Archiver|手机版|小黑屋|挂海论坛

GMT+8, 2024-5-4 22:49 , Processed in 0.299739 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.2

本站资源来自互联网用户收集发布,如有侵权请邮件与我们联系处理。xhzlw@foxmail.com

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