Android應用安全防護和逆向分析 ——apk混淆成其他語言代碼
現在很多人對于app的安全是越來越重視了,尤其是金融相關的行業,對于app的防范可是下足了功夫。各種加固,各種加密算法,層出不窮。我個人覺得,在安全技術這塊,沒有絕對安全的。也許今天這個技術起到了防范作用,但是也許一段時間后,就有人把這個技術給破解了。所以說如果我們可以給對方破解我們的app增加難度,那也是起到了一個很大的防護功能了。
我們每個app在上線的時候,都會進行代碼混淆。將一些類名,包名,方法名等等混淆成大小寫字母的形式,即使對方反編譯出我們的app,如果進行了混淆,那些對方看到的代碼將會是這個樣子的,如何反編譯?可以看看這篇文章:http://www.rzrgm.cn/huangjialin/p/10039704.html

這樣的代碼讀取的難度就大大的增加了。由于英文字符是全世界通用,在加上目前市場上大部分的app都是這樣混淆的,所以說在反編譯后都去代碼,基本上都有一定的心得了,所以說難度相比于以前大大的減弱了。那么能不能混淆成其他語言呢?
我們知道Java語言是支持雙字符的,所以可以將包名,類名,變量名,方法名定義成中文,或者其他國家的語言都可以的。也就是說我們可以將包名,類名,方法名命名為其他語言,比如中文,英文,法文等等。
1 package com.hjl.proguardchinese; 2 3 import android.support.v7.app.AppCompatActivity; 4 import android.os.Bundle; 5 import android.util.Log; 6 7 public class 測試 extends AppCompatActivity { 8 String 黃家磷 = "我叫黃家磷"; 9 10 @Override 11 protected void onCreate(Bundle savedInstanceState) { 12 super.onCreate(savedInstanceState); 13 setContentView(R.layout.activity_main); 14 Log.d("huangjialin","--------->" + 黃家磷); 15 } 16 }
結果:
1 2019-02-22 14:31:44.813 18913-18913/? D/huangjialin: --------->我叫黃家磷
言歸正傳,我們繼續說混淆,要想了解混淆的原理,那得看源碼。而混淆架包proguard.jar又是開源的。
項目地址:https://sourceforge.net/projects/proguard/需要FQ。將項目導入,運行,當然還需要其他一些資源包,大家自行下載。
具體的可以參考這篇文章:https://blog.csdn.net/jiangwei0910410003/article/details/61618945
當然,上面那種修改proguard源碼來實現混淆成其他語言,也是可以實現的,不過這里,說一種更加簡單的方式。
在項目目錄下也就是和proguard-rules.pro同目錄下新建一個txt文件

然后在該文件夾中加入對應的語言,如果想混淆成中文,你就加中文,如果你想混淆成其他語言你就加其他語言。
然后在proguard-rules.pro文件中加入下面三行代碼,完成
1 -obfuscationdictionary proguard_huangjialin.txt 2 -classobfuscationdictionary proguard_huangjialin.txt 3 -packageobfuscationdictionary proguard_huangjialin.txt
注意,如果文件中有-optimizations開頭的,請把該行注釋掉,到這里就完成了。我這里弄了藏文,反正我也看不懂,看看效果
看看中文的效果


浙公網安備 33010602011771號