本文執行個體講述了Android編程之防止反編譯的實現方法。分享給大家供大家參考,具體如下:
1. 判斷程式是否運行在模擬器上
boolean isRunningInEmualtor() { boolean qemuKernel = false; Process process = null; DataOutputStream os = null; try{ process = Runtime.getRuntime().exec("getprop ro.kernel.qemu"); os = new DataOutputStream(process.getOutputStream()); BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream(),"GBK")); os.writeBytes("exit\n"); os.flush(); process.waitFor(); // getprop ro.kernel.qemu == 1 在模擬器 // getprop ro.product.model == "sdk" 在模擬器 // getprop ro.build.tags == "test-keys" 在模擬器 qemuKernel = (Integer.valueOf(in.readLine()) == 1); Log.d("com.droider.checkqemu", "檢測到模擬器:" + qemuKernel); } catch (Exception e){ qemuKernel = false; Log.d("com.droider.checkqemu", "run failed" + e.getMessage()); } finally { try{ if (os != null) { os.close(); } process.destroy(); } catch (Exception e) { } Log.d("com.droider.checkqemu", "run finally"); } return qemuKernel;}
2. 檢測keystore簽名,再與之前得做比較
public int getSignature(String packageName) { PackageManager pm = this.getPackageManager(); PackageInfo pi = null; int sig = 0; try { pi = pm.getPackageInfo(packageName, PackageManager.GET_SIGNATURES); Signature[] s = pi.signatures; sig = s[0].hashCode(); } catch (Exception e1) { sig = 0; e1.printStackTrace(); } return sig;}
3. 檢測包名,版本名和版本號碼,然後做判斷:
private String getAppInfo() { try { String pkName = this.getPackageName(); String versionName = this.getPackageManager().getPackageInfo( pkName, 0).versionName; int versionCode = this.getPackageManager() .getPackageInfo(pkName, 0).versionCode; return pkName + " " + versionName + " " + versionCode; } catch (Exception e) { } return null;}
4. 把jpg圖片寫成是png格式得圖片 但是最新版本的apktool已經修複了
5. 花指令,影響jd-gui 但是最新版本的jd-gui已經修複
private static final char[] wJ = "0123456789abcdef".toCharArray();public static String imsi = "204046330839890";public static String p = "0";public static String keyword = "電話";public static String tranlateKeyword = "%E7%94%B5%E8%AF%9D";
在每個類裡面加入 如上欄位。。。。
https://***/ 一個第三方得”愛加密“網站 1.需要使用官方的打包key工具打包後上傳到"愛加密"網站進行處理,然後到網站上面下載,下載後還要用"愛加密"的打包工具再次進行打包即可。
希望本文所述對大家Android程式設計有所協助。