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

溫馨提示×

溫馨提示×

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

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

怎么對Android代碼進行混淆

發布時間:2021-12-18 17:02:49 來源:億速云 閱讀:188 作者:iii 欄目:移動開發

這篇文章主要介紹“怎么對Android代碼進行混淆”,在日常操作中,相信很多人在怎么對Android代碼進行混淆問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么對Android代碼進行混淆”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

apk直接可以 解壓,然后很容易的就可以反編譯出.java,找了找,果然,這一切只不過是 一分鐘的事兒:

1、得到classes.dex文件;直接用你機器上的解壓軟件打開.apk 文件,解壓出 classes.dex 文件。

2、還原.jar文件;這一步需要用到一個工具 dex2jar (谷歌的代碼庫里有 http://code.google.com/p/dex2jar/)

下載完了,解壓,然后把***步的 產物(即那個classes.dex文件)放到 dex2jar的解壓目錄里。

cmd命令行,目錄切換到dex2jar的目錄下:

“ dex2jar.bat classes.dex”

看到命令行的 “Done” 之后, dex2jar文件夾里 就會有“classes.dex.dex2jar.jar” 文件了,這個就是傳說中的jar包了。

3、查看.jar文件;這一步就是傳統的反編譯了,需要工具輔助,我這里用到的工具是jd-gui(http://java.decompiler.free.fr/?q=jdgui)

下載你的系統對應的版本、解壓,你會看到一個.exe文件,雙擊,選擇第二步生成的.jar, 好吧,你的項目是不是完全還原了呢?

非常簡單的步驟就能讓代碼暴露。

那么,如何對我們的代碼混淆呢?

新建一個 2.3.3的項目,你會看到項目文件里有一個proguard.cfg 文件,google已經幫我們做了這么多事,可惜是從2.3開始的,那我 悲催的項目(基于2.2的sdk) 該如何是好?

呵呵,其實不用,你只要 把 proguard.cfg 文件 拷貝到 你的 舊項目里就好了。

當然這樣還不夠,因為 google是默認不混淆項目的:

To enable ProGuard so that it runs as part of an Ant or Eclipse build,  set the proguard.config property in the <project_root>/default.properties file.  The path can be an absolute path or a path relative to the project's root. 

google 告訴我們 還要 配置 default.properties.

嗯,把 proguard.config=proguard.cfg 加上,好了,再次生成 新的  .apk文件,然后用上面的方法 反編譯你的 項目,你會看到 aa bb cc 的包、aa bb cc 的類 和 aa bb cc 的變量名,方法名.

再看看 proguard.cfg 文件

-optimizationpasses 5 -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontpreverify -verbose -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*   -keep public class * extends android.app.Activity -keep public class * extends android.app.Application -keep public class * extends android.app.Service -keep public class * extends android.content.BroadcastReceiver -keep public class * extends android.content.ContentProvider -keep public class com.android.vending.licensing.ILicensingService   -keepclasseswithmembernames class * {     native <methods>; }   -keepclasseswithmembernames class * {     public <init>(android.content.Context, android.util.AttributeSet); }   -keepclasseswithmembernames class * {     public <init>(android.content.Context, android.util.AttributeSet, int); }   -keepclassmembers enum * {     public static **[] values();     public static ** valueOf(java.lang.String); }   -keep class * implements android.os.Parcelable {   public static final android.os.Parcelable$Creator *; }

到此,關于“怎么對Android代碼進行混淆”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

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

AI

社会| 衡南县| 明光市| 浠水县| 阿克陶县| 石屏县| 六盘水市| 蓬溪县| 南安市| 海淀区| 固原市| 微山县| 肃南| 乌鲁木齐县| 洛隆县| 正蓝旗| 璧山县| 闵行区| 永定县| 黄陵县| 吴桥县| 上高县| 寿光市| 邯郸县| 乌兰察布市| 彭州市| 弥渡县| 丹棱县| 铅山县| 崇义县| 霞浦县| 客服| 孝昌县| 封开县| 辽阳县| 三门县| 故城县| 佛冈县| 太保市| 烟台市| 乌鲁木齐市|