首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Android 安全】DEX 加密 ( Java 工具开发 | apk 文件对齐 )

【Android 安全】DEX 加密 ( Java 工具开发 | apk 文件对齐 )

作者头像
韩曙亮
发布2023-03-28 19:05:38
发布2023-03-28 19:05:38
2.9K00
代码可运行
举报
运行总次数:0
代码可运行

文章目录

一、apk 对齐操作


参考 【Android 安全】DEX 加密 ( DEX 加密使用到的相关工具 | dx 工具 | zipalign 对齐工具 | apksigner 签名工具 ) 中的 zipalign 对齐工具 ,

zipalign 工具位置 D:\001_Programs\001_Android\002_Sdk\Sdk\build-tools\30.0.2\zipalign.bat ;

zipalign 命令参考 :

代码语言:javascript
代码运行次数:0
运行
复制
zipalign 4 -v -f in.apk out.apk

zipalign 对齐工具参数设置 :

代码语言:javascript
代码运行次数:0
运行
复制
Usage: zipalign [-f] [-p] [-v] [-z] <align> infile.zip outfile.zip
       zipalign -c [-p] [-v] <align> infile.zip

  <align>: alignment in bytes, e.g. '4' provides 32-bit alignment
  -c: check alignment only (does not modify file)
  -f: overwrite existing outfile.zip
  -p: memory page alignment for stored shared object files
  -v: verbose output
  -z: recompress using Zopfli
  • <align> :
4

, 表示

32

位 对齐 ;

  • -c : 只检查对齐 , 不修改文件 ;
  • -f : 如果输出文件已经存在 , 覆盖该文件 ;
  • -v : 输出相关信息
  • -z : 使用 Zopfli 重新压缩文件 ;

一般使用 -f 参数配置 ;

注意上述参数的使用顺序 , 必须按照 -f -v <align> 顺序使用参数 ;

二、apk 对齐命令


完整绝对路径执行的命令 ( 仅做参考 ) :

D:/001_Programs/001_Android/002_Sdk/Sdk/build-tools/30.0.2/zipalign -f 4 D:\002_Project\002_Android_Learn\DexEncryption\app\build\outputs\apk\debug\app-unsigned.apk D:\002_Project\002_Android_Learn\DexEncryption\app\build\outputs\apk\debug\app-unsigned-aligned.apk

参数说明 :

D:/001_Programs/001_Android/002_Sdk/Sdk/build-tools/30.0.2/zipalign 是 zipalign.exe 工具的完整绝对路径 ;

-f 参数代表 , 如果存在输出文件 , 则覆盖该文件 ;

4 表示 32 位对齐 ;

D:\002_Project\002_Android_Learn\DexEncryption\app\build\outputs\apk\debug\app-unsigned.apk 表示被对齐的 apk 文件 的 绝对路径 ;

D:\002_Project\002_Android_Learn\DexEncryption\app\build\outputs\apk\debug\app-unsigned-aligned.apk 表示对齐后的输出文件的 绝对路径 ;

三、apk 对齐操作代码示例


对齐操作代码示例 :

代码语言:javascript
代码运行次数:0
运行
复制
    /*
        4 . 对齐操作
     */
    // 对齐操作的输出结果, 将 app-unsigned.apk 对齐, 对齐后的文件输出到 app-unsigned-aligned.apk 中
    var unSignedAlignApk = File("app/build/outputs/apk/debug/app-unsigned-aligned.apk")

    // 打印要执行的命令
    println("cmd /c D:/001_Programs/001_Android/002_Sdk/Sdk/build-tools/30.0.2/zipalign -f 4 ${unSignedApk.absolutePath} ${unSignedAlignApk.absolutePath}")

    /*
        将 app-unsigned.apk 对齐
        使用 zipalign 工具命令

        注意 : Windows 命令行命令之前需要加上 "cmd /c " 信息 , Linux 与 MAC 命令行不用添加
     */
    process = Runtime.getRuntime().exec("cmd /c D:/001_Programs/001_Android/002_Sdk/Sdk/build-tools/30.0.2/zipalign -f 4 ${unSignedApk.absolutePath} ${unSignedAlignApk.absolutePath}")
    // 等待上述命令执行完毕
    process.waitFor()

    // 执行结果提示
    if(process.exitValue() == 0){
        println("对齐操作 执行成功");
    } else {
        println("对齐操作 执行失败");
    }

四、apk 对齐执行结果


执行结果 : 红色矩形框就是对齐后生成的 app-unsigned-aligned.apk 文件 ;

命令行输出 :

代码语言:javascript
代码运行次数:0
运行
复制
cmd /c D:/001_Programs/001_Android/002_Sdk/Sdk/build-tools/30.0.2/zipalign -f 4 D:\002_Project\002_Android_Learn\DexEncryption\app\build\outputs\apk\debug\app-unsigned.apk D:\002_Project\002_Android_Learn\DexEncryption\app\build\outputs\apk\debug\app-unsigned-aligned.apk
对齐操作 执行成功
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-11-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、apk 对齐操作
  • 二、apk 对齐命令
  • 三、apk 对齐操作代码示例
  • 四、apk 对齐执行结果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档