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

软件安全性测试(连载24)

常用的安卓代码混淆器包括安卓SDK自带的Proguard(第11.1节对Proguard工具进行了详细地介绍)、网易易盾、360加固保等。代码混淆可以基于Java语言,但是更安全的是基于C语言。...有时候逆向工程.apk ->.jar->.java往往不太可靠,黑客会使用类似于apktool把.apk文件反编译成smail文件,正如第11.4.2节对apktool工具介绍中所述,smail文件是一种基于...黑客根据smail的语法规则,把恶意代码注入在smail文件中,然后通过类似Smali2Java的工具把smail文件转换成Java文件。然后再进行正向编译形成.apk文件。...现在发现一些不法分子用一个打开NFC功能的安卓手机在公交站、公交车,地铁等人口比较密集地区,在人员裤子口袋处乱碰以获取被害人的银行卡信息。...安卓应用数据备份 在安卓的AndroidManifest.xml中。

65820

在 Android Instant App(安卓即时应用程序)中启用 ProGuard (混淆)

这里有许多通用和 安卓即时程序专用(AIA 意为 Android Instant Apps)的技术可以减少 APK 大小,你应该都去了解一下,但使用 ProGuard(混淆)来移除未使用的代码对 nstant...' } } ... } 在上面的代码片段中,我选择了一个名为 aia-proguard-rules.pro 的文件用于我的 Android Instant App(安卓即时应用程序)专用...对于该文件的初始内容,您应该复制并粘贴可安装应用程序中的规则(从本指南的第 1 步中)。...如果你愿意,不必为每个功能创建单独的规则文件,您可以使用相对路径(例如「../ aia-proguard-rules.pro」)将所有功能模块指向单个文件。 3....1 列中的 P / C / M )是被这个文件所 (d)efined(定义)又或者仅仅被 (r)eferenced(引用)(上文第 2 列中的 s / r )。

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

    重学Java之泛型的基本使用

    我一开始用的是JDK 8,在使用这个版本的时候,泛型已经进入Java十年了,泛型对于我来说是很理所当然的,就像鱼习惯了水一样。那Java为什么要引入泛型呢?...类型命名惯例按照惯例,类型参数明示是单个大写字母的,常见的类型参数名称如下:E- 元素 广泛被Java集合框架所使用K - keyN - 数字Y - 类型V - 值S,U,V etc - 2nd, 3rd...我们在来看下软件兼容,以安卓软件为例,每年都在发大版本,但是安卓手机现在的版本就是什么样的都有,2023年最新的安卓版本是13,但我手机的安卓版本是安卓11,那我去应用市场下载软件的时候,丝毫不考虑下载的软件是否能正常运行...举一个例子来说,Android11的存储权限变更导致APP无法访问根目录文件,但是为了让为安卓11开发的软件能够跑在低版本的安卓上,这就要求开发者向前兼容。....getValue()); } // 泛型方法 // 返回值左侧声明接收几个类型参数 public 1,T2> void compare(T1 t1,T2 t2){ }}复制代码使用示例如下

    37610

    C#使用Xamarin开发可移植移动应用进阶篇(8.打包生成安卓APK并精简大小),附源码

    正文 我记得,之前在写安卓方面的文章的时候,有人就问过我.Xamarin.Android为什么打包出来这么大?随便一个HelloWord就20-30MB? 嗯..今天我们就来解决这个问题.....我们先从指定一个应用程序图标开始.. 1.指定应用程序图标 我们直接右键Android项目,属性.选择安卓清单.如下: ?...一般,在小型Xamarin.Android应用程序上使用ProGuard通常可以减少大约24%的大小 如果,在具有多个库依赖性的较大应用程序上使用ProGuard通常可以实现更大的尺寸缩小。...生成过程是首先使用Xamarin.Android链接器来优化应用程序中的托管(C#)代码,然后使用ProGuard(如果启用)在Java字节码级别优化APK。...当启用ProGuard的检查,Xamarin.Android上运行所产生的APK ProGuard的工具。ProGuard配置文件在构建时由ProGuard生成和使用。

    3K80

    Android老司机以为深知熟路,撸完这份大厂警示面试,直呼好险差点犯了致命错误!

    ,很多都是需要去真正消化理解,例如知道了保证线程安全的实现方式,那么也要会解决一些实际场景,比如手写一个生产者消费者模型,或者,一个线程打印奇数,一个线程打印偶数,交替打印,最终输出1,2,3,4……....、垃圾回收算法对比、Java 虚拟机结构等 Java 的四大引用 Java 的泛型,Java 反射的理解 说一下泛型原理,并举例说明 说说你对 Java 注解的理解 数据类型(字节跳动) 包装类型 缓存池 线程安全 Object 通用方法 继承 反射 异常 泛型 注解 容器中的设计模式...client 如何确定自己发送的消息被 server 收到? 谈谈你对 WebSocket 的理解 WebSocket 与 Socket 的区别 谈谈你对安卓签名的理解 请解释安卓为啥要加签名机制?...(Android移动架构师七大专题学习资源) 架构师筑基必备技能:深入Java泛型+注解深入浅出+并发编程+数据传输与序列化+Java虚拟机原理+反射与类加载+动态代理+高效IO Android高级UI

    39300

    一文了解安卓APP逆向分析与保护机制

    网易云易盾资深安全工程师 钟亚平 3月17日,安卓巴士全球开发者论坛在重庆举办,网易资深安全工程师钟亚平出席交流活动,并做《安卓APP逆向与保护》的演讲。...一、混淆代码 Java代码是非常容易反编译的,作为一种跨平台的、解释型语言,Java 源代码被编译成中间“字节码”存储于class文件中。...在分享中,钟亚平展示了利用Proguard,对Dex2jar进行反编译处理后的Apk效果示例: ? Proguard处理后 ?...以add-int v0, v1, v2、sub-int v0, v1, v2、mul-int v0, v1, v2这三条指令进行替换,然后进行加固编译,这样子操作后,即使把替换后的数据恢复了,也不会以add-int...v0, v1, v2、sub-int v0, v1, v2、mul-int v0, v1, v2这三条指令进行替换,然后进行加固编译,这样子操作后,即使把替换后的数据恢复了,也不会变形成为之前的字节码

    1.6K30

    为前端工程师写的安卓入门知识

    一、环境配置 安卓环境配置相对来说还比较简单,一般在官网下载Android Studio之后,创建个Hello World项目就是可以顺利编译的。...这个过程中Java环境和一些安卓依赖的sdk环境,都是自动帮忙配置好。但是为了让我们能够在命令行里使用类似adb java等命令。...比如这是创建的一个Hello World项目,代码主要写在Java目录下,res目录用来存放一些资源文件,比如图片和布局的xml文件等,在安卓里面很多样式的实现并没有css那么容易。...15 对应 Android 4.0.3 targetSdkVersion 29 versionCode 1 versionName "1.0" } 同时构建不同类型的...可以在gradle里配置同时编译出适配不同类型的apk,用户下载时只用下载对应类型就可以了。 压缩代码,可以使用ProGuard对代码进行压缩,把很长的命名改成无意义的短命名。

    1.4K30

    Android面试大纲(集合)

    属性 捕获异常 其他相关 listview重用convertView、使用lru 避免onDraw方法执行对象的创建 谨慎使用多进程 15 Bitmap面试题 1、recycle 在安卓3.0以前Bitmap...是存放在堆中的,我们只要回收堆内存即可 在安卓3.0以后Bitmap是存放在内存中的,我们需要回收native层和Java层的内存 官方建议我们3.0以后使用recycle方法进行回收,该方法也可以不主动调用...状态 recycle方法是不可逆的,如果再次调用getPixels()等方法,则获取不到想要的结果 2、LruCache原理 LruCache是个泛型类,内部采用LinkedHashMap来实现缓存机制...—框架模式MVC在安卓中的实践 http://blog.csdn.net/qq_30379689/article/details/52909656 Android基础——框架模式MVP在安卓中的实践...3、配置Lint 创建Lint.xml到根目录下,自定义Lint安全等级等 在Java文件中可以使用@suppressLint(“NewApi”)来忽视Lint的报错 在xml文件中可以使用tool:ignore

    1.1K20

    Android 序列化框架 Gson 原理分析,可以优化吗?

    支持泛型 是 否 支持继承 否 是 ---- 2....1、在预置的容器 TypAdapter 中,会先通过容器类型的 RawType 获取容器构造器,再根据泛型实参 elementType 获取元素类型的 TypeAdapter; 2、在序列化时,先写入...1、在预置的 EnumTypeAdapter 适配器中,会先获取枚举类型的整个枚举列表,并生成 2 个映射表。...由于 Java 有泛型擦除,无法直接在 .class 语法上声明泛型信息,Gson 的方法是要求程序员创建匿名内部类,由 Gson 在运行时通过反射获取类声明上的泛型信息。...原理是 Class 文件中的 Signature 属性会保持类签名信息,而 TypeToken 只是一个工具类,内部通过反射获取类签名中泛型信息并返回 Type 类型。

    2.4K50

    Android dex文件64k限制解决办法

    随着安卓平台的不断发展与壮大,市场上大而全的应用比比皆是,产品需求的变更累积和UI交互的极致追求,除了 resources 文件的俱增,在 Android Project 中依赖的 Library 和...这些变化,除了会导致打包出的 APK 文件越来越大之外,当项目中java代码包含的方法数(method count)超出一个峰值时,编译过程中就会出现如下错误: 较早版本的编译系统中,错误内容如下: Conversion...因此可以理解为,使用ART虚拟机下的安卓系统自动支持APK文件中多个DEX的加载。...Dex 文件中出现的 string 默认是 4 个字节即 16 位大小的 int 类型的数字引用使用的,即单个 Dex 文件最多只能引用 2^16 个 strings,当你的项目中出现超过这个最大数字的字符串引用...功能齐全,使用方便,绝对是安卓开发人员分析应用的不二选择。

    1.2K20

    Android热更新方案Robust开源,新增自动化补丁工具

    基本上有如下三种解决办法: 1. applymapping ProGuard提供了使用指定mapping来进行混淆的功能,就是在proguard-rules.pro文件中添加applymapping这个配置型...1. Java编译器的优化 Java编译器的优化工作包括Java编译器会自动生成一些桥方法以及移动代码的位置等,比较典型的就是泛型方法、内部类和Lambda表达式。...补丁自动化的过程中使用注解来标注需要补丁的方法,所以当Java编译器针对泛型移动代码时,注解也会被移动,直接导致补丁上线后无法修复问题。...以Java编译器对泛型方法的处理为例,Java编译器会为泛型方法生成一个桥方法(在桥方法里面调用真正的方法,桥方法的参数是object的类型,注意这类桥方法Robust热更新系统并没有对其插桩),同时Java...编译器把原方法上的注解移动到桥方法上,针对泛型方法制作补丁时,就变成了针对泛型方法的桥方法制作补丁了。

    1.8K50

    Android 代码混淆 混淆方案

    #保持泛型 -keepattributes Signature #保持所有实现 Serializable 接口的类成员 -keepclassmembers class * implements java.io.Serializable...使用上文的配置进行混淆打包后在/build/outputs/mapping/release/目录下会输出以下文件: dump.txt 描述APK文件中所有类的内部结构 mapping.txt...gradle 在四处地方寻找重复资源: src/main/res/ 路径 不同的构建类型(debug、release等等) 不同的构建渠道 项目依赖的第三方库 合并资源时按照如下优先级顺序 依赖...同时,如果重复资源在同一层次出现,比如src/main/res/ 和 src/main/res2/,则 gradle无法完成资源合并,这时会报资源合并错误。...最后附上一个我在实际项目中的混淆方案 proguard-android.txt文件内容 # 代码混淆压缩比,在0~7之间 -optimizationpasses 5 # 混合时不使用大小写混合,混合后的类名为小写

    2.7K30

    ProGuard混淆

    ProGuard技术的功能概括为以下4项: 1.压缩(shrinks) :检查并移除代码中无用的类,字段,方法,属性。 2.优化(optimizes):对字节码进行优化,移除无用的指令。...4.预检测(Preveirfy):在java平台上对处理后的代码进行再次检测。 详细介绍 (1) ProGuard 配置 -include{filename}:从给定的文件中读取配置参数。...预检测 -dontpreverify 执行ProGuard后会生成的文件: 1)dump.txt 描述apk文件里的所以类的内部结构 2)mapping.txt 列出了原始的和混淆后的类...class * extends java.lang.annotation.Annotation {*;} # 类型转换错误 添加如下代码以便过滤泛型(不写可能会出现类型转换错误,一般情况把这个加上就是了...),即避免泛型被混淆 -keepattributes Signature -keepattributes EnclosingMethod # 抛出异常时保留代码行号,在第6章异常分析中我们提到过 -keepattributes

    3.2K30

    Java泛型深入理解「建议收藏」

    泛型相关问题 1、泛型类型引用传递问题 在Java中,像下面形式的引用传递是不允许的: ArrayList arrayList1=new ArrayList();//编译错误...ArrayList arrayList2=arrayList1;//编译错误 实际上,在第4行代码处,就会有编译错误。...所以为了避免这种极易出现的错误,Java不允许进行这样的引用传递。(这也是泛型出现的原因,就是为了解决类型转换的问题,我们不能违背它的初衷)。...可是,这样做有什么意义呢,泛型出现的原因,就是为了解决类型转换的问题。我们使用了泛型,到头来,还是要自己强转,违背了泛型设计的初衷。所以java不允许这么干。...2、Java的泛型是如何工作的 ? 什么是类型擦除 ? 泛型的正常工作是依赖编译器在编译源码的时候,先进行类型检查,然后进行类型擦除并且在类型参数出现的地方插入强制转换的相关指令实现的。

    84020
    领券