中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

android apk 防止反編譯技術第四篇-對抗JD-GUI

發布時間:2020-06-24 10:15:36 來源:網絡 閱讀:802 作者:lonely_online 欄目:移動開發

又到周末一個人侘在家里無事可干,這就是程序員的悲哀啊。好了我們利用周末的時間繼續介紹android apk防止反編譯技術的另一種方法。前三篇我們講了加殼技術(http://my.oschina.net/u/2323218/blog/393372)、運行時修改字節碼(http://my.oschina.net/u/2323218/blog/396203)和偽加密(http://my.oschina.net/u/2323218/blog/399326),如果有不明白的可以查看我的博客的前三篇中關于這三種技術的介紹。接下來我們將介紹另一種防止apk反編譯的技術-對抗JD-GUI

 

一、對抗JD-GUI原理

通常在對apk進行反編譯的時候用到的最多的兩個工具就是apk-tooldex2jar。利用這兩個工具將apk首先反編譯成classes.dex然后再將classes.dex反編譯成jar文件或者將apk直接反編譯成jar文件;得到jar文件以后就可以利用JD-GUI將得到的jar文件打開就可以直接查看apkjava源碼了。我們花了那么大心思寫的程序就這么容易被別人拿到源碼是不是很不甘心,現在我就告訴你對抗JD-GUI查看源碼的方法。我們在用JD-GUI查看源碼時有時有些函數的根本看不到直接提示error錯誤,我們就利用這點來保護我們的apk。原來JD-GUI在將經過混淆處理的jar里面的class字節碼文件轉成java文件時,遇到函數中根本走不到的分支的特殊實現時就會提示函數error。這時我們只要查看這些提示error的文件或者函數對應的源碼是有什么語句引起的,將這些語句加到我們的源碼中就可以防止利用JD-GUI去查看我們的apk源碼了。

 

二、原理實現

(1)假如我們的apk onCreate的函數實現如下:

?

1
2
3
4
5
 @Override   
 protected void onCreate(Bundle savedInstanceState) {   
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main);  
  }

 

(2)將我們的apk經過混淆處理后經過簽名導出我們的apk,我們用dex2jar工具將我們的apk轉換成jar文件

android apk 防止反編譯技術第四篇-對抗JD-GUI

 

(3)JD-GUI打開我們的jar文件就可以看到我們的apk onCreate函數的源碼了。如下:

android apk 防止反編譯技術第四篇-對抗JD-GUI

 

(4)這時我們在apk onCreate函數里面加上不可能的特殊分支語句,代碼如下:

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
  @Override
    protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       switch(0)
       {
       case 1:
           JSONObject jsoObj;
           String date=null;
           String second=null;
           try
           {
              jsoObj=new JSONObject();
              date=jsoObj.getString("date");
               second=jsoObj.getString("second");
           }
           catch(JSONException e)
           {
              e.printStackTrace();
           }
           test.settime(date,second);
           break;
       }
    }

?

1
2
3
4
class test
{
   public static void settime(String a,String b){}
}

 

(5)我們用(2)中同樣的方法將apk轉成jar文件,然后用JD-GUI打開會看到提示error錯誤。如下:

android apk 防止反編譯技術第四篇-對抗JD-GUI

 

根據上面的講述相信大家對對抗JD-GUI的方法有了一定的了解,我只是舉了其中的一個方法,之所以說是特殊的分支語句是因為不是所有的分支語句都可以讓JD-GUI提示error。我們可以根據原理多注意一些這樣的特殊分支語句以便用來保護我們的apk,下一篇我們將講解另一種android apk防止反編譯技術,期待大家的捧場。如果對這篇講的技術有任何疑問:

歡迎關注個人微信公眾平臺:程序員互動聯盟(coder_online),掃一掃下方二維碼或搜索微信號coder_online即可關注,我們可以在線交流。

android apk 防止反編譯技術第四篇-對抗JD-GUI


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

岳西县| 阳江市| 原平市| 湖口县| 岳池县| 宁明县| 石城县| 阿克| 陆川县| 报价| 湘阴县| 金昌市| 项城市| 巩留县| 正阳县| 攀枝花市| 肇州县| 武宁县| 龙州县| 万山特区| 莎车县| 乌鲁木齐市| 元江| 宣威市| 陇川县| 渭南市| 山丹县| 石阡县| 金塔县| 眉山市| 泉州市| 陵川县| 桑日县| 新邵县| 综艺| 龙里县| 金华市| 沿河| 荣昌县| 西乌珠穆沁旗| 闸北区|