個人題目有點奪人眼球,也固然有噴噴不平者以爲我是危言聳聽,那就好好聽聽我說的是否是有那麼一丁點道理。 標題中的APP請排除那些只想靠APP推送廣告的小衆開發者,誠然這些開發者的出發點並不高,只是想靠Android平臺簡單易上手的APP開發掙兩個小廣告錢(固然也包括我本身),他們目標並非開發出一款高質量、飽含創意、凝結心血的APP,若是一款APP是由那些滿腔熱血、熱心創業並凝結無數心血的創業團隊、公司或者我的開發出來的,那我能夠很負責的告訴你若是你的APP不加密那只有三種結局: 第一種結局:儘管你的APP是你日夜不辭辛勞開發而出的,可是自己質量不高、毫無新意或者自己同質化很嚴重,那你這個APP投到市場上就像是大海里面扔出的一顆石子,並沒有多回報,加密不加密無所謂,真所謂死的無怨無悔啊。 第二種結局:立意新穎、創意十足、目前軟件市場幾乎沒有同類產品,而且能快速被大衆承認接受,若是你不加密、不申請專利,那這個不加密的APP必死。 由於人在山寨之國,小小的團隊方案,不是被收購就是直接被一個如出一轍的替代品吃死!!! 那麼若是你寧死不屈不想被收購而且不想被一個如出一轍的替代品吃死的話,你的APP就必需要加密,由於不加密你的APP被人一研究,那好無需多日你會發現你的好idea你的心血所有付之東流。 第三種結局:沒有必要山寨你的APP,可是你提供的服務我很感興趣哦,若是不是要註冊就行了?若是能把你提供資源直接所有拿出來共享就就行了,嘻嘻~~哦,對了我會破解:)嘻嘻~~若是不加密,被破解後果也很嚴重啊,之內容爲王的APP,得當心了。
下面談談愛加密提供的服務吧:愛加密推出「APK源代碼安全保護」平臺,目前的三層加密保護:DEX加殼保護,DEX指令動態加載保護,高級混淆保護。能夠有效防止APP的動態破解和靜態破解,黑客將沒有機會進行任何破解。愛加密更在年前推出了SO庫保護,使C++層面的代碼也獲得了保護。html
仍是結合實例來一一說說這三個須要保護的地方吧,若是不保護會出現什麼狀況:java
DEX指令改寫,破解你的程序沒商量android
Android的DEX指令(確切的叫Dalvik指令更合適)和smali文件格式很類似,利用baksmali和smail就能夠直接改寫你的Android:ubuntu
這裏使用HelloOurAndroid.apk程序做爲sample,咱們可使用baksmali反編譯dex文件來生成smali文件,以下:
一、walfred@ubuntu:reserve$ unzip -q HelloOurAndroid.apk -d HelloOurAndroid
二、walfred@ubuntu:reserve$ java -jar baksmali-1.4.2.jar HelloOurAndroid/classes.dex
這樣就會在當前目錄下生成一個out目錄,out目錄:
一、walfred@ubuntu:reserve$ ls out/org/ourunix/helloourandroid/
二、BuildConfig.smali R$attr.smali R$id.smali R$menu.smali R$string.smali
三、MainActivity.smali R$drawable.smali R$layout.smali R.smali R$style.smali
固然若是你熟悉smali語法規則的話,你就能夠自由的修改這些smali文件,而後在經過smali工具從新生成dex文件:
一、walfred@ubuntu:reserve$ java -jar smali-1.4.2.jar out/ -o classes.dexsegmentfault
只要對smali格式有所認識,那麼破解你的程序真的沒有商量:
這裏示範有一款集成smali和baksmail的工具apktool,若是已經有了Android開發環境就能很快使用上apktool了,這裏假設你已經能夠直接使用apktool了。安全
反編譯decode
一、walfred@ubuntu:~/lab/apktool$ apktool d HelloOurAndroid.apk
ide
這時咱們能夠看到在當前目錄下已經生成HelloOurAndroid/文件夾了,咱們來查看下反編譯後的AndroidManifest.xml文件和strings.xml文件:
AndroidManifest.xml文件反編譯以後和工程下的時候幾乎是如出一轍,因此咱們能夠來check下該Android應用的全部權限。
工具
一樣能夠查看這些hardcode的內容:
post
rebuild重打包
重打包剛剛修改過的HelloOurAndroid.apk,咱們就修改strings.xml目錄下的「hello」爲:Hello,OurUnix!
性能
而後使用apktoo從新打包,命令以下:
一、walfred@ubuntu:~/lab/apktool$ apktool b HelloOurAndroid
最後將從新編譯以後的APK進行簽名就能夠運行了,DEX被破解以後,將有可能
1 修改AndroidManifest.xml文件中廣告投放代碼;
2 修改註冊條件,強心登入等。
dex2jar 你的dex被盡收眼底
若是程序的dex沒有被加殼保護,你的dex沒有通過混淆,你的dex將被盡收眼底,你的邏輯,你的idea,你的心血,天哪,將被赤裸裸的被別人看個透!
dex2jar我想Android開發者都知道吧,很自豪這個工具開發者和我是同事。
SO庫不保護,你在爲他人作嫁衣
dex風險太大了,不少人有轉向了使用native code編寫關鍵代碼,以爲so很差破解的同時又能提升性能並不受內存的制約,什麼ida什麼elf之類的工具也沒法從容的查看代碼,因此so成了上上策。但是我以爲你的jni一旦被別人攻下,那麼恭喜你的so,我直接拿來用!!
以前破解了某一首屈一指的殺毒軟件,其代碼混淆程度高,關鍵代碼都用了so,但是卻不知這個JNI接口信息卻被我找出來了,有了這些接口,你的so就是個人了,我也能山寨一個和你同樣的程序!
以上這三種Android程序開發經常使用破解手段,咱們愛加密裏都有提到,若是想看看治療效果,那不如來好好體驗下吧:www.ijiami.cn
原文連接:http://www.ourunix.org/post/386.html