Android逆向笔记-破解某APP签名摘要算法

Posted IT1995

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android逆向笔记-破解某APP签名摘要算法相关的知识,希望对你有一定的参考价值。

这里科普几个摘要算法,散列算法(签名算法)有:MD5、SHA1、HMAC

用途:主要用于验证,防止信息被修。具体用途如:文件校验、数字签名、鉴权协议

MD5:MD5是一种不可逆的加密算法,目前是最牢靠的加密算法之一,尚没有能够逆运算的程序被开发出来,它对应任何字符串都可以加密成一段唯一的固定长度的代码。

SHA1:是由NISTNSA设计为同DSA一起使用的,它对长度小于264的输入,产生长度为160bit的散列值,因此抗穷举(brute-force)性更好。SHA-1设计时基于和MD4相同原理,并且模仿了该算法。SHA-1是由美国标准技术局(NIST)颁布的国家标准,是一种应用最为广泛的Hash函数算法,也是目前最先进的加密技术,被政府部门和私营业主用来处理敏感的信息。而SHA-1基于MD5,MD5又基于MD4。

HMAC:是密钥相关的哈希运算消息认证码(Hash-based Message Authentication Code),HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。也就是说HMAC是需要一个密钥的。所以,HMAC_SHA1也是需要一个密钥的,而SHA1不需要。

这里使用JEB打开apk后,使用Ctrl + f进行搜索关键字符串:如X-Sign,看下对应的代码:

 

需要破解的就是这个X-Sign,从中可以看到,

这里X-Sign最后会放v0的字符串,而v0是:

最开始的v0来自:

 也就是不会变的,X-Device-ID。

而v2_2是

 从十进制10000到十进制99999的数,这个数在HTTP包头中的X-RandomNum

 这个v3是空字符串!

 这个v4_2是当前时间戳,在HTTP包头的X-TimeStamp有提现:

 最后加上一串死的字符串:

 随后进行SHA1签名算法:

 就是最后的X-Sign了。

这里可以猜到服务端是这么验证的:

从HTTP包头中拿到X-Device-ID,然后拿到X-RandomNum再拿到X-TimeStamp,随后与F403F982CA92F73AC142D50FFA69853D这个字符串进行SHA1进数据签名。这个值与X-Sign对比,如果一样,就认可这个操作了。

其中X-Device-ID和那一串字符(F403F982CA92F73AC142D50FFA69853D)是死的。这样就好模拟了,其中这个F403F982CA92F73AC142D50FFA69853D为32位,估计他是一个MD5摘要。

以上是关于Android逆向笔记-破解某APP签名摘要算法的主要内容,如果未能解决你的问题,请参考以下文章

Android逆向笔记-某水果大作战内购破解思路

什么是android逆向工程师

Android逆向:暴力破解APK签名校验,愉快的重新打包微信支付宝APK

Android逆向:暴力破解APK签名校验,愉快的重新打包微信支付宝APK

Android逆向:暴力破解APK签名校验,愉快的重新打包微信支付宝APK

Android逆向:暴力破解APK签名校验,愉快的重新打包微信支付宝APK