Android静态安全检测 -> 密钥硬编码

密钥硬编码 - SecretKeySpec


一、API


1. 继承关系


【1】java.lang.Object

【2】javax.crypto.spec.SecretKeySpec


2. 主要方法


【1】SecretKeySpec(byte[ ] key, String algorithm)



【2】参考链接


https://developer.android.com/reference/javax/crypto/spec/SecretKeySpec.html


二、触发条件


1. 定位SecretKeySpec初始化方法的位置


【1】对应到smali语句中的特征

'Ljavax/crypto/spec/SecretKeySpec;-><init>([BLjava/lang/String;)V'


2. 方法内定位String.getBytes()的位置


【1】对应到smali语句中的特征

'Ljava/lang/String;->getBytes(Ljava/lang/String;)[B'


3. 取出String对应寄存器的名称V1


4. 赋值判断:const-string V1, "test123"


三、漏洞原理


【1】应用程序在加解密时,使用硬编码在程序中的密钥,攻击者通过反编译拿到密钥可以轻易解密APP通信数据


【2】更多内容


http://bbs.pediy.com/showthread.php?t=210263&highlight=密钥+钥硬+硬编+编码+码


四、修复建议


【1】密钥加密存储或者经过变形处理后用于加解密运算,切勿硬编码到代码中


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章