首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Android 安全】DEX 加密 ( 代理 Application 开发 | 解压 apk 文件 | 判定是否是第一次启动 | 递归删除文件操作 | 解压 Zip 文件操作 )

| 获取 apk 文件并准备相关目录 ) 博客中讲解了 multiple-dex-core 依赖库开发 , 每次启动都要解密与加载 dex 文件 , 在该博客中讲解到了 获取 apk 文件 , 并准备解压目录..., 都要执行上述操作 ; 现在讨论解压文件的细节操作 ; 如果应用是 第一次启动 , 则需要解压该 apk 文件 , 并进行解密 ; 如果应用 不是第一次启动 , 则直接获取之前已经 解压 apk 并解密好的..., 这些文件是 V1 签名文件保存目录 , 不需要解压 , 跳过即可 , 如果该文件条目 , 不是目录 , 说明就是文件 , 向刚才创建的目录中写出文件 ; // 遍历压缩包中的文件...或 目录名称 val name = zipEntry.name // 如果 apk 压缩包中含有以下文件 , 这些文件是 V1 签名文件保存目录...// 如果 apk 压缩包中含有以下文件 , 这些文件是 V1 签名文件保存目录 , 不需要解压 , 跳过即可 if (name ==

1.2K00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    八、从华为HMS Core集成过程看密码学知识

    hms通过SDK提供的一些能力,即便是离线能力,安装apk之后第一次使用需要联网。因为需要后台校验一些配置信息,还包括指纹、包名、App ID等。如果校验不通过是无法调用这些API的。   ...而且运行apk的时候,hms的sdk会根据你的包名去匹配后台该包名底下的配置,然后进行验证。...2.生成签名证书   比如.jks或.keystore密钥库,密钥库里可以包含多个私钥证书,自己利用android studio就可以生成,每个密钥用别名alias区分   注意:这个私钥证书和https...3.选择签名的私钥查看证书并导出指纹。   ...将已经生成的签名文件HmsDemo.jks拷贝到app文件夹下,并打开应用级build.gradle文件(通常是 app/build.gradle) 在build.gradle文件的android闭包中添加签名配置信息

    64610

    Android插件化基础3----Android的编译打包流程详解

    文件,生成classes.dex文件 5 打包生成apk 6 对apk文件进行签名 7 对签名后的apk进行对齐处理 下面我们就详细看下 (一)、打包资源文件,生成R.java文件 1、输入...对应的.java文件 5、补充: 对于没有使用到的aidl的android工程,这一步可以跳过,aidl工具解析接口定义文件并生成相应的.java文件,供程序调用 (三)、编译工程源码,生成相应的...4、输出: 未签名的.apk文件 (六)、对apk文件进行签名 1、输入: 未签名的.apk文件 2、工具: jarsigner 3、过程: android的应用程序需要签名才能在android...设备上安装,签名apk文件有两种情况: 在调用应用程序时,也就是我们通常称为的debug模式的签名,平时开发的时候,在编译调试程序时会自己使用一个debug.keystore对apk进行签名 正式发布时对应用程序打包进行签名...系统资源的build/tools/zipalign目录,它的主要工作是将apk包进行对齐处理,使apk包中的所有资源文件举例文件起始偏移为4字节的整数倍,这样通过内存映射访问apk时的速度会更快,验证apk

    2.1K22

    实现Android APK瘦身99.99%

    基线测定 一开始,我们用 Android Studio 生成一个缺省的 App,创建密钥库(Keystore) 并对 App 签名,然后使用命令stat -f%z $filename测定生成 APK 文件的字节数大小...“true”值,这将启用 Proguard (https://www.guardsquare.com/en/proguard) , 该功能将从 App 中剥离出那些未使用的代码,并对符号的名称做模糊化处理...Android Studio UI 中提供了 v1 签名的复选框,我们需要去除该选择,并生成一个签名的 APK。我们也需要做相反的过程。...总而言之,gradle 生成了一个未签名的归档文件,zipalign 更改了未压缩资源的字节对齐方式,用于改进加载 APK 时的 RAM 使用,最后 APK 将被加密签名。...我们对未对齐的 APK 解压缩并手工签名,并手动移除了META-INF/MANIFEST.MF,这削减了 543 字节。如果有人知道原因,请告诉我!

    1.9K30

    ProGuard 在 Android 上的使用姿势

    当您开启 ProGuard 时,在某些非常微妙的情况下会让您的应用崩溃。虽然有些错误会在构建应用时发生,您能及时发现,但是也有些错误您只能在运行时发现,所以请确保您的应用经过彻底的测试。...不幸的是,ProGuard 可能会发现一些引用的类缺失,并给予告警,导致您的构建失败。 修复这个问题的关键是仔细观察构建时输出的消息,理解这些警告的内容并定位他们。...所以生产环境的构建(开启 ProGuard 时)一定要注重彻底的测试并正视这些错误。...APK Analyzer 和 ProGuard Android Studio 集成的 APK Analyzer 可以帮您看到哪些类被 ProGuard 移除了并支持为它们生成 keep 规则。...文件中的规则将会在应用构建时附加到应用主 ProGuard 配置并被使用。

    2.6K40

    「万物生长」一个APK从诞生到活跃在Android手机上

    调用AAPT2进行编译时,每次调用都应传递一个资源文件作为输入。然后,AAPT2 会解析该文件并生成一个扩展名为.flat的中间二进制文件。...APK签名方案v2是一种全文件签名方案,该方案能够发现对APK的受保护部分进行的所有更改,从而有助于加快验证速度并增强完整性保证。...使用APK签名方案v2进行签名时,会在APK文件中插入一个APK签名分块,该分块位于“ZIP中央目录”部分之前并紧邻该部分。...APK 签名方案 v2 验证 找到“APK 签名分块”并验证以下内容: “APK 签名分块”的两个大小字段包含相同的值。 “ZIP 中央目录结尾”紧跟在“ZIP 中央目录”记录后面。...这是一个流量的时代,而一个安装包的体积大小、安装时间经常就会成为用户安装时的软肋,原因见于 App竞品技术分析 (3)减小安装包的体积[8]。

    1K20

    Android Studio中使用Gradle打包

    在Build->Generate Signed APK 就会看到以下的弹出框 假设没有签名文件就创建新的签名文件,假设已经有签名文件,那么选择签名文件的位置,并填写好password就能够点Next...创建签名文件的方式跟老版本号(Eclipse+ADT)的签名方式一样,这里就不再多说了。 你会发现AS生成的签名文件是jks后缀名的,跟原来的能够说tore不一样。其实。...须要改两个地方:Signing Config,选择我们刚刚设置好的签名配置;在Proguard File这一栏选中项目中的proguard-rules.pro的绝对路径,也就是项目根文件夹下的app/proguard-rules.pro...以下我能够打包正式签名的apk包。 有三种方式: 1. 在Build-> Generate Signed APK… 直接下一步下面一步就能够打包了; 2....正式签名包假设没有更改过文件夹默认是在app文件夹下或者是app/build/output/apk文件夹下,个人比較喜欢放在后面那个文件夹。 还要注意一点。

    1.3K20

    第八章 自定义Android Gradle工程

    模式的时候,Android SDK已经为我们提供了一个默认的debug签名证书,我们可以直接使用,但是发布的时候,release模式构建时,我们要配置使用自己生成的签名证书。...如果你还有其他类型,想为其配置单独的签名,也可以这么做,比如付费版的VIP,单独进行签名配置、特别的渠道包单独配置等等。...debug apk的包名就是org.flysnow.app.example82.debug。...执行相应的assemble任务,就能生成对应BuildType的所有Apk。...8.4 使用混淆 代码混淆是一个非常有用的功能,它不仅可能优化我们的代码,让我们的Apk包变得更小,还可以混淆我们原来的代码,让反编译的人不容易看明白我们业务逻辑,很难分析。

    62210

    Android 系统预设 App,有什么难的?

    5、LOCAL_CERTIFICATE 在什么情况下签名。 testkey:普通 APK,默认情况下使用。 platform:该 APK 完成一些系统的核心功能。...:= SHARED_LIBRAYIES # 编译可执行文件 LOCAL_MODULE_CLASS := EXECUTABLES 7、include $(BUILD_PACKAGE) 表示生成一个 apk...:= disabled # 指定不需要混淆的native方法与变量的proguard.flags文件 LOCAL_PROGUARD_FLAG_FILES := proguard.flags include...如果直接用 mmm 编译然后 adb install -r xxx.apk 大概会出现如下错误: Failed to install out/target/product/p212/system/app...第三方定位如百度、高德,申请 SDK 时会需要填写包名和打包签名等信息,如何正确地预置源码 APP 可以定位,除了配置LOCAL_CERTIFICATE := platform使用系统的签名,还得在项目的

    5.4K22

    android代码签名和混乱的包装

    研究了一下android的apk困惑签名和代码包装,假设没有混乱包。然后apk人们可以直接查看源代码反编译出来,尽管混乱包或能看懂。...以下先说一下apk的签名: 1.apk签名必须先弄一个key,怎样生成key呢?那么就要运用jdk来生成。 首先必须把jdk在系统环境变量中配置好。 这个就不多说了,这是使用java就必须配置好的。...例如以下图: 弄到apk后就能够打包了,而且带上自己的签名。 在打包前我们须要加点东西来混淆代码。是我们打包后再反编译后无法正常查看代码。 混淆代码事实上灰常简单。...or is not regular file 加完后就能够签名打包apk了。...成功到处带签名的混淆代码的apk。 版权声明:本文博客原创文章,博客,未经同意,不得转载。

    44910

    React Native App设置&Android版发布

    3.设置图标 在~/android/app/src/main/res/下,你会看到一系列mipmap开头的文件夹(默认是4个),按照里面ic_launcher.png的尺寸,生成四个版本的icon并替换...二、打包发布android应用 1.生成签名秘钥 在Windows上keytool命令放在JDK的bin目录中(比如C:\Program Files\Java\jdkx.x.x_x\bin),你可能需要在命令行中先进入那个目录才能执行此命令...4.发行应用 执行命令:  cd android && gradlew assembleRelease 生成的APK文件位于android/app/build/outputs/apk/app-release.apk...5.启用Proguard代码混淆来缩小APK文件的大小(可选) 进入目录~/android/app/build.gradle,设置minifyEnabled选项为true: def enableProguardInReleaseBuilds...Proguard是一个Java字节码混淆压缩工具,它可以移除掉React Native Java(和它的依赖库中)中没有被使用到的部分,最终有效的减少APK的大小。

    99560

    深入探索 Android 包瘦身(上)

    此外,每当在 res 文件夹下放一个文件时,aapt 就会自动生成对应的 id 并保存在 .R 文件中,但 .R 文件仅仅只是保证编译程序不会报错,实际上在应用运行时,系统会根据 ID 寻找对应的资源路径...首先,对前一步生成的 CERT.SF 使用了 SHA256(SHA1)生成了数字摘要并使用了 RSA 加密,接着,利用了开发者私钥进行签名。然后,在安装时使用公钥解密。....apk 上述 redex 命令的 关键参数含义 如下所示: --sign:对生成的apk进行签名。...-c:指定 redex 进行 Dex 处理时需要依据的 CONFIG 配置文件。 -o:指定生成 APK 的全路径。...使用上面的 redex 命令我们就可以对优化后的 APK 进行 再签名和混淆,等待一会后(如果你的 APK 的 Dex 数量和体积很大,可能会比较久),就会生成 优化后的 APK:app-release-proguardwithr8

    2.1K30

    Android安全攻防战,反编译与混淆技术完全解析(下)

    那么现在我们来打一个正式版的APK文件,在Android Studio导航栏中点击Build->Generate Signed APK,然后选择签名文件并输入密码,如果没有签名文件就创建一个,最终点击Finish...完成打包,生成的APK文件会自动存放在app目录下。...除此之外也可以在build.gradle文件当中添加签名文件配置,然后通过gradlew assembleRelease来打出一个正式版的APK文件,这种方式APK文件会自动存放在app/build/outputs...除此之外,第三方的Jar包都是会被混淆的,LitePal不管是包名还是类名还是方法名都被完完全全混淆掉了。 这些就是Android Studio打正式APK时默认的混淆规则。...这些依赖的Jar包所存在的路径每台电脑都不一样,你所需要做的就是在你自己的电脑上成功找到这些依赖的Jar包并导入即可。

    1.7K70

    Android 构建过程分析

    前言 或许我们都知道Android构建会经历资源合并打包、源码编译、dex生成及打包签名等步骤,可是不是每个人对这些过程中发生的事情都了然于心呢?...构建过程中,会根据manifest中元素、属性及赋值来生成一个manifest文件,并应用于后续的打包过程。...打包签名 此时万事俱备,只要把资源包app.ap_、可执行文件classes.dex及项目(包含第三方依赖)中的非源码文件一起添加到压缩包中去,我们的安装包(.apk文件)也就生成了。...另外,apk需要经过签名才可以发布。可通过jarsigner工具完成。 zipalign 文件对齐并非android构建的必要步骤,但对齐处理后可提高系统访问安装包资源的效率。...f -v 4 app.apk toapp.apk 以下命令则起到了检验压缩包有没有对齐的作用: zipalign -c -v 4 app.apk 总结 本文主要介绍了android构建的各个主要步骤

    3.2K40

    Android性能优化(十)之App瘦身攻略

    Proguard是一个免费的Java类文件压缩、优化、混淆、预先验证的工具,可以检测和移除未使用的类、字段、方法、属性,优化字节码并移除未使用的指令,并将代码中的类、字段、方法的名字改为简短、无意义的名字...,如果混淆规则没有配置好,在Release模式可能会出现debug模式下不出现的Bug; Proguard也不是你想搞就能搞,如果App做了一段时间之后再来做Proguard,项目包结构不规范的话,那Proguard...但是根据我的实验:无用的资源还是会被打进Apk中,只是变成一张黑图,体积也非常小,只有不到100b。有使用错误的地方欢迎指正!...在生成SO文件时,需要考虑适配市面上不同手机CPU架构,而生成支持不同平台的SO文件进行兼容。...提高压缩级别可在不对Apk包本身的内容做任何修改的情况下得到更小的Apk。 备注: 需要注意这样极限压缩之后的签名被破坏,需要重新签名。

    1.7K30

    Android 系统预设 App,有什么难的?

    5、LOCAL_CERTIFICATE 在什么情况下签名。 testkey:普通 APK,默认情况下使用。 platform:该 APK 完成一些系统的核心功能。...:= SHARED_LIBRAYIES # 编译可执行文件 LOCAL_MODULE_CLASS := EXECUTABLES 7、include $(BUILD_PACKAGE) 表示生成一个 apk...:= disabled # 指定不需要混淆的native方法与变量的proguard.flags文件 LOCAL_PROGUARD_FLAG_FILES := proguard.flags include...如果直接用 mmm 编译然后 adb install -r xxx.apk 大概会出现如下错误: Failed to install out/target/product/p212/system/app...第三方定位如百度、高德,申请 SDK 时会需要填写包名和打包签名等信息,如何正确地预置源码 APP 可以定位,除了配置LOCAL_CERTIFICATE := platform使用系统的签名,还得在项目的

    2.3K00

    C#-Xamarin的Android项目开发(三)——发布、部署、打包

    Xamarin很贴心,在每个选项上都做了注释,当我们鼠标放到属性上时,就会提示该属性的作用。 现在我们简单翻译一下图中的几个重要属性。...针对每个选择的ABI生成一个包(.apk):发布apk时会针对每个cpu会生成不同的apk,cpu的选择在高级中,所以,当勾选上这个选项,发布apk时,会为各个CPU都创建一个单独的apk。...启用ProGuard:勾选上会使生成的apk变小。 启用Multi-Dex:是一个配套ProGuard的配置,不太常用,鼠标放到该选项上有解释。...然后勾选上【启用ProGuard】 接下来,重新生成项目。注意:这里一定要重新生成一下,不然也会存档失败。 存档后,项目会为我们打开如下界面: ?...选择完路径后,点击确定,会弹出让我们输入签名密码的界面;如下图: ? 在文本框里输入我们签名的密码,点击确定即可。 到此,我们的apk就成功的发布完了。

    1.5K40

    Android开发笔记(七十三)代码混淆与反破解

    代码混淆 ProGuard是ADT自带的apk混淆器,它的用途有: 1、压缩apk包的大小,能删除无用的代码,并简化部分类名和方法名。...4、jar包的文件名中不要有特殊字符,比如说“(”、“)”等字符在混淆时就会报错,文件名最好只包含字母、横线、小数点。 5、使用WebView时,会被js调用的类和方法,要屏蔽混淆。...下面是获取apk签名的代码例子 public static String getSignMD5(Context context) { String signMD5 = ""; String...下面是打包apk时的md5签名值的截图 ? 下面是app运行时获取到的md5签名截图 ? 花指令 代码混淆通过对类名和方法名重命名,只是加大了破解的难度,但并不能完全阻止代码被破解。...例如在做签名校验时,原签名的值就可以保存在jni接口中。

    1.9K40

    Android静态分析之初级篇(二)

    接着《Android静态分析之初级篇》来,这次来看看如何在反编译后的apk包中添加一个页面,类似植入广告~ 在app中进行广告植入,正常思路是:在app开始启动时增加一个广告的页面,代码里就是新建一个Activity...假设我们没有原apk的源代码,那我们需要新建一个跟这个apk包一样的项目目录,包名要跟我们要插入广告页面的apk一致: ? 添加一个HackActivity页面,代码如下图: ? 效果如下: ?...打包,签名,反编译后,查看smali文件夹: ? 可以看到有两个HackActivity的smali文件,将这两个文件copy到原apk反编译后的hellosmali文件夹下: ?...保存,重新回编译,同样使用jarsigner进行签名,将生成的安装包安装到Android机上,看看效果: ? 可以看到是一个空白页,现在我们想办法给这个空白页添加点内容进去。...重新打包,签名,并反编译,重新将反编译后的两个HackActivity的smali文件放到smali文件夹下,同时,还要把新添加的xml文件放到原apk反编译后的layout文件夹下: ?

    86321
    领券