-
-
[旧帖] [求助]反编译一个apk后发现有签名验证,求大神了。 0.00雪花
-
发表于: 2014-3-28 14:17 1326
-
代码如下,一头雾水啊
.method private a(Landroid/content/Context;)Ljava/lang/String; .registers 6 invoke-virtual {p1}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager; move-result-object v0 const/16 v1, 0x40 invoke-virtual {v0, v1}, Landroid/content/pm/PackageManager;->getInstalledPackages(I)Ljava/util/List; move-result-object v0 invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator; move-result-object v1 :cond_e invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z move-result v0 if-nez v0, :cond_16 const/4 v0, 0x0 :goto_15 return-object v0 :cond_16 invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v0 check-cast v0, Landroid/content/pm/PackageInfo; iget-object v2, v0, Landroid/content/pm/PackageInfo;->packageName:Ljava/lang/String; invoke-virtual {p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String; move-result-object v3 invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v2 if-eqz v2, :cond_e iget-object v0, v0, Landroid/content/pm/PackageInfo;->signatures:[Landroid/content/pm/Signature; const/4 v1, 0x0 aget-object v0, v0, v1 invoke-virtual {v0}, Landroid/content/pm/Signature;->toCharsString()Ljava/lang/String; move-result-object v0 goto :goto_15 .end method .method public static a(Ljava/lang/String;)Ljava/lang/String; .registers 6 new-instance v1, Ljava/lang/StringBuffer; invoke-direct {v1}, Ljava/lang/StringBuffer;-><init>()V if-eqz p0, :cond_26 invoke-virtual {p0}, Ljava/lang/String;->trim()Ljava/lang/String; move-result-object v0 invoke-virtual {v0}, Ljava/lang/String;->length()I move-result v0 if-eqz v0, :cond_26 :try_start_11 const-string v0, "MD5" invoke-static {v0}, Ljava/security/MessageDigest;->getInstance(Ljava/lang/String;)Ljava/security/MessageDigest; move-result-object v0 invoke-virtual {p0}, Ljava/lang/String;->getBytes()[B move-result-object v2 invoke-virtual {v0, v2}, Ljava/security/MessageDigest;->update([B)V invoke-virtual {v0}, Ljava/security/MessageDigest;->digest()[B move-result-object v2 const/4 v0, 0x0 :goto_23 array-length v3, v2 :try_end_24 .catch Ljava/security/NoSuchAlgorithmException; {:try_start_11 .. :try_end_24} :catch_5c if-lt v0, v3, :cond_2b :cond_26 :goto_26 invoke-virtual {v1}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String; move-result-object v0 return-object v0 :cond_2b :try_start_2b aget-byte v3, v2, v0 and-int/lit16 v3, v3, 0xff const/16 v4, 0x10 if-ge v3, v4, :cond_50 new-instance v3, Ljava/lang/StringBuilder; const-string v4, "0" invoke-direct {v3, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V aget-byte v4, v2, v0 and-int/lit16 v4, v4, 0xff invoke-static {v4}, Ljava/lang/Integer;->toHexString(I)Ljava/lang/String; move-result-object v4 invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v3 invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v3 invoke-virtual {v1, v3}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer; :goto_4d add-int/lit8 v0, v0, 0x1 goto :goto_23 :cond_50 aget-byte v3, v2, v0 and-int/lit16 v3, v3, 0xff invoke-static {v3}, Ljava/lang/Integer;->toHexString(I)Ljava/lang/String; move-result-object v3 invoke-virtual {v1, v3}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer; :try_end_5b .catch Ljava/security/NoSuchAlgorithmException; {:try_start_2b .. :try_end_5b} :catch_5c goto :goto_4d :catch_5c move-exception v0 invoke-virtual {v0}, Ljava/security/NoSuchAlgorithmException;->printStackTrace()V goto :goto_26 .end method .method static synthetic a(Llzh/Dlfx/FileManager;)Ljava/lang/String; .registers 2 iget-object v0, p0, Llzh/Dlfx/FileManager;->n:Ljava/lang/String; return-object v0 .end method
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
他的文章
看原图
赞赏
雪币:
留言: