繞過百度雲的簽名認證

用apktool 反編譯出smali, 而後再打包回去時,由於不知道百度的簽名,因此必須用另外的簽名。java

java -jar sign.jar .\baiduyun\dist\BaiduYun_7.12.1.apk

然而,百度的程序內部仍是會認證簽名,從而致使打包的程序不能運行。android

 

跟蹤smali文件,能夠看到這段代碼函數

.class public final Lcom/baidu/bdcvf/CertVerifier;
.method public _(Landroid/content/Context;Lcom/baidu/bdcvf/CertVerifier$ResultListener;)V
    .locals 0

    .prologue
    .line 54
    invoke-static {p1, p2}, Lcom/baidu/bdcvf/N;->a(Ljava/lang/Object;Ljava/lang/Object;)V

    .line 55
    return-void
.end method
[com/baidu/bdcvf/N;->a] 函數是用來調用lib\armeabi\libbdcvf.so 來驗證簽名的。

若是成功, 會調用
CertVerifier$ResultListener的 _()V 函數, 若是失敗 調用 _(I)V 函數。

所以,全部應用了CertVerifier$ResultListener的類,用如下改法便可。
(測試時,由於com/baidu/netdisk/ui/Navigate 啓動Active 用到了 com/baidu/netdisk/ui/bg
因此就改了這一個)
 .method public _(I)V
    .locals 2
    .line 71
    .prologue
     invoke-virtual {p0}, Lcom/baidu/netdisk/ui/bg;->_()V
     return-void
.end method

.method public _222(I)V
    .locals 2

    .prologue
    <省略>
    return-void
.end method

新的 _(I)V 函數,調用了_()V 函數, 就經過了。老的函數命名爲 _222(I)V 以防改錯。測試

相關文章
相關標籤/搜索