Android代码混淆------apk文件代码混淆

安卓APK混淆加固重签名工具1.6.0 安卓APK资源混淆加密重签名工具,可以对安卓APK文件的代码和资源文件进行混淆加密处理,可以对安卓APK文件进行加固,对代码和资源文件进行混淆,重新签名等功能. 可以保护APK,增加破解难度,防止误报毒等功能. 1.6.0版本新增轻量处理模式,伪加密和APK加壳可以同时使用,并修复若干问题 主要功能有: 1.支持修改APP基本信息,包括APP名称,包名,版本号信息 2.内建独立签名证书,并且可以随时重置 3.支持DEX代码混淆,可以针对APK字节码进行多种混淆,字符串加密,指令乱序等功能 4.支持资源混淆,可以对APK包内部的资源文件进行混淆处理 5.支持增加包体积,可以随意增加APK包的体积 6.处理后的APK可以有效保护APK内部的代码,同时可以防止国内一些杀毒软件误报毒 7.支持APK加固,可以给DEX文件加一层壳,防止DEX中的代码被静态反编译软件分析 8.支持APK保护功能,防止APK被修改包名,重签名和被调试 9.支持防止反编译功能,可以有效防止一些主流的APK反编译工具对APK文件进行反编译 立即下载

转载自:http://www.cnblogs.com/cc-Cheng/archive/2013/02/17/2914584.html

上一篇介绍了apk反编译的步骤,现在来研究下代码混淆,因为第三方人员完全可以通过解压APK文件并从中获取项目源码,所以对APK文件的保护显得至关重要。

代码混淆亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为,代码混淆可以用于程序源代码,也可以用于程序编译而成的中间代码。

一、工具:Proguard

\android-sdks\tools\proguard即可找到该工具,可以再docs里面找到相关手册

二、 配置脚本

在2.3以上的项目里可以看到proguard-project.txt文件,对于2.3以下的版本,可以去2.3以上版本的项目中复制一份。(我看到有的项目里是proguard.cfg,还没有验证)

这个文件时proguard混淆代码的脚本文件,打开project.properties(老版本为default.properties),在文件的末尾处添加这样一行代码:proguard.config=proguard-project.txt,保存该文件,接下来从新编译你的项目,这时生成的APK文件就已经进行了代码混淆。

三、主要用法

简单说下keep参数,这个是设定要保留不参与混淆的类和成员。

keepclass_specification保留指定的类和成员名称和内容

keepclassmembersclass_specification只保留指定的类成员名称和内容

keepclasseswithmembersclass_specification

keepnamesclass_specification保留类和成员名称,混淆内容

keepclassmembernamesclass_specification只保留成员名称,混淆内容

keepclasseswithmembernames class_specification

在使用过程中,我比较 喜欢建立几个抽象类,Keep,KeepClassMembers,

KeepClassesWithMembers,KeepNames,KeepClassMemberNames,

KeepClassesWithMemberNames,把需要混淆的核心代码单独打包,需要保留特定属性的类分别继承各个方法,这样设定混淆配置时就比较容易。

例:

-dontwarn com.baidu.mapapi.**
-keep class com.baidu.mapapi.**{*;}

这段代码的意思是com.baidu.mapapi.包下的都不参与混淆(com.baidu.mapapi.是引用的包)

四、签名打包

五、混淆后代码

使用反编译方法反编译打包后的apk,看到有的类名,方法名变成了没有意义的字母,说明混淆成功

六、已发布应用程序的调试注意事项

打包后会发现在程序的根目录下生成了proguard文件夹

里面包含四个文件

dump.txt 描述apk保重所有class的代码结构

mapping.txt 列出了源代码与混淆后的类,方法和属性名字之间的映射。这个文件对于在构建之后得到的bug报告是有用的,因为它把混淆的堆栈跟踪信息反翻译为源代码中的类,方法和成员名字。更多信息,查看解码混淆过的堆栈跟踪信息。

seeds.txt 表示没有混淆的类和成员

usage.txt表示被剥离的类

保存好每一个已发布给用户的程序的mapping.txt文件。通过保存发布构建版本的mapping.txt文件拷贝,确保当用户碰到bug,并把混淆后的堆栈调试跟踪信息提交给你时,你可以进行调试从而修复问题。程序的mapping.txt文件在每次发布构建时都会被覆盖,所以你一定要注意保存正确的版本。
例如,假设你已经发布了一个应用程序并在继续在新的版本中开发添加新的功能。接着你马上启动混淆器并创建一个新的发布版本。该操作把mapping.txt文件覆盖了。一个用户提交了来自当前发布版本的bug报告,该报告包含了堆栈调试信息。你再也不能对用户的堆栈信息进行调试了,因为这个对应用户本机上版本的mapping.txt文件不存在了。其他覆盖mapping.txt文件的情况还有很多,所以对于每一个可能需要调试的版本,你都要确保有一份拷贝。
如何保存mapping.txt文件由你决定。例如,你可以根据版本和构建号来重命名它们,或者连同你的源代码进行版本控制。

七、 解码混淆过的堆栈跟踪信息

当混淆代码并输出了一个堆栈调试信息时,这些方法名字是混淆过的,虽然可以进行调试,但是调试变得困难。幸运的是,每当混淆器运行时候,它都会输出到文件<project_root>/bin/proguard/mapping.txt中,该文件包含了从原始类,方法和属性名字到混淆后名字的映射。

Windows系统中retrace.bat脚本命令或者Linux和Mac OS X系统中retrace.sh脚本命令能把混淆后的堆栈调试信息转换为可以理解的文件。它被放在<sdk_root>/tools/proguard/目录下。运行retrace工具的命令语法是:

retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>]

例如:

retrace.bat -verbose mapping.txt obfuscated_trace.txt

如果你没有为<stracktrace_file>指定值,那么retrace工具从标准输入读取。

八、需要注意的地方

参考:http://blog.youkuaiyun.com/alex197963/article/details/2620619

1、注意版本,如果不是项目需要,最好使用最新稳定版本,这样出错的机会小一些,学习曲线会明显缩短。
2、最好以源码的同编译版本的jvm来启动proguardgui.jar,不要直接用默认的jvm打开。
3、注意proguaardgui启动后默认加载的libraryjar中包含的rt.jar,它的版本和你使用到的jvm版本一致。
4、使用1.4的jvm打开proguard时,注意在optimization选项卡中,不要勾中keep enumerations选项,因为勾中这个选项会导致configration文件中出现java.lang.Enum,这个类
只有在1.5的环境下才有。报错信息如下:  [proguard] Note: the configuration refers to the unknown class 'java.lang.Enum'  [proguard] Note: there were 1 references to unknown classes.  [proguard] You should check your configuration for typos.
5、嵌入ant脚本时,通常会有这么一段 <target name="proguard" depends="init">        <taskdef resource="proguard/ant/task.properties" classpath="${lib.dir}/proguard/proguard.jar" />        <proguard configuration="${src.dir}/config.pro" /> </target> task.properties在proguard.jar中,保留,config.pro是proguard的配置文件,最好使用proguardgui.jar先生成,然后再根据需求手动修改。
九、 android 原始混淆模板
http://www.verydemo.com/demo_c131_i5524.html
十、问题
-keep  public class * extends com.baidu.mapapi{*;}
-keep class com.baidu.mapapi.**{*;}
这两个的区别?

使用指南 http://wenku.baidu.com/view/5ec1d320ccbff121dd36836e.html

Apk混淆工具,给APK文件做混淆加密 给APK文件做混淆加密,使APK不易被反编译,使用说明详见压缩包内。 立即下载

相关推荐

安卓APK混淆加密重签名工具1.5.0

安卓APK资源混淆加密重签名工具,可以对安卓APK文件的代码和资源文件进行混淆加密处理,可以对安卓APK文件进行加固,对代码和资源文件进行混淆,重新签名等功能. 可以保护APK,增加破解难度,防止误报毒等功能. 主要功能有: 1.支持修改APP基本信息,包括APP名称,包名,版本号信息 2.内建独立签名证书,并且可以随时重置 3.支持DEX代码混淆,可以针对APK字节码进行多种混淆,字符串加密,指令乱序等功能 4.支持资源混淆,可以对APK包内部的资源文件进行混淆处理 5.支持增加包体积,可以随意增加APK包的体积 6.处理后的APK可以有效保护APK内部的代码,同时可以防止国内一些杀毒软件误报毒 7.支持APK加固,可以给DEX文件加一层壳,防止DEX中的代码被静态反编译软件分析 8.支持APK保护功能,防止APK被修改包名,重签名和被调试 9.支持防止反编译功能,可以有效防止一些主流的APK反编译工具对APK文件进行反编译 解压密码1234

Android 逆向工程之APK混淆处理方案分析

提供apk给到外部,外部对apk进行二次处理后重新给我们一个新apk。尝试分析源apk文件和处理后的apk文件区别,根据其中区别推测外部的混淆处理方案,尽可能还原外部对apk的处理方式。以下对处理和未处理的apk文件用新、旧apk名称表示。通过反编译工具分析可以得出外部处理的新 app 操作主要是对 dex 文件增加了垃圾代码提高主包的相似度,避免被Google识别,然后进行了混淆处理。处理 dex 利用 BlackObfuscator-GUI 等工具处理后对 apk。

qq_38794072的博客 3749

APK反编译工具合集(jadx,jd-gui,dex2jar,apktool,autosign,enjarify).zip

详细教程参见优快云博文: 【总结】Apk反编译全解 配套APK反编译工具: jadx,jd-gui,dex2jar,apktool,autosign,enjarify。(autosign后续补充) 工具合集都是亲测可用的软件,博文中有下载链接,可以下载最新的版本。

【亲测免费】 Apk混淆工具 - APK文件混淆加密解决方案

Apk混淆工具 - APK文件混淆加密解决方案 去发现同类优质开源项目:https://gitcode.com/ 欢迎使用Apk混淆工具,这是一款专门为APK文件混淆加密而设计的工具,能够有效提高APK文件的安全性,防止被轻易反编译。 功能简介 本工具可以对APK文件进行专业的混淆处理,通过复杂的算法,使得APK文件在未经授权的情况下难以被解密和修改,从而保护您的应用程序代码不被非法窃取和篡改。 ...

gitblog_06755的博客 1083

安卓APK资源混淆加密重签名工具1.8.0(解压密码1234)

安卓APK资源混淆加密重签名工具,可以对安卓APK文件的代码和资源文件进行混淆加密处理,可以对安卓APK文件进行加固,对代码和资源文件进行混淆,重新签名等功能. 可以加固APK,防止APK被解包,保护APK内部的资源和代码 主要特性和功能点 1.支持修改APP基本信息,包括APP名称,包名,版本号信息 2.支持DEX代码混淆,可以针对APK字节码进行多种混淆,字符串加密,指令乱序等功能 3.支持资源混淆,可以对APK包内部的资源文件进行混淆处理 4.处理后的APK可以有效保护APK内部的代码 5.支持APK加固,可以给DEX文件加一层壳,防止DEX中的代码被静态反编译软件分析 6.支持APK保护功能,防止APK被修改包名,重签名和被调试 7.支持防止反编译功能,可以有效防止一些主流的APK反编译工具对APK文件进行反编译 8.支持So文件加密

视频倍速 - 在线调倍速的加速器APP工具

一刀工具箱APP提供一键可将手机上的视频倍速播放,可以调整视频倍速的加速器,调节视频的速度也就是调节视频的播放速度!一键可将手机上的视频倍速播放,可以调整视频倍速的加速器,调节视频的速度也就是调节视频的播放速度!视频倍速-在线调倍速的加速器-一刀工具箱APP。...

无涯教程 7558

Android打包混淆----APP加密防破解 + 重新签名

~ ~  APP加密(混淆打包防反编译)的步骤:~ ~   ① 准备一个app文件包,apk原包即可。   ②  登陆移动APP加密防破解爱加密官网http://www.ijiami.cn,没有账号的需要先注册账号(登陆后才能上传App文件进行加密)。   ③ 注册完后,登录即可,登陆成功后,进入个人中心,点击“提交加密”,上传您需要进行安全加密的app文件,只需

forwordlove的博客 5129

H3C模拟器HCL防火墙路由模式主备配置实验

摘要:本文详细介绍了网络拓扑规划与设备配置方案。运营商仅提供一个接口地址,通过虚IP技术实现双防火墙高可用部署:主备防火墙分别配置10.20.10.1/29和10.20.10.2/29作为实际上联地址,共享10.10.10.2/24虚IP;下联配置172.168.10.0/24网段,核心交换机配置VLAN接口及192.168.10.1、192.168.20.1两个下联接口。文章包含运营商路由器、防火墙(HA配置、VVRP设置)和核心交换机的具体命令行配置步骤,并强调需进行主备切换验证。整个方案实现了单运营商

LQ的博客 1122

Android代码混淆工具Proguard学习

概述 Proguard代码混淆工具:可以对代码进行去冗余压缩,代码优化,代码混淆等。在Android中的主要应用就是对代码混淆:就是将类名,方法名,Field名变成如a,b,c或者1,2,3等难以阅读和理解的名字,以防止逆向工程和被反编译阅读源码。 使用Proguard 启用 Eclipse下: 项目根路径下有两个文件:project.properties和proguard-pr

小小懒羊羊 2462

yolov5 部署jetson nano(通用) 保姆级教学

Jetson nano从配置环境到yolov5成功推理检测全过程 文章目录Jetson nano从配置环境到yolov5成功推理检测全过程一、烧录镜像二、配置环境并成功推理1.更新系统和包2、配置环境2.1 配置CUDA2.2 修改Nano板的显存1.打开终端输入:2.修改nvzramconfig.sh文件:3.重启:4.终端输入:3、安装archiconda(也就是jetson nano板上的anaconda)1.下载地址:2.安装:3.测试conda:4.创建运行yolov5的虚拟环境:5.在conda

weixin_44312422的博客 3万+

【胡学长 带你学 Global Mapper 】如何将影像地图转换为国家2000坐标系

多部门联合开展工作坐标数据不匹配怎么办?Hi,我是胡学长!今天教大家如何利用Global Mapper将谷歌影像数据转换为国家2000坐标系影像数据 。

一起来交流学习吧 1万+

安卓开发,如何实现apk的代码混淆、日志混淆?

在安卓开发中,实现APK的代码混淆和日志混淆是增强应用安全性的重要手段。这里分别介绍如何实现它们:代码混淆主要是通过修改类、方法、字段的名称以及打乱代码结构来降低代码的可读性,从而增加逆向工程的难度。在Android开发中,常用的代码混淆工具是Google提供的ProGuard。添加ProGuard库:配置文件: 这些规则告诉ProGuard保留所有Activity、Application、Service、BroadcastReceiver、ContentProvider以及自定义View类的公共方法和构

qq_43664361的博客 1324

基于大模型的自动驾驶智能体:Agent-Driver架构、训练与实战指南

自动驾驶系统正从传统的模块化流水线向以智能体为核心的新范式演进。其核心原理在于将车辆视为一个能够与环境持续交互的自主决策智能体,通过多模态感知、记忆管理和基于大模型的推理能力,实现对复杂交通场景的理解与应对。这一技术价值在于利用大模型的常识推理和泛化能力,有望解决传统方法在长尾场景下面临的挑战。在应用场景上,智能体驱动架构特别适合处理动态交互密集、需高层语义理解的城区驾驶、无保护转弯及突发状况应对。本文聚焦的Agent-Driver项目,正是这一方向的典型实践,它通过融合视觉、语言大模型与强化学习,构建了一

weixin_28729843的博客 529

Android Apk 代码混淆与资源文件混淆实战

Android项目在完工发布时,需要对代码和资源文件进行混淆,目的有两个:1⃣️减小压缩包的体积 2⃣️防止代码被反编译后恶意利用Android Apk混淆分两步走: 1⃣️混淆代码 2⃣️混淆资源文件本人的开发环境为: Operation System:Mac OS 10.10.5 Android Studio:2.0 Preview 5 Gradle Plugin:2.0.

企鹅肖 8584

OpenClaw零基础教程:30分钟搭建你的第一个AI自动化助手

别再看那些满是代码、专业术语的教程了,那些都是给程序员看的。这篇教程,我把所有步骤拆到了极致,你跟着点鼠标就行,点错了都没关系,大不了重装一遍,5分钟的事。

2601_94871597的博客 96

深度学习论文: AnomalyDINO: Boosting Patch-based Few-shot Anomaly Detection with DINOv2

通过将DINOv2模型适应到一次性和少量异常检测中,并专注于工业应用少量异常检测。实验表明,这种方法不仅与现有技术相匹敌,甚至可以在许多设置中超越它们。我们提出的仅视觉方法AnomalyDINO基于补丁相似性,能够实现图像级别的异常预测和像素级别的异常分割。该方法在方法论上很简单,无需训练,因此不需要任何额外的数据进行微调或元学习。

mingo_敏 1904

Android 判断文件是否被修改,android代码混淆以及如何判断一个apk代码是否被混淆过...

(一)java代码编译成二进制class文件,这个class文件也可以反编译成源代码,除了注释外,其他的code基本都可以看到。为了防止重要code被泄露,我们往往需要混淆,即把方法名,变量名,类名,包名等这些java元素的名称改成让人意想不到的名称,这样代码结构就没有变化,还可以运行,但是想弄懂代码的架构却很难。proguard就起到了这样的作用:一、它可以分析一组class的结构,根据用户的配...

weixin_29999895的博客 1511

第25节:cesium 地形开挖综合实例-地下管网(含源码+视频)

地图开挖综合示例,包括底图切换,绘制开挖区域,移除开挖区域,影藏地图等等。

qq_29384639的博客 1782

Android APK代码混淆和资源文件混淆

Android项目在完工发布时,需要对代码和资源文件进行混淆,目的有两个: 1⃣️减小压缩包的体积 2⃣️防止代码被反编译后恶意利用 Android Apk混淆分两步走: 1⃣️混淆代码 2⃣️混淆资源文件 本人的开发环境为: Operation System:Mac OS 10.10.5 Android Studio:2.0 Preview 5 Gradl

qq_34211554的博客 2192

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Android apk 签名及代码混淆、资源文件混淆、加固整套流程

准备:*.ks  proguard-android.txt', 'proguard-rules.pro(取一) 上述是签名文件及混淆文件 通过AS进行混淆签名打包apk 将该apk进行解压可看出只是代码进行了混淆但是资源文件没有进行混淆 下面进行资源文件进行混淆,也是通过工具 github地址:https://github.com/shwenzhang/AndResGuard  这是微

qq_32221419的博客 1719

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

安卓代码混淆技术分享

安卓代码混淆技术分享

阿甘正传 1012

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Android 项目必备(二十四)--> Apk 混淆

本文主要讲解 `Apk` 的混淆,这里的混淆分为两种**代码混淆**和**资源文件混淆**。实际的产品研发中为了防止自己的劳动成果被别人窃取,混淆代码能有效防止 `apk` 文件被反编译,进而查看源代码。.........

Kevin Learn Android 2104

Android在mac osx下混淆打包和反编译

android在mac上的混淆打包和反编译

For Marie Curie 7439

【Android】打包过程:生成自动代码->编译->(混淆)->dex文件->生成资源文件->打apk包->(签名)->对齐

tuhuolong的专栏 1121

Android APK打包流程

Android APK 打包过程包括多个关键步骤,每个环节都提供了不同的操作机会。开发者可以在这些步骤中进行自定义,优化构建,调试,或增加特定的功能。1、资源打包(通过 AAPT 工具)生成资源索引文件 R.java。打包资源文件为二进制格式 resources.arsc。保留部分非二进制资源原始文件(如 res/raw 和图片)。2、处理 AIDL 文件将 .aidl 文件转换为 Java 接口文件。3、Java 源代码编译编译 R.java、Java 接口文件及其他源代码为 .class 文件。

weixin_44780781的博客 1631
上一篇: 最新dex2jar下载地址
下一篇: pboc规范详细解释
davidtps
博客等级 码龄18年 38粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值