淺談Android市場環境,不加密的APP必死,androidapp
我的題目有點奪人眼球,也當然有噴噴不平者覺得我是危言聳聽,那就好好聽聽我說的是不是有那麼一丁點道理。
標題中的APP請排除那些只想靠APP推送廣告的小眾開發人員,誠然這些開發人員的出發點並不高,只是想靠Android平台簡單易上手的APP開發掙兩個小廣告錢(當然也包括我自己),他們目標並不是開發出一款高品質、飽含創意、凝結心血的APP,如果一款APP是由那些滿腔熱血、熱心創業並凝結無數心血的創業團隊、公司或者個人開發出來的,那我可以很負責的告訴你如果你的APP不加密那隻有三種結局:
第一種結局:儘管你的APP是你日夜不辭辛勞開發而出的,但是本身品質不高、毫無新意或者本身同質化很嚴重,那你這個APP投到市場上就像是大海裡面扔出的一顆石子,並無多回報,加密不加密無所謂,真所謂死的無怨無悔啊。
第二種結局:立意新穎、創意十足、目前軟體市場幾乎沒有同類產品,並且能快速被福士認可接受,如果你不加密、不申請專利,那這個不加密的APP必死。
因為人在山寨之國,小小的團隊方案,不是被收購就是直接被一個一模一樣的替代品吃死!!!
那麼如果你寧死不屈不想被收購併且不想被一個一模一樣的替代品吃死的話,你的APP就必須要加密,因為不加密你的APP被人一研究,那好無需多日你會發現你的好idea你的心血全部付之東流。
第三種結局:沒有必要山寨你的APP,但是你提供的服務我高度興趣哦,如果不是要註冊就好了?如果能把你提供資源直接全部拿出來共用就就好了,嘻嘻~~哦,對了我會破解:)嘻嘻~~如果不加密,被破解後果也很嚴重啊,以內容為王的APP,得小心了。
下面談談愛加密提供的服務吧:愛加密www.ijiami.cn推出“APK原始碼安全保護”平台,目前的三層加密保護:DEX加殼保護,DEX指令動態載入保護,進階混淆保護。可以有效防止APP的動態破解和靜態破解,駭客將沒有機會進行任何破解。愛加密更在年前推出了SO庫保護,使C++層面的代碼也得到了保護。
還是結合執行個體來一一說說這三個需要保護的地方吧,如果不保護會出現什麼情況:DEX指令改寫,破解你的程式沒商量
Android的DEX指令(確切的叫Dalvik指令更合適)和smali檔案格式很相似,利用baksmali和smail就可以直接改寫你的Android:
這裡使用HelloOurAndroid.apk程式作為sample,我們可以使用baksmali反編譯dex檔案來產生smali檔案,如下:
1walfred@ubuntu :reserve$ unzip -q HelloOurAndroid.apk -d HelloOurAndroid
2walfred@ubuntu :reserve$ java -jar baksmali-1.4.2.jar HelloOurAndroid/classes.dex
這樣就會在目前的目錄下產生一個out目錄,out目錄:
1walfred@ubuntu :reserve$ ls out/org/ourunix/helloourandroid/
2BuildConfig.smali R$attr.smali R$id.smali R$menu.smali R$string.smali
3MainActivity.smali R$drawable.smali R$layout.smali R.smali R$style.smali
當然如果你熟悉smali文法規則的話,你就可以自由的修改這些smali檔案,然後在通過smali工具重建dex檔案:
1walfred@ubuntu :reserve$ java -jar smali-1.4.2.jar out/ -o classes.dex
只要對smali格式有所認識,那麼破解你的程式真的沒有商量:
這裡示範有一款整合smali和baksmail的工具apktool,如果已經有了Android開發環境就能很快使用上apktool了,這裡假設你已經可以直接使用apktool了。
反編譯decode
1walfred@ubuntu :~/lab/apktool$ apktool d HelloOurAndroid.apk
這時我們可以看到在目前的目錄下已經產生HelloOurAndroid/檔案夾了,我們來查看下反編譯後的AndroidManifest.xml檔案和strings.xml檔案:
AndroidManifest.xml檔案反編譯之後和工程下的時候幾乎是一模一樣,所以我們可以來check下該Android應用的所有許可權。
同樣可以查看這些hardcode的內容:
rebuild重打包
重打包剛剛修改過的HelloOurAndroid.apk,我們就修改strings.xml目錄下的“hello”為:Hello,OurUnix!
然後使用apktoo重新打包,命令如下:
1walfred@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程式開發常用破解手段,我看愛加密都有提到,可是不知道他們的治療效果究竟咋樣,真想好好體驗下。
另外一種話題中也提高的動態破解,我稍微帶下,畢竟這個使用方式更高,破解更容易,運行你的APP,你的行為,你的debug log(呵呵,我改你的smali開啟你的debug開關),當然如果想擷取網路資源,使用tcpdump、wireshark對Android應用程式進行抓包並分析。真是so easy。
android 程式怎加密,不讓別人反編譯?
注意看你的工程
選擇priject.properties檔案開啟,
xml檔案加密,我就不太清楚,還得學習一下。
android開發環境不成功
樓主,安裝平台環境,特別是有不同版本的時候,偶爾會出現類似的安裝錯誤,有時候會搞很久,這是正常現象,一般情況下,就算解決了一個,會立即出現下一個安裝錯誤,原因有時很明顯有時不知為何,所以這種情況下,最有效方法就是重裝系統,換一個教程試一試,再不行再重裝,一般初學者第一次會安裝一兩天(包括網路下載安裝包),熟悉了,下次再需要安裝環境的時候,跟網遊升級一樣,最多幾個小時就可以安裝完成。無人指導的情況下,重裝是上策。