对Dex进行完整性的检查,可通过CRC,或者Hash值。可将校验值放到String资源文件里,或者放到服务器中。





1. 在代码中完成校验值对比逻辑,此部分代码后续不能再改变,否则CRC值会发生变化;

2. 从生成的APK文件中提取出classes.dex文件,计算CRC值,或Hash值,

3. 将计算出的值放入strings.xml文件中



string apkPath=this.getPackageCodePath();



Long dexCRC=Long.parseLong(this.getString(R.string.dex_crc));



try{

ZipFile zipfile=new ZipFile(apkPath);



ZipEntry dexentry=zipfile.getEntry("classes.dex");



if(dexentry.getCrc()!=dexCRC){//代码逻辑中,进行校验

System.out.println("Dex has been modified!");

}else

...

破解方法:逻辑判断的true/false容易更改





对APK的完整性校验:Hash值放在服务端比较合适。



MessageDigest msgDigest=null;



try{

msgDigest= MessageDigest.getInstance("md5");

byte[] bytes=new byte[8192];

int byteCount;



FileInputStream fis=null;

fis =new FileInputStream(new File(apkpath));



while((byteCount=fis.read(bytes))>0){

msgDigest.update(bytes,0,byteCount);

BinInteger bi=new BigInteger(1,msgDigest.digest());

String md5 =bi.toString(16);

fis.close();



//从服务器获取Hash值并进行比较

...

}

apk、dex完整性验证的更多相关文章

  1. 利用IDA6.6进行apk dex代码动态调试

    网上公开IDA6.6已经有一段时间,这个版本有个好处就是可以动态调试java代码.正好现在需要动态调试,所以顺便练习一下. 根据android的官方文档,如果要调试一个apk里面的dex代码,必须满足 ...

  2. dex、apk完整性校验

    对Dex进行完整性的检查,可通过CRC,或者Hash值.可将校验值放到String资源文件里,或者放到服务器中. 在代码中完成校验值对比逻辑,此部分代码后续不能再改变,否则CRC值会发生变化: 从生成 ...

  3. android apk 自我保护技术-完整性校验

    关于防止android apk被反编译的技术我们前面已经讲了四种. 加壳技术 运行时修改字节码 伪加密 对抗JD-GUI 如果有不明白的可以查看我的博客的前四篇中关于这四种技术的介绍.接下来我们接着介 ...

  4. Android 验证APK是否已经签名或是否是Debug签名

    https://source.android.google.cn/ http://www.android-doc.com/tools/publishing/app-signing.html Signi ...

  5. APK自我保护方法

    标 题: [原创]APK自我保护方法 作 者: MindMac 时 间: 2013-12-28,21:41:15 链 接: http://bbs.pediy.com/showthread.php?t= ...

  6. Andorid APK反逆向

    Andorid APK反逆向解决方案---梆梆加固原理探寻http://blog.csdn.net/androidsecurity/article/details/8892635 Android AP ...

  7. 深度探究apk安装过程

    一.先验知识 0.PcakageaManagerService版本号变化 1.概述 2.PackageManagerService服务启动流程 3. PackageManagerService入口 二 ...

  8. APK文件结构和安装过程

    APK文件结构Android应用是用Java编写的,利用Android SDK编译代码,并且把所有的数据和资源文件打包成一个APK (Android Package)文件,这是一个后缀名为.apk的压 ...

  9. 【Android 应用开发】 Android APK 反编译 混淆 反编译后重编译

    反编译工具 : 总结了一下 linux, windows, mac 上的版本, 一起放到 CSDN 上下载; -- CSDN 下载地址 : http://download.csdn.net/detai ...

随机推荐

  1. 8.rabbitmq RPC模拟微服务架构中的服务调用

    标题 : 8.rabbitmq RPC模拟微服务架构中的服务调用 目录 : RabbitMQ 序号 : 8 { var connectionFactory = new ConnectionFactor ...

  2. HDU 4866 Shooting(主席树)题解

    题意:在一个射击游戏里面,游戏者可以选择地面上[1,X]的一个点射击,并且可以在这个点垂直向上射击最近的K个目标,每个目标有一个价值,价值等于它到地面的距离.游戏中有N个目标,每个目标从L覆盖到R,距 ...

  3. Linux 应用开发----socket编程笔记

    Linux socket编程 套接字定义描述 套接字的域 AF_INET ====>IPv4 AF_INET6 ====>IPv6 AF_UNIX ====>unix 域 AF_UP ...

  4. Makefile 流程控制(error,warning)等调试选项

    1.退出码 0 ok1 错误2 使用了-q 选项 且目标不需要更新 返回2 2.选项 -f --file 指定makefile脚本 -n --just-print --dry -run -- reco ...

  5. Chrome Enhanced Protection

    Chrome Enhanced Protection chrome://settings/security?q=enhanced 站内外链跳转拦截 refs xgqfrms 2012-2020 www ...

  6. js 十大排序算法 All In One

    js 十大排序算法 All In One 快速排序 归并排序 选择排序 插入排序 冒泡排序 希尔排序 桶排序 堆排序(二叉树排序) 基数排序 计数排序 堆排序(二叉树排序) https://www.c ...

  7. set CSS style in js solutions All In One

    set CSS style in js solutions All In One css in js set each style property separately See the Pen se ...

  8. VS Code Extension

    VS Code Extension https://code.visualstudio.com/api/get-started/your-first-extension xgqfrms 2012-20 ...

  9. js & void() & void(0)

    js & void() & void(0) https://www.runoob.com/js/js-void.html void() <a href="javascr ...

  10. GitHub for mobile

    GitHub for mobile https://github.com/mobile