作者:一個(gè)人的旅程更新于10月21日訪問(wèn)(1771)評(píng)論(3)
一:情景分析
有時(shí)候看到其他應(yīng)用App的一些效果很炫,或者是功能實(shí)現(xiàn)很好就想著參考參考,于是乎,下載APK----反編譯APK---查看源碼。。。。,但是悲劇來(lái)了。。。。源碼都是些a,b,c。。。等等這樣的東東,根本啥都看不明白,后來(lái)了解到這是程序的作者保護(hù)自己勞動(dòng)成果的“手段”,于是乎自己就想咱也試著“保護(hù)一下”自己的勞動(dòng)成果吧,至此開啟了“Android混淆代碼”的旅程
二:初始
了解到Android混淆代碼這個(gè)名詞以后,于是乎 百度。。谷歌。。。,哇哦看來(lái)大家都已經(jīng)掌握了這門技能了(自己落后了。。。。),介紹此技能的技術(shù)文檔,博客是一大批一大批的啊。。。。于是乎自己找了一個(gè)相對(duì)詳細(xì)的教程開始學(xué)習(xí)
三:實(shí)踐
參考教程地址
http://my.eoe.cn/eric_wu/archive/4358.html
http://blog.sina.com.cn/s/blog_6944483201017oex.html
(有了這些教程之后,接下來(lái)就要靠自己實(shí)踐,自己掌握了)
根 據(jù)以上教程的介紹,混淆代碼方法有兩種,一種是低版本的混淆,一種是高版本的混淆
鑒于自己的版本是高版本的,因此就實(shí)踐了高版本的混淆
按照教程步驟如下:
1:打開project.properties
哇哦 一大段英文。。。。。。 不過(guò)仔細(xì)閱讀 還是可以懂滴,看到一句這樣的話
意思是說(shuō) 想要混淆代碼 就將下面那句話取消注釋,于是乎 咱就取消注釋唄。教程中有說(shuō)要將配置信息放在target=android-8之后,至此簡(jiǎn)單的混淆代碼就完成了(前人種樹,后人乘涼啊)
在搜索Android混淆代碼的知識(shí)點(diǎn)時(shí),也有一些比較深層次的內(nèi)容,比如如果項(xiàng)目引入了第三方庫(kù),該怎樣混淆,如果自己將自己的項(xiàng)目作為第三方庫(kù)給別人使用,又怎樣混淆.鑒于自己還沒(méi)有涉及這方面的知識(shí),所以就暫且不深入學(xué)習(xí),只做個(gè)大概了解(知識(shí)是無(wú)窮無(wú)盡的。。。。。)
四 擴(kuò)展
在調(diào)查Android混淆代碼的時(shí)候,看到了一個(gè)工具:APKProtect
地址:http://www.eoeandroid.com/forum.php?mod=viewthread&tid=304353
雖然文檔標(biāo)題是混淆工具,不過(guò)因?yàn)槲以趯?shí)踐的時(shí)候,發(fā)現(xiàn)它并沒(méi)有提到混淆的作用,于是乎詢問(wèn)了作者,作者說(shuō)這個(gè)不是混淆工具,是加密工具,目前只做了Activity,service,reciver的加密,加密的通俗意思是:反編譯apk之后,就看不到Activity,service,reciver這些class文件了
接下來(lái)呢 就是咱們動(dòng)手實(shí)踐的時(shí)間了
下載APKProtect這個(gè)工具,下載完成后解壓,看到
雙擊打開.exe文件
選擇將要加密的apk,不做任何設(shè)置,工具會(huì)自動(dòng)命名之后保存的加密的apk名字,你也可以自己命名
點(diǎn)擊protect按鈕,然后等待,出現(xiàn)process done 對(duì)話框之后
至此 加密工作完成,反編譯一下 瞧瞧 哇哦 Activity沒(méi)有了?。。≡捳f(shuō)還不能高興的太早,將加密后的文件運(yùn)行到Android手機(jī)上 See See ,咦。。。。不幸的事情發(fā)生了。。。。。
不能安裝,提示信息是證書有問(wèn)題,后來(lái)詢問(wèn)了作者,作者說(shuō)加密的apk要重新在簽名一次并且需要設(shè)置
于是乎打開工具,在主界面看到了Protection option ,里面有一些設(shè)置信息,既然安裝apk時(shí)說(shuō)是我們的簽名有問(wèn)題,那就設(shè)置我們的簽名,因?yàn)槲矣玫氖亲约鹤远x的簽名所以進(jìn)入設(shè)置界面,進(jìn)行相關(guān)設(shè)置,然后保存,再加密文件
在填寫設(shè)置信息中,要填寫keystore的相關(guān)信息,因?yàn)閗eystore創(chuàng)建很久了,一些信息忘記了,于是乎要查看keystore的相關(guān)信息怎么查看呢,百度。。。谷歌。。。。
查看Keystore相關(guān)信息:
在命令行中,到j(luò)dk/bin文件下 然后輸入
keytool -list -v -keystore (keystore的位置)
就可以看到相關(guān)信息了
擴(kuò)展,怎樣生成自定義的keystore
在命令行中, 到j(luò)dk/bin文件下 然后輸入
keytool -genkey -alias android.keystore -keyalg RSA -validity20000-keystore android.keystore
-alias 密鑰別名
-keyalg 密鑰算法
-validity 密鑰有效期
總結(jié):既然在加密apk的時(shí)候要重新簽名APK,那么我們可以在Eclipse導(dǎo)出apk時(shí),先不簽名,然后在加密的時(shí)候在簽名
五:感想
至此呢,我們就給APK加了“雙層保護(hù)”,也保護(hù)了我們的勞動(dòng)成果!完美收工
聲明:eoe文章著作權(quán)屬于作者,受法律保護(hù),轉(zhuǎn)載時(shí)請(qǐng)務(wù)必以超鏈接形式附帶如下信息
原文作者:一個(gè)人的旅程
愛(ài)華網(wǎng)本文地址 » http://www.klfzs.com/a/25101014/227323.html
愛(ài)華網(wǎng)


