新无止竞

首页 » Android » Android之防止反编译技巧
2018-12-9
分类: Android

Android之防止反编译技巧

文章作者:独自狂战
手机扫码查看

参考了网上的许多教程,决定还是完整记录一下我自己的操作 首先从OpenCV官网https://opencv.org/releases.html下载最新的

阅读(15) 评论(0) 百度已收录

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工具打包后上传到"爱加密"网站进行处理,然后到网站上面下载,下载后还要用"爱加密"的打包工具再次进行打包即可。

文章如无特别注明均为原创! 作者: 独自狂战, 转载或复制请以 超链接形式 并注明出处 新无止竞博客 - 专注网络技术资源分享的IT博客
原文地址《 Android之防止反编译技巧》发布于2018-12-9

分享到:
打赏

评论

游客

切换注册

登录

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册