`
aineice
  • 浏览: 6891 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Dex文件的完整性校验

阅读更多
  classes.dex 在 Android 系统上基本负责完成所有的逻辑业务,因此很多针对Android 应用程序的篡改都是针对 classes.dex 文件的。在 APK 的自我保护上,也可以考虑对 classes.dex文件进行完整性校验,简单的可以通过 CRC 校验完成,也可以检查 Hash 值。由于只是检查classes.dex,所以可以将 CRC 值存储在 string 资源文件中,当然也可以放在自己的服务器上,
  通过运行时从服务器获取校验值。基本步骤如下:
  首先在代码中完成校验值比对的逻辑,此部分代码后续不能再改变,否则 CRC 值会发生变化;
  从生成的 APK 文件中提取出 classes.dex 文件,计算其 CRC 值,其他 hash 值类似;
  将计算出的值放入 strings.xml 文件中。
  核心代码如下:
  代码:
  1. String apkPath = this.getPackageCodePath();
  2. Long dexCrc = Long.parseLong(this.getString(R.string.dex_crc));
  3. try {
  4. ZipFile zipfile = new ZipFile(apkPath);
  5. ZipEntry dexentry = zipfile.getEntry("classes.dex");
  6. if(dexentry.getCrc() != dexCrc){
  7. System.out.println("Dex has been *modified!");
  8. }else{
  9. System.out.println("Dex hasn't been modified!");
  10. }
  11. } catch (IOException e) {
  12. // TODO Auto-generated catch block
  13. e.printStackTrace();
  14. }
  但是上述的保护方式容易被暴力破解,完整性检查最终还是通过返回true/false 来控制后续代码逻辑的走向,如果攻击者直接修改代码逻辑,完整性检查始终返回 true,那这种方法就无效了,所以类似文件完整性校验需要配合一些其他方法,或者有其他更为巧妙的方式实现。那么我们可以借用第三方apk安全漏洞检测平台:爱内测(www.ineice.com),能检测程序可执行文件Dex是否做加密保护处理,给出修复建议,防止被dex2jar等工具反编译。
分享到:
评论

相关推荐

    DEX文件学习笔记

    同时,APK包中的DEX文件也需要与应用的签名匹配,以保证应用的完整性和安全性。 四、混淆与优化 1. **ProGuard**:在构建过程中,开发者可以使用ProGuard对DEX文件进行混淆,降低逆向工程的难度。 2. **dexopt**...

    Dex文件头结构解析器

    2. **checksum**:4字节的CRC32校验和,用于验证文件的完整性和正确性。这个值覆盖了Dex文件的全部内容,除了magic和checksum字段自身。 3. **signature**:20字节的SHA-1散列值,提供更安全的完整性检查。签名是对...

    移动应用安全测试基础以及技能分享-杨凯仁.pdf

    - **Dex文件完整性校验**:加载前先校验文件完整性,防止被篡改。 3. **完整性检测**: - **应用签名校验**:在应用启动时进行签名校验,校验通过则继续运行,反之则退出。 - **应用中文件的完整性校验**:打包...

    dex文件格式详细分析

    魔数用于快速识别文件类型,而文件大小和校验和用于验证文件的完整性。 3. string_ids 字符串ID区域(String IDs)包含了Dex文件中使用到的所有字符串的引用。每个字符串都有一个唯一的索引,通过这个索引可以快速...

    apk安全性校验

    总结来说,APK安全性校验主要涉及签名证书的SHA1值校验和`classes.dex`文件的SHA-1完整性校验。通过这两个关键步骤,开发者能够确保他们的应用程序在分发和安装过程中保持原貌,不受恶意篡改。对于Android开发者而言...

    安卓多 dex 加载和 dex 加解密

    这通常涉及到在加密过程中添加一个校验和或哈希值,然后在运行时检查其完整性。 总的来说,安卓的多DEX加载机制和DEX加解密是大型和安全应用开发中的重要技术。理解并正确实施这些技术,可以帮助开发者克服 Dalvik ...

    dex2jar android 反编译工具---将apk反编译成java源代码(classes.dex转化成jar文件)

    1. **d2j-dex-recompute-checksum.bat**:这个脚本用于重新计算DEX文件的校验和,有时在处理DEX文件时可能需要这一步。 2. **d2j-dex2jar.bat**:这是核心的转换脚本,它将DEX文件转换为jar文件,使开发者能查看APK...

    windows平台下的解析dex的源代码

    1. **Dex文件头解析**:Dex文件的开头部分包含了文件版本、校验和、魔数等信息,用于验证文件的完整性和格式。 2. **索引解析**:Dex文件有多个索引表,如字符串索引、类型索引、原型索引和方法索引,用于快速查找...

    Android笔记- 从DEX档案格式看Dalvik的运作

    为了确保DEX文件的完整性和安全性,在加载DEX文件时会进行校验。对于已经优化过的DEX文件,校验时会忽略前40字节的DexOptHeader,只考虑DexHeader及之后的部分。校验过程主要采用Adler32算法,具体步骤如下: 1. **...

    apk加固插件 带签名校验、dex加密、资源混淆

    在Android系统中,每个APK文件都需要通过数字签名来确认其来源和完整性。签名验证确保了APK未经篡改,并且只有信任的开发者才能安装和更新应用。这个插件包含签名校验功能,意味着它会检查APK的签名信息,防止未...

    DexFixer.zip

    1. **校验和修复**:DEX文件有内置的校验和,用于检查文件的完整性。如果文件被修改,校验和可能不匹配,DexFixer可以重新计算并更新校验和。 2. **结构修复**:如果DEX文件的内部结构遭到破坏,例如类索引、方法...

    去APK签名校验工具

    APK签名校验工具是一种用于验证Android应用程序(APK)签名完整性和安全性的软件工具。在Android系统中,每个发布到Google Play或其他第三方应用商店的APK文件都需要经过签名过程,确保开发者身份的可追溯性,同时...

    安卓反向编译.APK文件

    四、对于classes.dex文件,它是java源码编译生成的字节码文件,可以通过dex2jar反编译,然后使用JD-GUI工具将jar文件反编译成java文件 五、无法通过反编译进行修改软件,因为在META-INF文件夹下存放的是软件的签名...

    app_安全再增强_--_“无法”脱壳的加固.pdf

    - **完整性校验**: 通过在运行时对代码或数据进行完整性校验,确保应用程序未被修改。 - **动态加载库**: 加载和运行外部的库文件,可以用于执行某些关键的安全检查或运行保护代码。 ### 其他加固技术 - **动态...

    APK反编译[归类].pdf

    META-INF 目录下存放的是签名信息,用来保证 APK 包的完整性和系统的安全。在 Eclipse 编译生成一个 API 包时,会对所有要打包的文件做一个校验计算,并把计算结果放在 META-INF 目录下。而在 OPhone 平台上安装 APK...

    从apk中提取classes.dex并返回base64MD5原始编码___下载.zip

    在软件安全领域,MD5常用于校验文件的完整性和一致性,因为即使微小的文件改动也会导致MD5值的显著变化。然而,由于MD5碰撞攻击的存在,它已不再适用于安全敏感的应用场景。 Base64是一种用于将二进制数据编码为...

    安卓应用软件apk

    但由于安卓使用的dalvik虚拟机与标准的java虚拟机是不兼容的,dex文件与class文件相比,不论是文件结构还是opcode都不同。 apk文件的结构可以总结为以下几个部分: * AndroidManifest.xml:描述了应用的名字、版本...

    APK自我保护方法探讨

    本文将深入探讨Android应用程序(APK)的自我保护技术,包括Dex文件结构、方法隐藏、完整性校验、反射防御、动态加载机制、字符串处理、代码乱序、模拟器检测、伪加密技术、Manifest欺骗、调试器检测、代码混淆、NDK...

    App安全检测指南-V1.0-t00ls

    本文档提供了关于 APP 安全检测的基本框架,涵盖了安装包签名、反编译保护和应用完整性校验三个重要方面。通过对这些方面的深入理解和实施,可以帮助提高 APP 的安全性,减少潜在的安全威胁。需要注意的是,安全检测...

    DexMon-源码.rar

    - 文件完整性验证 【压缩包子文件的文件名称列表】 "DexMon-源码.zip" 表示源代码文件被压缩为ZIP格式,解压后通常会包含以下几个部分: 1. **源代码文件夹**:包含Java或Kotlin源代码文件,可能按照模块或功能...

Global site tag (gtag.js) - Google Analytics