導航:首頁 > 操作系統 > android混淆資源文件

android混淆資源文件

發布時間:2023-01-19 23:04:25

android打包的時候能混淆嗎

可以的,不過為了保證源碼及APP的安全最好還是對APP進行一下加固,可以有效保護自己的核心代碼演算法,提高破解、盜版程序和二次打包的難度;技術層面,APP加殼可以緩解代碼注入、動態調試、內存注入攻擊,加強了APP的安全。愛加密服務商一直在保護移動應用的安全發展,採用三代加密技術,通過dex加殼原理、內存防護、so庫文件加密、資源文件加密等多個技術協同保護手段,為移動互聯網開發者和移動互聯網企業提供安全可靠的APP保護方案。

㈡ 寫給Android 混淆小白的快速混淆方法

簡單來說,Android 進行ProGuard,可以起到壓縮,混淆,預檢,優化的功能,雖然不能說更安全但還是一個不容忽視的環節。

首先在build.gradle 中將混淆的開關打開,即 minifyEnabled 置為 true

然後就要去proguard-rules.pro寫入我們的混淆的規則(如文件其名),防止重要的類被混淆移除了。

省事第一步,先套個模板,就是找到網上博客上別人分享好的模板,像四大組件,主流開源庫,JNI調用本地方法,R資源等的混淆規則都一般有了,注意一點就是套模板,也要套個時間比較近的,沒有翻車的模板,可以能比較節省自己的時間,畢竟這么多行不一定能快速看出來,打個包出來才發現有問題就尷尬啦。

一般來說,用了混淆的模板後,我們還會有很多項目專屬的需要混淆的部分,例如我們的自定義View,Json解析的實體類,反射用到的類,還有我們依賴的非主流的開源框架,SDK等等。
對於自定義View,很多的模板都會將繼承與View的類用keep指令防止被混淆。有個偷懶的方法就是把自定義View 放入同一個包,再把這個包的類都寫入混淆規則,就可以搞定了。
對於Json解析的實體類,反射用到的類都是同理可得,找到那些不能被移除的,把它們寫入自己的混淆規則裡面。

所以如果在做項目時,有提前想到要給項目做混淆的,在導入依賴時就順手把對應混淆規則寫了,那事後就快活似神仙了。

首先,先判斷下它是否內置了混淆規則。如果不聲明它的混淆規則也正常運行,說明已經它帶了混淆。

但是生活往往不會一帆風順,一般來說會有各種報錯,所以還是需要對它聲明混淆。

最簡單的辦法就是找到依賴的這個包,就這個包的類都寫入混淆規則。例如:

項目里導入了一個非主流的開源庫,然後我需要對它寫入混淆規則,確保它能正常工作。

這時候不可以認為直接去使用它的地方,將有關它 import的類 keep class 就可以。

因為可能它內部還會使用包內其他類,所以最好仔細排查,最簡(tou)單(lan)就是把這個包的類都 用 keep 指令,防止它們被混淆。如下所示:

一般來說就可以防止這個開源庫里的類被混淆了。

例如

先使用 -libraryjars 命令 ,對導入的jar包和 so 文件進行聲明保留它們。

如果依舊出錯,嘗試去External library文件夾 或者使用 這個SDK的地方 找到這個 SDK的包找到,並把這個包里的類 都用 keep 指令保持不被移除。如:

根據包名,寫入混淆規則

一般來說,這樣就可以避免這個SDK的類被混淆啦

好了,最後附上一份自己做的項目的混淆規則(偽模板)

㈢ android mk文件怎麼加混淆

針對android 選擇user版本進行編譯的時候,會出現proguard錯誤,我們需要知道的事情

1.proguard是做什麼的,他的作用是將java代碼進行混淆的工具

2.因為proguard是混淆工具,所以android的mk文件也對其支持為兩種方式:

1.指定不需要混淆的native方法與變數的proguard.flags文件
如:LOCAL_PROGUARD_FLAG_FILES := proguard.flags

2.制定編譯的工程,不要使用代碼混淆的工具進行代碼混淆
如:LOCAL_PROGUARD_ENABLED := disabled
3.不設置,默認使用LOCAL_PROGUARD_ENABLED := full.即將該工程代碼全部混淆

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
在Android項目中用到JNI,當用了proguard後,發現native方法找不到很多變數,原來是被proard優化掉了。所以,在JNI應用中該慎用progurad啊。

解決辦法:
1、在Android.mk中加入一行:
LOCAL_PROGUARD_FLAGS := -include $(LOCAL_PATH)/proguard.flags
2、創建proguard.flag文件,裡面寫入不需要proguard優化的類和方法。例如:

-keep class oms.miracle.mobiletv.broadcast.ServiceContext {
*;
}

我的這個類是和JNI相關的,不想讓proguard去優化而引起錯誤,向上面寫就能實現。

----------下面是網上找到的一些proguard的資料,貼出來分享:
ProGuard是一個免費的java類文件壓縮,優化,混淆器.它探測並刪除沒有使用的類,欄位,方法和屬性.它刪除沒有用的說明並使用位元組碼得到最大優化.它使用無意義的名字來重命名類,欄位和方法.

ProGuard的使用是為了:

1.創建緊湊的代碼文檔是為了更快的網路傳輸,快速裝載和更小的內存佔用.
2.創建的程序和程序庫很難使用反向工程.
3.所以它能刪除來自源文件中的沒有調用的代碼
4.充分利用java6的快速載入的優點來提前檢測和返回java6中存在的類文件.

參數:

-include {filename} 從給定的文件中讀取配置參數

-basedirectory {directoryname} 指定基礎目錄為以後相對的檔案名稱

-injars {class_path} 指定要處理的應用程序jar,war,ear和目錄

-outjars {class_path} 指定處理完後要輸出的jar,war,ear和目錄的名稱

-libraryjars {classpath} 指定要處理的應用程序jar,war,ear和目錄所需要的程序庫文件

- 指定不去忽略非公共的庫類。

- 指定不去忽略包可見的庫類的成員。

保留選項
-keep {Modifier} {class_specification} 保護指定的類文件和類的成員

-keepclassmembers {modifier} {class_specification} 保護指定類的成員,如果此類受到保護他們會保護的更好

-keepclasseswithmembers {class_specification} 保護指定的類和類的成員,但條件是所有指定的類和類成員是要存在。

-keepnames {class_specification} 保護指定的類和類的成員的名稱(如果他們不會壓縮步驟中刪除)

-keepclassmembernames {class_specification} 保護指定的類的成員的名稱(如果他們不會壓縮步驟中刪除)

-keepclasseswithmembernames {class_specification} 保護指定的類和類的成員的名稱,如果所有指定的類成員出席(在壓縮步驟之後)

-printseeds {filename} 列出類和類的成員-keep選項的清單,標准輸出到給定的文件

㈣ 資源文件及AndroidManifest.xml等配置文件怎麼混淆

混淆是針對代碼而言的,讓別人不容易讀懂而已,你這不是混淆了,應該是加密

其實如果你有重要信息,完全沒必要放到AndroidManifest.xml中,放到其他地方啊。或者,你的很隱私的key,在你的程序中有一套這個key的加密演算法,比如你的manifest上是key="asdfsdf0003+____#3oidf",別人哪知道他幹嘛的,或者別人拿了也不能知道他其實對應的是"ABC"這種的,因為它本身就是加密的

㈤ 怎麼打Android的混淆包

Android 編程下的代碼混淆,Java 語音是一種跨平台的、解釋型語言,Java 源代碼編譯成中間」位元組碼」存儲於 class 文件中。由於跨平台的需要,Java 位元組碼中包括了很多源代碼信息,如變數名、方法名,並且通過這些名稱來訪問變數和方法,這些符號帶有許多語義信息,很容易被反編譯成 Java 源代碼。為了防止這種現象,我們可以使用 Java 混淆器對 Java 位元組碼進行混淆。

混淆就是對發布出去的程序進行重新組織和處理,使得處理後的代碼與處理前代碼完成相同的功能,而混淆後的代碼很難被反編譯,即使反編譯成功也很難得出程序的真正語義。被混淆過的程序代碼,仍然遵照原來的檔案格式和指令集,執行結果也與混淆前一樣,只是混淆器將代碼中的所有變數、函數、類的名稱變為簡短的英文字母代號,在缺乏相應的函數名和程序注釋的況下,即使被反編譯,也將難以閱讀。Android代碼混淆之後可以保證代碼的一定安全,但保護並不全面。

推薦你使用「愛加密」他們提供了保護措施,包括:DEX加殼保護,DEX指令動態載入保護和高級源碼混淆保護。其中DEX加殼保護通過將DEX文件隱藏,並生成一個類似於虛像的殼文件,阻止黑客利用反編譯工具獲取App源碼。另外,愛加密在年前還推出了so庫保護,使得C/C++ 層面的代碼安全也得到防護。加上資源文件保護(圖片、音頻等文件的防查看和防修改)、xml 主配文件保護(對主配文件進行二次簽名)、內存保護等措施,可以基本保證App的動態和靜態安全。你可以看下。

㈥ android 混淆

其實不要混淆的主旨就在於混淆會改變方法的名字,類的名字,但是對於外部的一些引用是通過名字找到對應的方法,類,這些可能是通過string找到方法,類,但是string里的欄位是不會進行混淆,所以還是會保留原來的名字,這樣混淆過後通過原來的名字去找混淆後的名字,是肯定找不到,所以就會報出nosuchfileException,(對於gson,反射,jsbridge,第三方庫都是這個原因),至於說枚舉類型,我還暫時沒懂 為什麼,還望共同學習,一起成長。
文章是讀了兩篇博客寫出來,也是自己總結,消化成自己的知識了,若有什麼錯誤的地方,還望指出,相信讀了這兩篇文章之後你也會懂混淆,一個是如何混淆,一個是哪些該混淆,為什麼不能混淆

-keepclasseswithmembernames class * { # 保持native方法不被混淆 native <methods>; }

-keep class * implements Android.os.Parcelable { # 保持Parcelable不被混淆 public static final Android.os.Parcelable$Creator *; }

發布一款應用除了設minifyEnabled為ture,你也應該設置zipAlignEnabled為true,像Google Play強制要求開發者上傳的應用必須是經過zipAlign的,zipAlign可以讓安裝包中的資源按4位元組對齊,這樣可以減少應用在運行時的內存消耗。

原文: http://droidyue.com/blog/2016/07/10/understanding-android-obfuscated-code-by-proguard/

其實不要混淆的主旨就在於混淆會改變方法的名字,類的名字,但是對於外部的一些引用是通過名字找到對應的方法,類,這些可能是通過string找到方法,類,但是string里的欄位是不會進行混淆,所以還是會保留原來的名字,這樣混淆過後通過原來的名字去找混淆後的名字,是肯定找不到,所以就會報出nosuchfileException,(對於gson,反射,jsbridge,第三方庫都是這個原因),至於說枚舉類型,我還暫時沒懂 為什麼,還望共同學習,一起成長。
文章是讀了兩篇博客寫出來,也是自己總結,消化成自己的知識了,若有什麼錯誤的地方,還望指出,相信讀了這兩篇文章之後你也會懂混淆,一個是如何混淆,一個是哪些該混淆,為什麼不能混淆

㈦ android studio的混淆文件是哪個

關於代碼混淆的作用,就不多解釋了,整個過程大致如下:在app下的build.gradle文件中添加如下代碼(minifyEnabled表示是否混淆,默認是false,這里要記得設置成true):其中proguard-Android.txt文件是本地sdk/tools/proguard文件夾下的默認文件;prguard-rules.pro文件就是用來編寫混淆代碼的;接下來就是在prguard-rules.pro文件中編寫混淆代碼:關於其中代碼的理解,可以參考這篇文章:代碼混淆詳解編寫完混淆代碼,混淆也就算完成了,接下來就是打包了,但是,混淆的時候可能會遇到各種問題,主要是混淆代碼,因為涉及到有的類不需要混淆,混淆了就會報錯運行不了,所以在編寫混淆代碼的時候一定要小心,其實一般注意這幾點就好了:不需要導入第三方類庫的代碼,如上圖注釋的部分:-libraryjarslibs/BaiLBS_Android.jar等,按照網上說的,需要在混淆文件中導入第三方類庫,防止混淆時讀取包內容出錯,但是如果那樣做的話

㈧ android 混淆 什麼意思

Android代碼混淆,是為了你的apk被他人反編譯之後拿到源碼,如果你混淆了,那反編譯後的apk所有的java類都被改成了a.java/c.java之類的文件名,類裡面的屬性也變成abc之類的了,想拿到你的源碼就不可能了,直接在gradle(app)文件的android節點下加上下邊代碼。

buildTypes{
release{
minifyEnabledfalse
('proguard-android.txt'),'proguard-rules.pro'
}
}

㈨ android混淆打包不包含文件

混淆打包流程:
1.在proguard-project.txt文件中添加不需要混淆的類和第三方的jar包

這個是保持自己包中不需要混淆的類,如果有些類調用了jni也不需要混淆,不然會出錯。還有如果項目中有其他項目作為library引入,那這些項目的一些類也不能混淆。

2.在project.properties文件中把proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 前的#號去掉

最後導出簽名包就可以了

閱讀全文

與android混淆資源文件相關的資料

熱點內容
6s怎麼外接u盤需要什麼app 瀏覽:131
linux查看文件許可權命令 瀏覽:685
安卓手游存檔怎麼用 瀏覽:761
linuxyum安裝ftp 瀏覽:690
村委會主任可以推行政命令嗎 瀏覽:102
電腦文件夾封面多張圖片 瀏覽:263
網吧總伺服器叫什麼 瀏覽:922
多個演算法解決同一個問題 瀏覽:455
小車解壓後我的購車發票呢 瀏覽:977
做app開發用什麼雲伺服器 瀏覽:177
linux網卡子介面 瀏覽:985
21歲職高畢業學程序員怎麼學 瀏覽:321
vs如何對單個文件編譯 瀏覽:6
為什麼有的電腦不能安裝python 瀏覽:75
金蝶迷你版加密狗檢測到過期 瀏覽:186
硬體描述語言編譯結果 瀏覽:655
程序員逆天改命 瀏覽:19
金斗雲伺服器 瀏覽:447
港口工程pdf 瀏覽:770
程序設計語言pdf 瀏覽:434