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

App加固中代码混淆功能,让逆向工程师很头疼

混淆代码,会将原先有明确含义名、字段、函数等转为无意义单词,这样对于计算机来说,执行逻辑还是正常,但是当人们去分析混淆代码,会加大阅读和理解难度,以此来加强代码保护。 ​...对此,顶象移动安全总监Bob解释道:代码混淆主要有以下几方面工作: 1、代码中包含各种元素,比如变量、函数、名字,这些名字有实际意义,直白告诉破解者这个代码功能用途.如果能改成无意义名字,使得破解者阅读无法根据名字猜测其功能用途...对于Java来说,常用混淆工具如下: 1、Ipa Guard Ipa Guard是一个免费 ,Ipa Guard是一款功能强大ipa混淆工具,不需要ios app源码,直接对ipa文件进行混淆加密...可对IOS ipa 文件代码,代码库,资源文件等进行混淆保护。 可以根据设置对函数名、变量名、名等关键代码进行重命名和混淆处理,降低代码可读性,增加ipa破解反编译难度。...2、yGuard yGuard是一款免费Java混淆器(非开源),它有Java和.NET两个版本yGuard 完全免费,基于 Ant 任务运行,提供高可配置混淆规则。

27440

聊聊如何进行代码混淆

前言 什么是代码混淆 代码混淆,是指将计算机程序代码,转换成一种功能上等价,但是难于阅读和理解形式行为。 代码混淆常见手段 1、名称混淆 将有意义,字段、方法名称更改为无意义字符串。...生成新名称越短,字节代码越小。在名称混淆字节代码中,包,,字段和方法名称已重命名,并且永远不能恢复原始名称。不幸是,控制流程仍然清晰可见。...因此,对于对安全性要求很高场合,仅仅使用代码混淆并不能保证源代码安全。 常用混淆工具 1、yGuard yGuard是一款免费Java混淆器(非开源),它有Java和.NET两个版本。...yGuard 完全免费,基于 Ant 任务运行,提供高可配置混淆规则。...官网地址:https://www.yworks.com/products/yguard 2、proguard proguard是一个免费 Java文件压缩,优化,混肴器。

3.1K40
您找到你想要的搜索结果了吗?
是的
没有找到

聊聊如何进行代码混淆加固

代码混淆常见手段1、名称混淆 将有意义,字段、方法名称更改为无意义字符串。生成新名称越短,字节代码越小。在名称混淆字节代码中,包,,字段和方法名称已重命名,并且永远不能恢复原始名称。...因此,对于对安全性要求很高场合,仅仅使用代码混淆并不能保证源代码安全。 常用混淆工具1、ipaguard ipaguard是一款免费Java混淆器(非开源),它有Java和.NET两个版本。...yGuard 完全免费,基于 Ant 任务运行,提供高可配置混淆规则。...官网地址:IpaGuard官网--IOS 应用程序ipa文件混淆加密保护工具 2、proguard proguard是一个免费 Java文件压缩,优化,混肴器。...官网地址:http://www.allatori.com/ 本文主要介绍基于ipaguard如何进行混淆 ipaguard入门首先需要去官网下载:IpaGuard官网--IOS 应用程序ipa文件混淆加密保护工具

27820

Android开发:请你吃一顿史上最全Android混淆大餐

它能够将、变量和方法名字重命名为无意义名称从而达到混淆效果 最后,它还会校验处理后代码,主要针对 Java 6 及以上版本Java ME 资源压缩 Android 中,编译器为我们提供了另外一项强大功能...其实,我们在使用代码混淆,ProGuard 对我们项目中大部分代码进行了混淆操作,为了防止编译出错,我们应该通过 keep 命令保留一些元素不被混淆。...原因在于: 四大组件使用前都需要在 AndroidManifest.xml 文件中进行注册声明,然而混淆处理之后,四大组件名就会被篡改,实际使用与 manifest 中注册并不匹配,故而出错...mapping.txt 提供混淆前后内容对照表,内容主要包含、方法和成员变量。 seeds.txt 罗列出未进行混淆处理和成员。...此外,我们每次使用 ProGuard 创建发布构建都都会覆盖之前版本 mapping.txt 文件,因此我们每次发布新版本都必须小心地保存一个副本。

4K30

一篇文章带你领略Android混淆魅力

它能够将、变量和方法名字重命名为无意义名称从而达到混淆效果 最后,它还会校验处理后代码,主要针对 Java 6 及以上版本Java ME 2.3 资源压缩 Android 中,编译器为我们提供了另外一项强大功能...其实,我们在使用代码混淆,ProGuard 对我们项目中大部分代码进行了混淆操作,为了防止编译出错,我们应该通过 keep 命令保留一些元素不被混淆。...原因在于: 四大组件使用前都需要在 AndroidManifest.xml 文件中进行注册声明,然而混淆处理之后,四大组件名就会被篡改,实际使用与 manifest 中注册并不匹配,故而出错...mapping.txt: 提供混淆前后内容对照表,内容主要包含、方法和成员变量。 seeds.txt: 罗列出未进行混淆处理和成员。...此外,我们每次使用 ProGuard 创建发布构建都都会覆盖之前版本 mapping.txt 文件,因此我们每次发布新版本都必须小心地保存一个副本。

93620

Android混淆你了解多少?

它能够将、变量和方法名字重命名为无意义名称从而达到混淆效果 最后,它还会校验处理后代码,主要针对 Java 6 及以上版本Java ME 资源压缩 Android 中,编译器为我们提供了另外一项强大功能...首先,我们来了解一下常见混淆命令。 keep 命令 这里说 keep 命令指的是一系列以 -keep 开头命令,它主要用来保留 Java 中不需要进行混淆元素。...其实,我们在使用代码混淆,ProGuard 对我们项目中大部分代码进行了混淆操作,为了防止编译出错,我们应该通过 keep 命令保留一些元素不被混淆。...原因在于: 四大组件使用前都需要在 AndroidManifest.xml 文件中进行注册声明,然而混淆处理之后,四大组件名就会被篡改,实际使用与 manifest 中注册并不匹配,故而出错...我们每次使用 ProGuard 创建发布构建都都会覆盖之前版本 mapping.txt 文件,因此我们每次发布新版本都必须小心地保存一个副本。

1.7K00

android开发笔记之 Android代码混淆打包

那就让我们了解下这个东西吧 作用:为了防止自己劳动成果被别人窃取,混淆代码能有效防止被反编译 缺省情况下,proguard 会混淆所有代码,但是下面几种情况是不能改变java 元素名称,否则就会这样就会导致程序出错...三, 是我们java 元素名称是在配置文件中配置好。 所以使用proguard,我们需要有个配置文件告诉proguard 那些java 元素是不能混淆。...} 使用给定文件关键字作为要混淆方法名称 -overloadaggressively 混淆应用侵入式重载 -useuniqueclassmembernames 确定统一混淆成员名称来增加混淆...:proguard-project.txt”这行前“#”删除即可; 2.修改混淆配置文件:找到项目根目录下proguard-project.txt文件,修 改其中代码,这部分是最关键; 3.保存相关文件供以后出错使用...:主要有导出apk文件、项目根目录下 proguard目录下文件主要是mapping.txt)和项目源码; 4.项目运行过程出错处理:根据错误信息和第3步中保存mapping定位错 误位置。

74020

Android 混淆从入门到精通

原则上,代码混淆后越乱越无规律越好,但有些地方我们是要避免混淆,否则程序运行就会出错,所以就有了下面我们要教大家,如何让自己部分代码避免混淆从而防止出错。...,又想保持里面的内容不被混淆,我们就需要以下方法了 -keep class cn.hadcn.test.* {*;} 在此基础上,我们也可以使用Java基本规则来保护特定不被混淆,比如我们可以用extend...以上内容混淆规则中需要重点掌握,了解后,基本所有的混淆规则文件你应该都能看懂了。...,所写JSON对象混淆,否则无法将JSON解析成对应对象; 使用第三方开源库或者引用其他第三方SDK包,如果有特别要求,也需要在混淆文件中加入对应混淆规则; 有用到WebViewJS调用也需要保证写接口方法不混淆...*; } 使用enum类型需要注意避免以下两个方法混淆,因为enum特殊性,以下两个方法会被反射调用,见第二条规则。

1.4K90

Android代码混淆技术总结(一)「建议收藏」

而反汇编工具在再反汇编由于会执行到花指令,所以就会报错。 那么目前反汇编工具所使用反汇编算法,主要分为两:线性扫描算法和递归扫描算法。...我们知道dex文件名、方法名、变量名其实都对应一个string_id字符串索引,如下图。...这里字符串混淆有两种,一种是Java字符串混淆,另一种是native层字符串混淆,也就是so文件字符串混淆。...上面我们介绍了Proguard免费混淆工具,它可以混淆名、方法名和变量名,但是不支持字符串混淆,要使用字符串混淆就需要使用DexGuard商业版混淆器。...对于Java字符串加密,我们可以在dex文件中,找到要加密字符串在字符串常量表中位置,然后对它用加密算法加密。

2.4K30

造轮子系列 —— 方法插桩

hugo 差 aspectJ 支持 不支持 java costTime 好 asm 不支持 支持 app 模块 matrix 好 asm 不支持 支持 所有模块 Mamba 好 asm 支持 支持...由于使用是 aspectJ,只能作用于 java 文件,对于 aar 文件不起作用,并且,获取方法和参数整个过程非常耗时,具体可以看 enterMethod 和 exitMethod 方法。...hugo 也不支持混淆,codeSignature.getName 拿到混淆方法,无法拿到原函数名,这也就无法做收集统计。...methodId 对应方法名,即可查看到整个方法调用链,优点当然是不言而喻,数据大小和内存优化做非常极致,缺点也有,methodId 会随着版本变化而变化,需要维护每个版本配置文件,在做数据分析...插入 Class 主要目的是为了更好定位方法执行过程,由于各个会存在相同方法名,会导致调用链不清晰 MethodName 是必要,由于在插桩就已记录好方法名称,即使应用包被混淆,也能正常记录调用链

65820

RuntimeException和Exception区别

当然了,这种方法是比较优雅,让我们确切知道是在哪里出了错,并提供了异常捕获。本篇文章主要Java异常进行介绍与区分。 这是异常图。...而编译错误,如果你使用了编译器,那么编译器会提示。 Exception则是可以被抛出基本类型,我们需要主要关心也是这个。...当Java虚拟机试图从一个文件中读取Java,而检测到该文件内容不符合有效格式抛出。 java.lang.Error 错误。是所有错误,用于标识严重程序运行问题。...java.lang.UnsupportedClassVersionError 不支持版本错误。...当Java虚拟机试图从读取某个文件,但是发现该文件主、次版本号不被当前Java虚拟机支持时候,抛出该错误。 java.lang.VerifyError 验证错误。

1.1K10

Kotlin京东业务实战 | 强大又简洁JVM语言

对比其他语言,Kotlin语法和Java很像,非常容易上手,推荐以循序渐进方式开发项目;由于项目中允许同时存在Java和Kotlin代码文件,并且允许Java与Kotlin互调,使得开发者可以很方便在已有项目中引入...Android Studio提供将Java转为Kotlin插件,可以转换大部分代码。 常见编译问题: a、代码编译出错,定义变量,没有赋初始值,变量可以为空,需要加?...= null b、代码编译出错,变量可以为空,使用变量需要加?...统计业务模块Java实现和Kotlin实现代码量,不包含xml布局文件,代码量减少超过20%;代码减少最多为pojo,减少比例甚至超过80%;业务逻辑代码减少10%,同时代码会更加简洁直观,有助于提高代码可维护性...解决方法:在主站代码中配置属性方法混淆,保证kotlin中属性方法全部不做混淆优化; 为了保证插件包大小,并且与主站代码不重复,引用使用provided; 解决方法:使用provided引入

1.6K00

Android 代码混淆机制

混淆后生产映射文件 map 名 -> 转化后映射 -optimizations !...$Creator *; } -keepnames class * implements java.io.Serializable #需要序列化和反序列化不能被混淆(注:Java反射用到也不能被混淆...(注:Java反射用到也不能被混淆) 4.保持R文件不被混淆,否则,你反射是获取不到资源id。...还有一种情况是可以正常打包出APK文件,但是不一定能运行,能运行也会在某一步上出错,这种情况一般是因为把代码中不可混淆字段或文件混淆了比如引入jar包和so文件等,导致程序功能变化。...检测测试混淆jar文件 如果混淆过程中出错,可以在View configuration查看错误日志,然后直接通过文本编辑器打开混淆配置文件,然后进行相应修改。

1.4K20

android代码混淆

proguard 就是这样混淆工具,它可以分析一组class 结构,根据用户配置,然后把这些class 文件可以混淆java 元素名混淆掉。...缺省情况下,proguard 会混淆所有代码,但是下面几种情况是不能改变java 元素名称,否则就会这样就会导致程序出错。 一, 我们用到反射地方。...所以使用proguard,我们需要有个配置文件告诉proguard 那些java 元素是不能混淆。...2,运行错误,当code 不能混淆时候,我们必须要正确配置,否则程序会运行出错,这种情况问题最多。 3,调试苦难,出错了,错误堆栈是混淆代码 ,自己也看不懂。...{package_name}    重新包装所有重命名文件中放在给定单一包中 -dontusemixedcaseclassnames    混淆不会产生形形色色名 -keepattributes

1.5K80

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

5 #是否使用大小写混合 -dontusemixedcaseclassnames #优化/不优化输入文件 -dontoptimize #是否混淆第三方jar包 -dontskipnonpubliclibraryclasses...#混淆是否做预校验 -dontpreverify #混淆是否记录日志 -verbose #混淆所采用算法 -optimizations !...so库要求包名、名、函数名要完全一致 2、可能会在布局文件中直接引用名或方法名,要屏蔽混淆。...4、jar包文件名中不要有特殊字符,比如说“(”、“)”等字符在混淆就会报错,文件名最好只包含字母、横线、小数点。 5、使用WebView,会被js调用和方法,要屏蔽混淆。...下面是打包apkmd5签名值截图 ? 下面是app运行时获取到md5签名截图 ? 花指令 代码混淆通过对名和方法名重命名,只是加大了破解难度,但并不能完全阻止代码被破解。

1.7K40

50个常见 Java 错误及避免方法(第三部分)

“class file contains wrong class” 当Java代码尝试在错误目录中寻找文件,就会出现“class file contains wrong class”问题,导致类似于以下内容错误消息...Web服务器必须以二进制而不是ASCII格式发送文件。 可能会有一个路径错误,阻止了代码找到文件。 如果类被加载两次,那么第二次将导致抛出异常。 正在使用旧版本Java运行时。 35....被改变了,并且存在通过旧签名从另一个到这个引用。尝试删除所有文件并重新编译所有内容。 40....“FileNotFoundException” 当具有指定路径名文件不存在,将抛出此Java软件错误消息。...“UnsupportedEncodingException” 当不支持字符编码,会抛出此Java软件错误消息(@Penn)。

1.5K30

“码码”再也不用担心我代码被反编译了!

二、牛X工具 ProGuard是一个压缩、优化和混淆Java字节码文件免费、开源工具,它可以删除无用、字段、方法和属性。可以删除没用注释,最大限度地优化字节码文件。...如下图: 我个人认为,其实图形界面主要是为了得到.pro代码压缩、优化、混淆配置文件。...2、注意:【库】栏目中默认会自带rt.jar(JAVA基础库),需要将其修改为和工程相对应版本。此外应该是jdk1.6中rt.jar。...如下面图所示: 5、进入【优化】选项 这个界面主要用它可以删除无用、字段、方法和属性。可以删除没用注释,最大限度地优化字节码文件。...解决方案:调整混淆【保留】选项 问题3:执行时报错,执行失败,提示缺少库。 解决方案:在【库】添加工程必须lib,其中JDK下面的rt.jar(java基础包)必不可少。

2.9K60

和对象(2)

封装概念  访问限定符  Java主要通过和访问权限来实现封装:可以将数据以及封装数据方法结合在一起,更符合人类对事物认知,而访问权限用来控制方法或者字段能否直接在外使用。...Java中提供了四种访问限定符: 在 Java 中,访问修饰符用于限制、方法和变量访问范围。  public修饰后是所有地方都可以用 protected主要用在继承中,继承中再讲。...这里说个很重要点,这里我们之所以在图片上把default当作默认修饰符纯属因为default在中文上有默认意思,java系统并不支持default当作默认修饰符,这个是我因为方便纯属个人喜好才这样写...比如:为了更好管理电脑中歌曲,一种好方式就是将相同属性歌曲放在相同文件 下,也可以对某个文件夹下音乐进行更详细分类。        ...System.out.println(date.getTime());   } } // 编译出错 Error:(5, 9) java: 对Date引用不明确  java.sql 中 java.sql.Date

6410

Gradle一些技巧和遇到问题

是编译自动生成,并且每个 Module 都会生成一份,以该 Module packageName 为 BuildConfig.java packageName。...不想混淆需要一个个添加到 proguard-rules.pro(或 proguard.cfg) 中吗?...可修饰、方法、构造函数、属性。 然后在Proguard 配置文件中过滤被这个注解修饰元素,表示不混淆被 NotProguard 修饰、属性和方法。...maven方式依赖,每次打开Android Studio或者点击sync按钮,都会去maven中央仓库去取第三方文件,一般是jar或者aar文件。...直接运行release版本 有时候调试SDK必须要用release版本,例如地图、登录,但是每次打包混淆太麻烦,希望能在IDE中直接跑出release版本应用,简单来说就是在debug模式下产生release

1.8K30

ios-class-guard - iOS代码混淆与加固实践

对 Mach-O 文件进行静态扫描,通过文件地址分析出、方法名字,然后通过宏定义替换方法成无序随机字符串来达到混淆效果 三、ios-class-guard 混淆结果 使用 ios-class-guard...编辑 obfuscate_project 混淆脚本 修改一下几个参数 主要是修改这几个参数, 下面是使用 workspace 管理参数修改(如果不是使用 workspace ,就注释 WORKSPACE...symbols.json -O 输出定义混淆符号文件 ios-class-guard 不支持 Swift ios-class-guard 工具在 Github 上不支持 Swift,遇到带...to load: XXXXXXXX.dylib 通过 Github issue 找到相关解释,ios-class-guard 不支持 iPhoneOS SDK,所以在选择参数需要选择 iPhoneSimulator...,当我们导入该 .h ,OC /方法被定义为混淆字符串。

44110
领券