Android 程序的破解一般步骤如下:反编译、静态分析、动态调试、重编译。我们可以从这几个步骤着手反破解

反编译

我们可以查找反编译器的漏洞,从而使反编译器无法正确解析APK文件

静态分析

  • 对java代码进行混淆
  • 对NDK编写的Native 程序进行加壳

动态调式

可以判断程序是否可被调试

if((getApplicationInfo().flag &= ApplicationInfo.FLAG_DEBUGGABLE)!=0){
    //程序被调试
}

或使用SDK提供的方法检查调试器是否连接

android.os.Debug.isBebuggerCoonected();

判断是否在模拟器中

重编译

进行签名检查

原理:由于重编译,会导致软件的签名被改变。所以
可以查看软件的签名是否改变来检查软件是否被修改。

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 e){
        sig = 0;
        e.printStackTrace();
    }
    return sig;
}

对重编译的class.dex文件进行校验

原理:对代码进行修改,然后重编译会导致classes.dex文件的hash被改变

private boolean checkCRC(){
    boolean beModified = false;
    long src = long.parseLong(getString(R.string.crc));

    ZipFile zf;
    try{

        zf = new ZipFile(getApplicationContext().getPackageCodePath());
        ZipEntry ze = zf.getEntry("classes.dex");
        if(ze.getCrc == crc){
            bemodified = true;
        }
    }
    catch(IOException e){
        e.printStackTrace();
        beModified = false;
    }
    return beModified;
}

Android程序的反破解技术的更多相关文章

  1. Android 程序的反破解技术

    我们知道,利用 apktool 可以将 apk 反编译为 smali 文件,利用 dex2jar 也可以将 apk 反编译为 jar 文件.这样的话,破解者就可以根据关键代码(比如资源文件中的字符串) ...

  2. android apk 防止反编译技术第四篇-对抗JD-GUI

    又到周末一个人侘在家里无事可干,这就是程序员的悲哀啊.好了我们利用周末的时间继续介绍android apk防止反编译技术的另一种方法.前三篇我们讲了加壳技术(http://my.oschina.net ...

  3. 转: android apk 防止反编译技术(1~5连载)

    转: android apk 防止反编译技术 做android framework方面的工作将近三年的时间了,现在公司让做一下android apk安全方面的研究,于是最近就在网上找大量的资料来学习. ...

  4. android apk 防止反编译技术第一篇-加壳技术

    做android framework方面的工作将近三年的时间了,现在公司让做一下android apk安全方面的研究,于是最近就在网上找大量的资料来学习.现在将最近学习成果做一下整理总结.学习的这些成 ...

  5. android apk 防止反编译技术第二篇-运行时修改字节码

    上一篇我们讲了apk防止反编译技术中的加壳技术,如果有不明白的可以查看我的上一篇博客http://my.oschina.net/u/2323218/blog/393372.接下来我们将介绍另一种防止a ...

  6. android apk 防止反编译技术第三篇-加密

    上一篇我们讲了apk防止反编译技术中的加壳技术,如果有不明白的可以查看我的上一篇博客http://my.oschina.net/u/2323218/blog/393372.接下来我们将介绍另一种防止a ...

  7. android apk 防止反编译技术第二篇-运行时修改Dalvik指令

    上一篇我们讲了apk防止反编译技术中的加壳技术,如果有不明白的可以查看我的上一篇博客http://my.oschina.net/u/2323218/blog/393372.接下来我们将介绍另一种防止a ...

  8. Android程序的反编译对抗研究

    转自: http://www.freebuf.com/tools/76884.html 一.前言 对抗反编译是指让apk文件或者dex文件无法正常通过反编译工具,而且有可能导致工具异常或者崩溃,如ap ...

  9. Android程序apk反编译破解方法

    简短不割了,我们直接奔主题吧. 把apktool-install-windows-r05-ibot文件里的两个文件剪切到apktool1.5.1目录. 新建一个文件夹把需要破解的apk应用程序放进去. ...

随机推荐

  1. Docker常用命令(二)

    Docker常用命令 查看Docker所有正在运行的容器 docker ps 查看Docker已退出的容器 docker ps -a 查看Docker所有镜像 docker images 删除镜像 删 ...

  2. power of the test

    https://www.youtube.com/watch?v=UApFKiK4Hi8

  3. 精选20道Java代码笔试题

    1.运算符优先级问题,下面代码的结果是多少? public class Test { public static void main(String[] args) { int k = 0; int r ...

  4. 通过jQuery制作电子时钟表的代码

    源码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <titl ...

  5. domOperation.js

    // 可视宽高var ch = document.documentElement.clientHeightvar cw = document.documentElement.clientWidth / ...

  6. Android中的padding和margin的区别

    在Android的布局中,常常有人将padding和margin搞混,他们其实不一样的,padding是该控件的内部距离. magin是该控件与其他控件之间的距离.例如 <LinearLayou ...

  7. Java并发编程(四)synchronized

    一.synchronized同步方法或者同步块 在了解synchronized关键字的使用方法之前,我们先来看一个概念:互斥锁,顾名思义:能到达到互斥访问目的的锁. 举个简单的例子:如果对临界资源加上 ...

  8. [20180627]测试bbed是否支持管道命令.txt

    [20180627]测试bbed是否支持管道命令.txt --//测试bbed是否支持管道命令.txt 1.环境:SCOTT@test01p> @ ver1PORT_STRING         ...

  9. linux下zip文件解压乱码的问题

    因为编码问题,zip文件中的中文文件在linux下解压会出现乱码 如果你使用archlinux那么使用AUR安装unzip-natspec就可以解决这个问题 https://aur.archlinux ...

  10. tkinter学习系列之(六)Radiobutton控件

    目录 目录 前言 (一)基本属性 (二)在Frame里布局: 目录 前言 Radiobutton单选框,在一组选框中,只能选中一个. (一)基本属性 (1)特有属性: value 按钮的值 varia ...