A-A+

逆向APP 分析token加密方法 伪造签名

2021年04月11日 17:56 漏洞安全 评论 1 条 阅读 172 views 次

【注意:此文章为博主原创文章!转载需注意,请带原文链接,至少也要是txt格式!】

好久没有这么认真努力研究学习了,研究到深夜2点多,早晨6点半起来就开始继续研究,没办法,JAVA功底实在没有,过程中学到了N多知识点,争取这篇全部照顾到位!!!

找到关键加密点的具体方法请看:某 APP 数据传输 内部加密签名方法分析

分析各个节点

通过搜索发现位置定位在:classes2.dex

具体的点在:com.haxxxxng.customapplication.ui.rkhy.service.HitCardSearvice.hitCard

如下图:

入口点函数hitCard

具体代码就不贴了,直接看图,这里提交参数有radia、type、device、token这四个,与之前抓包提交的参数一致!那大概率就是这里了。通过这里分析:

radia的值为参数2(String paramString2)

token的值为参数1(String paramString1)

type的值为0

device的值为获取当前设备ID的函数

至此所有参数来源都分析完毕了,那下一步找到调用点,即可查看到paramString1、paramString2的来源,通过搜索发现,如下图:

调用POST接口处

框里都是废话,因为一款破工具,导致走了很多很多弯路!!!!!!!!!!!!!

定位代码到一个私有函数位置,如下图:

私有调用函数

这就很明显了:

radia = this.mRadia

token = HitUtils.kwGenerateToken(this.mLongitude, this.mLatitude, Long.toString(l))

 

this.mRadia 这个应该是半径或者说距离的意思吧,,,因为不是分析重点,所以。。。。

重点的来了,如果要分析token,那么需要了解两个方,第一个是this.mLongitude,this.mLatitude,Long.toString(l)这三个参数分别是什么值,从哪里来。

this.mLongitude,this.mLatitude是非常好分析的,字面意思就很简单,经度纬度,通过抓包确定了经度、纬度的值,如下图:

经纬度值分析

上面的内容为什么要引用,因为错了!!!这里面是一个大坑!!!里面的代码分析用到的工具是“jd-gui”,这个工具真心垃圾,就因为它把我带跑偏了,坑了我好久好久。这里推荐:luyten、jadx这两款工具都比上面的强好多。。。

 
后续内容已隐藏!!!只有以诚相待,才会不虚此行。

最终本文参考了以下资料:

python3 利用 pycryptodome 实现(ECB模式)对称加密 – AES(256)加密,pkcs7补全方式

Python Crypto AES加密模式踩坑记

Python 使用DES加密(PKCS5Padding)

Python 实现 AES 加密 进行 PKCS5Padding 的填充

Python 使用 DES 加密\解密 PAD_PKCS5

pyDes库 实现python的des加密

pyDes 实现 Python 版的 AES DES 对称加密/解密

JAVA AES算法

python2 与 python3 str bytes问题

Java使用Cipher类实现加密,包括DES,DES3,AES和RSA加密

JDK安全模块JCE核心Cipher使用详解

java secretkey用法_Java SecretKeyFactory.generateSecret方法代码示例

布施恩德可便相知重

微信扫一扫打赏

支付宝扫一扫打赏

×

1 条留言  访客:1 条  博主:0 条

  1. gdd

    心累哦。

给我留言