6.Java流在Android中的应用

news2024/11/22 13:47:23

字节流有哪些?

以输出流为例,输入流除PrintStream外,和输出流是一一对应的

OutputStream

  1. ByteArrayOutputStream
  2. PipedOutputStream
  3. FilterOutputStream
    • BufferedOutputStream
    • DataOutputStream
    • PrintStream
  4. FileOutputStream
  5. ObjectOutputStream

使用案例

DataOutputStream dos = new DataOutputStream(
new BufferedOutputStream(
new FileOutputStream(
new File(file))));

字符流有哪些?

同样以输出流举例,出了打印流PrintWriter外,其他的输入流和输出流有着一一对应的关系
Writer

  1. CharArrayWriter
  2. PipedWriter
  3. FilterWriter
  4. BufferedWriter
  5. OutputStreamWriter
    • FileWriter
  6. PrintWriter

使用案例

BufferedWriter bw = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream(
new File(file)), "GBK"));

注意: 流使用到了装饰器设计模式
Component(抽象接口)
——> Concreate Component(具体实现类)
——>Decorator(装饰器,该抽象类持有Component的引用) ——>Concreate Component(具体实现类)

IO实践之dex文件加密

Apk文件是由哪些信息组成的?如何反编译Apk?

apk文件是由META-INF(签名文件)、res(资源文件)、AndroidManifest.xml(清单文件)、classes.dex(应用的代码)、resources.arsc组成,可以通过ZipFile解压缩apk文件得到上面的组成部分

加固的方案有哪些?

  • 反模拟器 (发现模拟器在运行我们的apk,就停止核心代码的运行)
  • 代码虚拟化 (自己创建一个虚拟执行引擎,然后将为我们的代码转换成自定义的指令进行虚拟执行)
  • 加密 (我们的核心可执行代码以压缩或加密的形式存在,我们将代码分割成多个小段,前面一段代码在执行时,先把后面一段代码从内存中解密,然后再去执行解密后的代码,如此一块一块迭代执行)

加固总体框架是怎样的?

  • 获取到apk源dex文件(ZipFile类解压缩,过滤dex文件,抛弃META-INF目录下文件)
  • 源dex文件进行加密(如:AES加密,获取到dex文件字节码数据byte[],对每一个字节进行加密)
  • 生成壳dex文件(壳module用make project生成aar包,解压缩aar包得到jar包,然后将jar包生成壳dex文件(cmd命令代码实现))
  • 源dex文件+壳dex文件+apk除源dex文件之外的所有文件,重新生成一个新的apk文件(ZipFile打包成apk)
  • 新的apk文件进行签名(cmd命令,jarsigner),替换掉META-INF中的文件才能运行,否则运行会报错

dex文件由哪些部分组成?

  • 文件头 (header,包含文件的大小、签名、格式等)
  • 索引区
    • string_ids (字符串的索引)
    • type_ids (类型的索引)
    • proto_ids (方法原型的索引)
    • field_ids (域的索引)
    • method_ids (方法的索引)
  • 数据区
    • class_defs (类的定义区)
    • data (数据区)
    • link_data (链接数据区)

apk的打包流程
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/519256.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

生信刷题之ROSALIND——Part 5 (PERM, PRTM, REVP)

公众号搜索《生信er》,内容更多,更精彩~ 目录 公众号搜索《生信er》,内容更多,更精彩~1、Enumerating Gene OrdersProblemSample DatasetSample OutputexampleCodeOutput 2、Calculating Protein MassProblemSample DatasetSample…

产品经理如何分析业务需求

目录 背景方案一:汇总所有推课的功能二:设置推课机器人的方法三:方法之间的关系四:方法合并五:方法汇总 总结 背景 现在我们开始设计第三版AR***,我负责的部分是推课部分,在领导的一步步引导之…

51单片机(十二)AT24C02(I2C)

❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要…

车企招聘高薪车载开发岗位,如何抓住机会进入该领域?

随着智能化、电动化和网联化的趋势不断加强,车载应用正在成为汽车和信息技术产业的一个重要领域。未来的车载应用将会实现智能驾驶、舒适性、智能信息娱乐等领域的创新,为车辆和车主带来更好的用户体验。 从行业来看,车载应用的相关企业不断…

Azkaban学习——单机版安装与部署

目录 1.解压改名 2.修改装有mysql的虚拟机的my.cnf文件 3.重启装有mysql的虚拟机 4.Datagrip创建azkaban数据库,执行脚本文件 5.修改/opt/soft/azkaban-exec/conf/azkaban.properties文件 6.修改commonprivate.properties 7.传入mysql-connector-java-8.0.29…

最简单的helm教程

最简单的Helm教程 学习前置条件 你得了解Kubernetes,拥有实际的使用经验那是最好不过了 Helm是什么? 我们打开Helm的官网:Helm的官网 可以看到官网的第一页就告诉了我们Helm是什么。 **Helm是Kubernetes(k8s)的包…

第十二届蓝桥杯青少组省赛Python真题,包含答案

目录 一、选择题 二、编程题 第十二届蓝桥杯青少组省赛Python真题 一、选择题 第 1 题 单选题 设s="Hello Lan Qiao,执行print(s[4:11])输出的结果为 () 答案:D 第 2 题 单选题 循环语句for iin range (8,4,2) : 执行了几次循环 ()

进腾讯了,38k....

大家好,最近有一位老同学成功去了腾讯,特意找他要了一些面试相关的资料,内容涵盖测试理论、Linux基础、MySQL基础、Web测试、接口测试、App测试、管理工具、Python基础、Selenium相关、性能测试、LordRunner相关等质量非常高!&…

SM2椭圆曲线公钥密码算法--密钥对与数字签名

1. SM2国密算法介绍 SM2算法全称是SM2椭圆曲线公钥密码算法(SM是商用密码的拼音缩写),是一种基于“椭圆曲线”的密码ECC(Elliptic Curve Cryptography)。2016年,SM2成为中国国家密码标准。 在商用密码体系中,SM2主要用…

超详细,多图 PVE 安装 OpenWRT 教程(个人记录)

前言 - 写这个的目的是因为本人健忘所以做个记录以便日后再折腾时查阅。 - 本人笔拙如有选词,错字,语法,标点错误请忽视,大概率不会修改,我自己能看懂就好。 - 内容仅适用于本人的使用环境,不同环境请忽…

Java --- redis7之布隆过滤器BloomFilter

目录 一、布隆过滤器BloomFilter 1.1、面试题 1.2、 布隆过滤器简介 1.2.1、设计思想 1.3、特点 1.4、布隆过滤器原理 1.4.1、实现原理与数据结构 1.4.2、添加key、查询key 1.4.3、hash冲突导致数据不精准 1.4.4、三步骤 1.4.5、布隆过滤器误判,为什么不…

使用ncnn在树莓派4B上部署nanoDet-m网络(12fps)

1. 背景 在机器人的应用中,目标检测是一个重要的课题。深度学习的快速发展,在检测的效果方面对比大多数传统检测算法,都有明显的优势。但是将深度学习模型部署到端侧设备上,实现高效的推理,同样是一个问题很多的领域。…

1099 Build A Binary Search Tree(超详细注解+38行代码)

分数 30 全屏浏览题目 作者 CHEN, Yue 单位 浙江大学 A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties: The left subtree of a node contains only nodes with keys less than the nodes key.The right subtree…

Word+ChatGPT,一分钟完成周报总结作文

大家好,我是可夫小子,关注AIGC、读书和自媒体。解锁更多ChatGPT、AI绘画玩法。加:keeepdance,备注:chatgpt,拉你进群。 Office 的办公软件Word,是我们日常的文字工作的阵地。与ChatGPT的文字生成…

自学黑客【网络安全】,一般人我劝你还是算了吧

一、自学网络安全学习的误区和陷阱 1.不要试图先成为一名程序员(以编程为基础的学习)再开始学习 我一直强调不要以编程为基础再开始学习网络安全,一般来说,学习编程不但学习周期长,而且实际向安全过渡后可用到的关键…

6 # 实现简单的 promise

什么是 Promise ? 在 JavaScript 中,Promise 是一种用于处理异步操作的对象,它可以更加优雅地处理回调函数嵌套和错误处理。 promise es6已经内部实现了, ie 不兼容 promise,需要 polyfill (比如&#xf…

C++学习记录——이십이 红黑树

文章目录 1、了解概念2、模拟实现1、插入2、插入代码3、测试是否是红黑树 3、封装map、set 1、了解概念 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或 Black。 通过对任何一条从根到叶子的路径上各个结…

Dcip的学习1-计算器

文章目录 前言一、配置安装环境1.1 网址1.2 再次打开需要进行的操作1.3 NodeJS控制台的操作1.4 出现的页面 二、Dcip生成计算器2.1 软件的基本单位 - Unitform中添加内容 2.2 OnleftChange(); 前言 只是为方便学习,不做其他用途, 一、配置安装环境 1.1 …

Jetpack之Navigation技术解密

Navigation是什么 官方的话: Navigation 是一个框架,用于在 Android 应用中的“目标”之间导航,该框架提供一致的 API,无论目标是作为 Fragment、Activity 还是其他组件实现。 自己的话: Navigation是管理Fragment…

win11、VS2019下配置PCL1.11.1

1、PCL安装配置 下载pcl-1.11.1-pdb-msvc2019-win64与PCL-1.11.1-AllInOne-msvc2019-win64.exe文件。以管理员身份运行PCL-1.11.1-AllInOne-msvc2019-win64.exe程序,截图如下: 安装过程中没有弹出OpenNI2的安装,但是要安装在3rdParty下&#…