proguard混淆編輯過程

1.proguard下載地址

http://proguard.sourceforge.net/下載proguard,目前我下載并使用的是proguard5.3.3。

2.打包jar包

proguard是對(duì)打包后的jar包進(jìn)行混淆編譯誊稚,將包名谎仲、類名等轉(zhuǎn)為a~z格式,從而起到混淆作用泡垃。所以首先對(duì)項(xiàng)目中需要混淆編譯的代碼進(jìn)行打包旨怠。詳細(xì)打包過程參見“eclipse打包jar過程”一文渠驼。

3.proguard混淆編譯

進(jìn)入下載好的proguard5.3.3目錄的bin目錄下,雙擊“proguardgui.bat”即可打開該軟件鉴腻,如下圖:

接著按照下面截圖步驟一步步操作:

上面保存好該jar包的.pro文件后迷扇,在Editplus直接打開該.pro文件。打開后修改下圖指定內(nèi)容:

上面紅色框出的內(nèi)容爽哎,是本jar運(yùn)行時(shí)不需要設(shè)置的入口函數(shù)類蜓席。其他jar按自己需要設(shè)置,具體設(shè)置格式后面有介紹倦青。此處是將com.kingmes.command包下的所有類不用混淆瓮床,但其子包下的類還是會(huì)混淆,如果子包也不需要混淆产镐,需要對(duì)每一個(gè)子包設(shè)置隘庄。如下:

-keep public class com.kingmes.socket.webutil.* {*;}

-keep public class com.kingmes.socket.config.* {*;}

-keep public class com.kingmes.socket.message.* {*;}//下面的子包中的類需要單獨(dú)設(shè)置

-keep public class com.kingmes.socket.message.data.* {*;}

-keep public class com.kingmes.socket.message.data.json.* {*;}

-keep public class com.kingmes.socket.message.data.json.base.* {*;}

-keep public class com.kingmes.socket.message.data.json.requestbase.* {*;}

設(shè)置好后再次打開proguard,導(dǎo)入剛剛修改后的.pro文件:

導(dǎo)入后切換到Process癣亚,可以查看導(dǎo)入的配置內(nèi)容是否正確丑掺。檢查后點(diǎn)擊“Process!”即可進(jìn)行混淆。

混淆成功述雾,最后會(huì)提示“Processing complete successfully”街州。然后使用jd-gui軟件打開混淆后的jar包,如下:

上圖中框出的類名玻孟、變量名唆缴、函數(shù)名均用a、b黍翎、c表示面徽。

4.pro文件配置說明

參數(shù):

-include {filename}??? 從給定的文件中讀取配置參數(shù)

-basedirectory {directoryname}??? 指定基礎(chǔ)目錄為以后相對(duì)的檔案名稱

-injars {class_path}??? 指定要處理的應(yīng)用程序jar,war,ear和目錄

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

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

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

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

保留選項(xiàng)

-keep {Modifier} {class_specification}??? 保護(hù)指定的類文件和類的成員

-keepclassmembers {modifier} {class_specification}??? 保護(hù)指定類的成員趟紊,如果此類受到保護(hù)他們會(huì)保護(hù)的更好

-keepclasseswithmembers {class_specification}??? 保護(hù)指定的類和類的成員,但條件是所有指定的類和類成員是要存在碰酝。

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

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

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

-printseeds {filename}??? 列出類和類的成員-keep選項(xiàng)的清單,標(biāo)準(zhǔn)輸出到給定的文件

壓縮

-dontshrink??? 不壓縮輸入的類文件

-printusage {filename}

-whyareyoukeeping {class_specification}

優(yōu)化

-dontoptimize??? 不優(yōu)化輸入的類文件

-assumenosideeffects {class_specification}??? 優(yōu)化時(shí)假設(shè)指定的方法送爸,沒有任何副作用

-allowaccessmodification??? 優(yōu)化時(shí)允許訪問并修改有修飾符的類和類的成員

混淆

-dontobfuscate??? 不混淆輸入的類文件

-printmapping {filename}

-applymapping {filename}??? 重用映射增加混淆

-obfuscationdictionary {filename}??? 使用給定文件中的關(guān)鍵字作為要混淆方法的名稱

-overloadaggressively??? 混淆時(shí)應(yīng)用侵入式重載

-useuniqueclassmembernames??? 確定統(tǒng)一的混淆類的成員名稱來增加混淆

-flattenpackagehierarchy {package_name}??? 重新包裝所有重命名的包并放在給定的單一包中

-repackageclass {package_name}??? 重新包裝所有重命名的類文件中放在給定的單一包中

-dontusemixedcaseclassnames??? 混淆時(shí)不會(huì)產(chǎn)生形形色色的類名

-keepattributes {attribute_name,...}??? 保護(hù)給定的可選屬性铛嘱,例如LineNumberTable, LocalVariableTable, SourceFile, Deprecated, Synthetic, Signature, and InnerClasses.

-renamesourcefileattribute {string}??? 設(shè)置源文件中給定的字符串常量

5.注意事項(xiàng)

由于混淆后包名暖释、類名、函數(shù)方法名已經(jīng)不是原名稱弄痹,如果外部方法仍用原名稱調(diào)用肯定會(huì)報(bào)錯(cuò)饭入。此時(shí)不能對(duì)這些類或者方法進(jìn)行混淆嵌器,保留原名稱肛真,尤其是入口函數(shù)類中的main函數(shù)。如果混淆了爽航,執(zhí)行時(shí)會(huì)提示找不到該類或該main函數(shù)蚓让。在jar包中單獨(dú)調(diào)用的可以直接混淆。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末讥珍,一起剝皮案震驚了整個(gè)濱河市历极,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌衷佃,老刑警劉巖趟卸,帶你破解...
    沈念sama閱讀 211,348評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異氏义,居然都是意外死亡锄列,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門惯悠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來邻邮,“玉大人,你說我怎么就攤上這事克婶⊥惭希” “怎么了?”我有些...
    開封第一講書人閱讀 156,936評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵情萤,是天一觀的道長鸭蛙。 經(jīng)常有香客問我,道長筋岛,這世上最難降的妖魔是什么娶视? 我笑而不...
    開封第一講書人閱讀 56,427評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮泉蝌,結(jié)果婚禮上歇万,老公的妹妹穿的比我還像新娘。我一直安慰自己勋陪,他們只是感情好贪磺,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著诅愚,像睡著了一般寒锚。 火紅的嫁衣襯著肌膚如雪劫映。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,785評(píng)論 1 290
  • 那天刹前,我揣著相機(jī)與錄音泳赋,去河邊找鬼。 笑死喇喉,一個(gè)胖子當(dāng)著我的面吹牛祖今,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拣技,決...
    沈念sama閱讀 38,931評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼千诬,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了膏斤?” 一聲冷哼從身側(cè)響起徐绑,我...
    開封第一講書人閱讀 37,696評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎莫辨,沒想到半個(gè)月后傲茄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,141評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡沮榜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評(píng)論 2 327
  • 正文 我和宋清朗相戀三年盘榨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片敞映。...
    茶點(diǎn)故事閱讀 38,625評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡较曼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出振愿,到底是詐尸還是另有隱情捷犹,我是刑警寧澤,帶...
    沈念sama閱讀 34,291評(píng)論 4 329
  • 正文 年R本政府宣布冕末,位于F島的核電站萍歉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏档桃。R本人自食惡果不足惜枪孩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望藻肄。 院中可真熱鬧蔑舞,春花似錦、人聲如沸嘹屯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽州弟。三九已至钧栖,卻和暖如春低零,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拯杠。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工掏婶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人潭陪。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓雄妥,卻偏偏與公主長得像,于是被迫代替她去往敵國和親畔咧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子茎芭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 混淆(Proguard)用法 最近項(xiàng)目中遇到一些混淆相關(guān)的問題,由于之前對(duì)proguard了解不多誓沸,所以每次都是面...
    于曉飛93閱讀 56,704評(píng)論 38 230
  • 說明:本文參考(翻譯)自Android SDK根目錄下的proguard目錄下的說明文檔,是其中的一篇壹粟。拜隧,文中除了...
    一件小毛衣閱讀 84,147評(píng)論 9 85
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)趁仙,斷路器洪添,智...
    卡卡羅2017閱讀 134,629評(píng)論 18 139
  • 應(yīng)用混淆(ProGuard) ProGuard是一個(gè)免費(fèi)的JAVA類文件壓縮,優(yōu)化雀费,混淆器干奢。 它探測并刪除沒有使用...
    Reathin閱讀 11,806評(píng)論 0 20
  • 1.What and why? What? 代碼混淆(Obfuscated code)亦稱花指令盏袄,是將計(jì)算機(jī)程序的...
    言者無知_n4c閱讀 2,326評(píng)論 0 1