自從接觸了android開發之后,感覺代碼都容易給一些工具反編譯,比如我自己常用的dex2jar+jdgui,還有其它一些等等,所以下面就介紹下自己在實際應用的解決方案吧。
1.針對要一些 要加密的代碼,本人抽離出接口出來,比如,一個類A會實現類的接口IA,然而在程序中就會看到接口定義,而不會看到具體的實現類的代碼,因為具體實現類的代碼是通過動態加載的。
2.加密具體實現類,這一步主要是加密實現類,過程是這樣的,先導出實現類的jar包,然后通過dx工具轉換格式,然后通過加密算法加密轉換后的jar。
3.通過jni解密和加載類,這一步主要是在C/C++解密程序中的需要加載的jar,然后通過 通過dexclassloader去加載,當然這一步都是在jni層實現的。
4.這樣整個jar包都是加載進去android dalvikvm 去了,所以都可以用反射去調用相應的類,當然性能上可讀有影響,不過只是少量代碼而已,整個代碼還是需要用混淆的。
歡迎拍磚。。