Androidプログラミングの逆コンパイル防止方法
本論文の例は、Androidプログラミングの逆コンパイル防止の実現方法を説明する。皆さんに参考にしてあげます。具体的には以下の通りです。
1.プログラムがシミュレータ上で実行されているかどうかを判断する
5.花指令、影響jd-gi しかし、最新バージョンのjd-guiはすでに修復されました。
https://***/ サードパーティの「暗号化好き」サイト 1.公式のパッケージキーツールを使って包装して「暗号化する」ウェブサイトにアップロードして処理し、サイト上でダウンロードし、ダウンロード後は「暗号化する」パッケージツールで再度包装すればいいです。
ここで述べたように、皆さんの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
");
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形式の写真と書く 最新バージョンのapptoolはすでに修復されました。5.花指令、影響jd-gi しかし、最新バージョンの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.公式のパッケージキーツールを使って包装して「暗号化する」ウェブサイトにアップロードして処理し、サイト上でダウンロードし、ダウンロード後は「暗号化する」パッケージツールで再度包装すればいいです。
ここで述べたように、皆さんのAndroidプログラムの設計に役に立ちます。