代码混淆

HarmonyOS 代码混淆 针对工程源码的混淆可以降低工程被破解攻击的风险,缩短代码的类与成员的名称,减小应用的大小。DevEco Studio提供代码混淆的能力并默认开启,API 10及以上版本的Stage模型、编译模式为release时自动进行代码混淆。// 混淆前// 混淆后导出的类 “Test1” 是一个顶层作用域名,当 “Test1” 被动态使用时,它是一个属性。因为没有开启-enable-property-obfuscation选项,所以名称混淆了,但属性没有混淆。 阅读详情

代码混淆

混淆器(ProGuard)

混淆器通过删除从未用过的代码和使用晦涩名字重命名类、字段和方法,对代码进行压缩,优化和混淆。

  1. 修改project.properties

    
    # This file is automatically generated by Android Tools.
    
    
    # Do not modify this file -- YOUR CHANGES WILL BE ERASED!
    
    #
    
    # This file must be checked in Version Control Systems.
    
    #
    
    # To customize properties used by the Ant build system edit
    
    
    # "ant.properties", and override values to adapt the script to your
    
    
    # project structure.
    
    #
    
    # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
    
    
    #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
    
    
    
    # Project target.
    
    target=android-19

    将proguard.config前面的注释去掉

  2. 修改proguard-project.txt

    
    # To enable ProGuard in your project, edit project.properties
    
    
    # to define the proguard.config property as described in that file.
    
    #
    
    # Add project specific ProGuard rules here.
    
    
    # By default, the flags in this file are appended to flags specified
    
    
    # in ${sdk.dir}/tools/proguard/proguard-android.txt
    
    
    # You can edit the include path and order by changing the ProGuard
    
    
    # include property in project.properties.
    
    #
    
    # For more details, see
    
    
    #   http://developer.android.com/guide/developing/tools/proguard.html
    
    
    
    # Add any project specific keep options here:
    
    
    
    # If your project uses WebView with JS, uncomment the following
    
    
    # and specify the fully qualified class name to the JavaScript interface
    
    
    # class:
    
    
    #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
    
    
    #   public *;
    
    
    #}
    

    如果在程序中使用了第三方的jar包,在混淆后导致出错,这时我们需要在proguard-project.txt中去进行相应的配置,
    来让其在混淆时不要混淆相应的jar包。对改配置文件中的相关配置解释如下:

    -keep public class * extends android.app.Activity  【不进行混淆类名的类,保持其原类名和包名】
    
    -keep public abstract interface com.asqw.android.Listener{
    public protected <methods>;  【所有public protected的方法名不进行混淆】
    }
    -keep public class com.asqw.android{
    public void Start(java.lang.String); 【对该方法不进行混淆】
    }
    -keepclasseswithmembernames class * { 【对所有类的native方法名不进行混淆】
    native <methods>;
    }
    -keepclasseswithmembers class * { 【对所有类的指定方法的方法名不进行混淆】
    public <init>(android.content.Context, android.util.AttributeSet);
    }
    -keepclassmembers class * extends android.app.Activity {【对所有类的指定方法的方法名不进行混淆】
    public void *(android.view.View);
    }
    -keepclassmembers enum * {【对枚举类型enum的所有类的以下指定方法的方法名不进行混淆】
    public static **[] values();
    public static ** valueOf(java.lang.String);
    }
    -keep class * implements android.os.Parcelable {【对实现了Parcelable接口的所有类的类名不进行混淆,对其成员变量为Parcelable$Creator类型的成员变量的变量名不进行混淆】
    public static final android.os.Parcelable$Creator *;
    }
    -keepclasseswithmembers class org.jboss.netty.util.internal.LinkedTransferQueue {【对指定类的指定变量的变量名不进行混淆】
        volatile transient org.jboss.netty.util.internal.LinkedTransferQueue$Node head;
        volatile transient org.jboss.netty.util.internal.LinkedTransferQueue$Node tail;
        volatile transient int sweepVotes;
    
    }
    -keep public class com.unionpay.** {*; }【对com.unionpay包下所有的类都不进行混淆,即不混淆类名,也不混淆方法名和变量名】

    经过上面这两部之后反编译后就能混淆了,但是四大组件还在,为什么四大组件还在呢,因为四大组件是在清单文件中进行配置的,
    如果混淆后就不能根据清单文件的配置去寻找了。
    如果对于一些自己的代码中要想提供出来让别人通过反射调用的方法时,我们不想让部分代码被混淆,或者是我们使用别人提供的第三方jar包,
    因为第三方的jar包一般都是已经混淆过的,我们要是再混淆就会报错了,所以我们要保证这些内容不用混淆,这里我们只需修改这个文件,然后加上后面的一句话,
    他就不会混淆我们给出的内容

    -keepattributes *Annotation*          
    -keep public class * extends android.app.Activity
    -keep public class * extends android.app.Application
    -keep public class * extends android.app.Service
    -keep public class * extends android.content.BroadcastReceiver
    -keep public class * extends android.content.ContentProvider
    -keep public class * extends android.app.backup.BackupAgent
    -keep public class * extends android.preference.Preference
    -keep public class * extends android.support.v4.app.Fragment
    -keep public class * extends android.app.Fragment
    -keep public class com.android.vending.licensing.ILicensingService
    -keep class net.youmi.android.** {
    *;
    }

  • 邮箱 :charon.chui@gmail.com
  • Good Luck!
【鸿蒙开发】—— 代码混淆 针对工程源码的混淆可以降低工程被破解攻击的风险,缩短代码的类与成员的名称,减小应用的大小。DevEco Studio提供代码混淆的能力并默认开启,API 10及以上版本的Stage模型、 编译模式为release 时自动进行代码混淆。 阅读详情

相关推荐

代码混淆技术

代码混淆技术 代码混淆亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为。代码混淆可以用于程序源代码,也可以用于程序编译而成的中间代码。执行代码混淆的程序被称作代码混淆器。已经存在许多种功能各异的代码混淆器。 在编译的过程中,有以下流程:源程序 - > 前端 - > 中间代码 - > 代码优化器 - > 中间代码 - > 代码生成器 - > 目标程序,混淆,就是代码优化器的逆过程。混淆技术分为两类:一类是基于...

weixin_43906500的博客 3058

代码混淆工具 Stunnix-CXX-Obfus 的使用

代码混淆工具 Stunnix-CXX-Obfus 的使用 下载和安装工具 mkdir -p /home/cxx_obfus/ wget http://stunnix.com/pad/trial-nomail/cxxo/Stunnix-CXX-Obfus-4.7-Linux-trial.zip unzip Stunnix-CXX-Obfus-4.7-Linux-trial.zip 经过解压后: /...

Andrew Yang's Note 4937

Android代码混淆

一、代码混淆作用: 防止反编译; 精简编译后的apk文件大小; 二、开启混淆: 在项目的build.gradle中开启混淆: 将minifyEnabled的值改为true即开启:其中debug为测试版本,release为发布版本 三、混淆说明: 开启混淆后Android会用自带的混淆进行代码混淆,如在安装Android SDK的目录下的proguard-android.txt或proguard-android-optimize.txt文件为默认混淆文件。对于自己定义的混淆需要在proguar

走马川行雪的博客 5582

stunnix C++ Obfuscator 代码混淆

stunnix 是一款代码混淆软件,包括C++,perl,js等语言混淆功能 C/C++ Obfuscator 下载地址 官网下载后,解压缩,里面有3个文件夹lib,doc,bin 可以用命令行加密和gui加密 命令行加密单个.c文件比较方便: 进入bin-->>执行perl cxx-obfus -x xpg4 PATH/*.c -o PATH/*.c  即可得到加密后的文件; gui

fxjfsy的博客 6846

Stunnix-CXX-Obfus-4.7-Linux-trial.zip

这是用于C/C++源代码级别的混淆工具,不是二进制混淆。官网的下载特别特别慢,因此在这里提供一下,给需要的开发者。

Stunnix CXX-Obfus

简单好用的开源代码混淆工具,支持混淆等级,等级越高,代码越难看懂

cpp混淆详解

C++代码混淆是一种技术,旨在通过修改代码的结构和符号名称,使其难以被人类阅读和理解,同时保持代码的功能和性能不变。这种技术常用于保护知识产权,防止反向工程和代码盗窃。

N阶二进制的博客 3067

cxx-clean-include

源自:https://github.com/cxxclean/cxx-clean-include 上传此资源的原因是github上不方便下载,每次到99%就失败了

代码混淆是什么?代码混淆的方法有哪些?

本文主要给大家盘点代码混淆的一些基础知识,希望能对大家有所帮助!

励志做最业余的专业博主,控件产品可以私我~ 7412

历史预测+LLM双杀!DriveGPT4-V2闭环驾驶配置避坑指南

本文深入探讨了DriveGPT4-V2在工程化部署中的核心挑战与解决方案。通过融合历史轨迹预测与大语言模型,该模型旨在实现更可靠的端到端自动驾驶。文章详细解析了从环境配置、多模态Token对齐、轻量控制头设计到训练优化与闭环仿真验证的全流程,为开发者提供了一份详实的避坑指南。

transformer2023的博客 385

CGNS快速入门到实战(二):VS配置调用CGNS静态链接库

CGNS快速入门到实战这一系列分成三篇文章展开叙述,具体有:(一)CGNS静态链接库编译;(二)VS配置调用CGNS静态链接库;(三)CGNS文件及案例展示。本篇文章重点讲述VS配置调用CGNS静态链接库。

ahang_99的博客 2618

​springboot代码混淆及反混淆代码工具

在我们开始学习反混淆之前,我们首先要了解一下代码混淆。如果不了解代码是如何混淆的,我们可能无法成功对代码进行反混淆,尤其是使用自定义混淆器对其进行混淆时。混淆是一种技术,用于使脚本更难以被人类阅读,但从技术角度来看,它可以发挥相同的功能,尽管性能可能会较慢。这通常是通过使用混淆工具自动实现的,该工具将代码作为输入,并尝试以更难以阅读的方式重写代码,具体取决于其设计。例如,代码混淆器通常将代码转换成代码中使用的所有单词和符号的字典,然后在执行期间尝试通过引用字典中的每个单词和符号来重建原始代码。

2301_79527134的博客 1097

YOLO11,ultralytics-main源代码目录结构详解

本文详细介绍了YOLO11框架的ultralytics-main源代码目录结构,帮助用户更好地理解和使用YOLO模型。主要目录包括:docker文件夹,包含多种Docker镜像文件,适用于不同硬件环境;docs文件夹,存放YOLO的说明文档;examples文件夹,提供YOLO使用的示例代码;tests文件夹,包含单元测试模块;ultralytics文件夹,为核心代码所在,包含推理逻辑、配置、数据处理等模块。其中,engine文件夹负责训练和推理引擎,models文件夹存放模型架构,nn定义神经网络结构

qq_30279827的博客 1286

springboot代码混淆及反混淆代码工具

在我们开始学习反混淆之前,我们首先要了解一下代码混淆。如果不了解代码是如何混淆的,我们可能无法成功对代码进行反混淆,尤其是使用自定义混淆器对其进行混淆时。混淆是一种技术,用于使脚本更难以被人类阅读,但从技术角度来看,它可以发挥相同的功能,尽管性能可能会较慢。这通常是通过使用混淆工具自动实现的,该工具将代码作为输入,并尝试以更难以阅读的方式重写代码,具体取决于其设计。例如,代码混淆器通常将代码转换成代码中使用的所有单词和符号的字典,然后在执行期间尝试通过引用字典中的每个单词和符号来重建原始代码。

不写代码没饭吃的博客 1281

让 ME51N 在采购信息记录过期时不要带出上一次采购订单的价格

在采购信息记录(PIR)价格条件无效或过期时,到上一次采购订单价格进行提议;你可以通过关闭,并在把PO price设置为不采纳,再辅以把过期的价格来源直接拦截为错误。若仍需 100% 阻断,可用在保存前清空估价价格作为技术兜底。标准行为与配置证据见文内引用。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 664

剪映自动化工具来了:AI帮你自动剪辑成片

🎬分享一个剪映自动化剪辑工具!AI 自动帮你完成从写文案、配音、加字幕、选音乐、上特效到最终导出的整套流程🎈

XiaoqiangClub的博客 859

代码的混淆与反混淆

目前正在自学nms

qq_24992377的博客 2439

基于MATLAB的最大重叠离散小波变换(MODWT)算法详解

最大重叠离散小波变换(Maximal Overlap Discrete Wavelet Transform, MODWT)是DWT的重要改进形式,由Percival和Walden等人在20世纪90年代系统提出并完善。MODWT通过消除下采样操作,采用样本平移不变的分解方式,解决了DWT的多个固有缺陷。MODWT的核心创新在于取消下采样环节。与DWT每级分解后对滤波输出进行二分下采样不同,MODWT在每一级都使用相同的滤波器,但通过插入零值的方式调整滤波器系数,保持每级系数数量与原始信号相同。

qq_42212808的博客 115

Flutter 代码混淆 混淆Dart代码

代码混淆 Flutter的代码混淆 flutter的代码混淆就是混淆dart代码。 代码混淆是修改应用程序二进制文件的过程,以使人们更难以理解。混淆将函数名和类名隐藏在已编译的Dart代码中,从而使攻击者很难对您的专有应用程序进行反向工程。 Flutter代码混淆的做法 Flutter版本小于1.16 Android 将以下行添加到<ProjectRoot> /android/gradle.properties: extra-gen-snapshot-options=--obfuscate 有

卓原的进化之旅 6227

[UVM]UVM TLM2.0简介及应用实例分析

本文介绍了TLM2.0在UVM中的实现与应用。TLM2.0作为SystemC模型间的核心传输机制,相比TLM1.0提供了更丰富的特性,包括双向阻塞/非阻塞接口、时间标记和统一数据包。文章详细解析了TLM2.0在UVM中的接口实现方式,包括socket类型定义、数据传输机制以及时间标记处理。通过一个具体实例,展示了如何在UVM组件中使用TLM2.0的initiator和target socket进行数据传输,并说明了标准数据包格式和精确时间标记的优势。最后指出TLM2.0在UVM中的实现主要是为了与Syste

元直的博客 5398

QT 实现QStackedWidget切换页面右移动画

首先截取当前界面的图片,渲染到一个QLabel上,然后设置QPropertyAnimation动画,动画的作用对象就是这个QLabel,不断的改变geometry;当动画结束的时候,隐藏并释放这个QLabel。以下是一个QStackedWidget,放了两个QPushButton在上面,点击切换不同的界面。为了方便查看动画特效,设置了每个界面的背景图片。

希望能帮助大家,希望大家多多支持,你们的支持是我前进的动力。 884

Android混淆——混淆代码总结

转自http://blog.youkuaiyun.com/lovexjyong/article/details/24652085        http://blog.youkuaiyun.com/catoop/article/details/47208833 混淆的概念: 对编译好的class文件进行混淆处理。 ProGuard是一个混淆代码的开源项目。它的主要作用就是混淆,当然它还能对字节

chuntiandejiaobu10的专栏 4501

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

代码混淆的原理是什么?常见代码混淆方法介绍

混淆就是对发布出去的程序进行重新组织和处理,使得处理后的代码与处理前代码完成相同的功能,而混淆后的代码很难被反编译,即使反编译成功也很难得出程序的真正语义,通过进行代码混淆可以有效提升应用被逆向破解的难度。移动应用代码安全非常重要,代码逆向会导致代码逻辑被获取,进一步导致控制流被hook,安全防线被破,给APP安全带来巨大风险,因此开发者一般都会进行代码混淆保护。:对字节码进行优化,移除无用的指令。Java代码混淆,针对一些逆向的IDE环境是有一定效果的,可以考虑做一些中文混淆,这个很容易实现且有效果。

励志做最业余的专业博主,控件产品可以私我~ 3344

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: 读取用户logcat日志
下一篇: 多线程断点下载
CharonChui
博客等级 码龄12年 66粉丝 134原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值