<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                #### 13.4.2 使用apktool對apk進行二次打包 在13.4.1節中介紹了dex2jar和jd-gui的使用方式,通過它們可以將一個dex文件反編譯為Java代碼,但是它們無法反編譯出apk中的二進制數據資源,但是采用apktool就可以做到這一點。apktool另外一個常見的用途是二次打包,也就是常見的山寨版應用。將官方應用二次打包為山寨應用,這是一種不被提倡的行為,甚至是違法的,建議開發者不要去這么做,但是掌握以下二次打包的技術對于個人技術的提高還是很有意義的。apktool同樣有多個版本,這里同樣只介紹Windows版和Linux版,apktool是一個命令行工具,它的使用方式如下所示。這里仍然拿13.1節中的示例程序為例,假定apk的文件名為CrashTest.apk。 Linux(Ubuntu) 解包:./apktool d -f CrashTest.apk CrashTest。 二次打包:./apktool b CrashTest CrashTest-fake.apk。 簽名:java -jar signapk.jar testkey.x509.pem testkey.pk8 CrashTest-fake.apk CrashTest-fake-signed.apk。 Windows 解包:apktool.bat d -f CrashTest.apk CrashTest。 二次打包:apktool.bat b CrashTest CrashTest-fake.apk。 簽名:java -jar signapk.jar testkey.x509.pem testkey.pk8 CrashTest-fake.apk CrashTest-fake-signed.apk。 需要注意的是,由于Windows系統的兼容性問題,有時候會導致apktool.bat無法在Windows的一些版本上正常工作,比如Windows 8,這個時候可以安裝Cygwin,然后采用Linux的方式來進行打包即可。除此之外,部分apk也可能會打包失敗,以筆者的個人經驗來說,apktool在Linux上的打包成功率要比Windows高。 這里對上面的二次打包的命令稍作解釋,解包命令中,d表示解包,CrashTest.apk表示待解包的apk, CrashTest表示解包后的文件的存儲路徑,-f表示如果CrashTest目錄已經存在,那么直接覆蓋它。 打包命令中,b表示打包,CrashTest表示解包后的文件的存儲路徑,CrashTest-fake.apk表示二次打包后的文件名。通過apktool解包以后,可以查看到apk中的資源以及smali文件,smali文件是dex文件反編譯(不同于dex2jar的反編譯過程)的結果。smali有自己的語法并且可以修改,修改后可以被二次打包為apk,通過這種方式就可以修改apk的執行邏輯,顯然這讓山寨應用變得十分危險。需要注意的是,apk經過二次打包后并不能直接安裝,必須要經過簽名后才能安裝。 簽名命令中,采用signapk.jar來完成簽名,簽名后生成的apk就是一個山寨版的apk,因為簽名過程中所采用的簽名文件不是官方的,最終CrashTest-fake-signed.apk就是二次打包形成的一個山寨版的apk。對于本文中的例子來說,CrashTest-fake-signed.apk安裝后其功能和正版的CrashTest.apk是沒有區別的。 在實際開發中,很多產品都會做簽名校驗,簡單的二次打包所得到的山寨版apk安裝后無法運行。盡管如此,還是可以通過修改smali的方式來繞過簽名校驗,這就是為什么市面上仍然有那么多的山寨版應用的原因。一般來說山寨版應用都具有一定的危害性,我們要抵制山寨版應用以防止自己的財產遭受到損失。關于smali的語法以及如何修改smali,這就屬于比較深入的話題了,本節不再對它們進行深入的介紹,感興趣的話可以閱讀逆向方面的專業書籍,也可以閱讀筆者之前寫的一篇介紹應用破解的文章:http://blog.csdn.net/singwhatiwanna/article/details/18797493。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看