当前位置: 首页 > news >正文

Android开发技术总结,附项目源码

今天本文主要讲解:

APK文件反编译

  • 什么是反编译
  • 如何防止反编译
  • APK文件的基本构造

APK加固的方案原理

  • APK加固总体架构
  • APK打包基本流程
  • Dex文件的意义

AES加密项目实战

  • APK加固项目实战
  • APK脱壳技术实战

一.APK文件反编译

1.什么是反编译
  • 定义:
    利用编译程序从源语言编写的源程序产生目标程序的过程
2.怎么进行反编译?

先了解apk的文件构造结构

二.加固方案思想

一个程序员的故事:

辛辛苦苦找到一个对象,结婚后发现是个母夜叉。不给管钱就闹,晚上睡觉她趴着睡,导致这程序员无法去洗脚了。然而这个程序员很努力,平时除了上班,还能够做点外包,赚点外快。所以他就想到了把工资卡上交,而把赚到的外快放到了自己的小金库。从此过上了性福生活

一个加密的故事:

通过将非核心的dex文件进行暴露来达到保护核心dex文件的目的。

![](https

点击领取完整开源项目《安卓学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

😕/upload-images.jianshu.io/upload_images/14140248-57ce8dc03aa293e4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

三.基本原理

3.1Apk打包流程

加壳是在原来apk的基础上加一层保护壳,dex文件修改了就需要重新打包,否则apk安装不了。这就需要我们详细学习apk如何打包的

3.2Dex文件是什么

加固的目的是保护dex,直接而言就是对dex文件进行操作,对dex文件动刀子,必须知道dex文件是什么,能否直接动刀子

3.3Dex文件加载流程

加壳后的文件是不能直接用的,dex文件是加密的,所以我们需要对他进行解密,解密后的dex文件如何加载?

3.4APK文件是怎么生产的

image.png

四.加固总体框架


那么问题来了:

  • 如何达到加密效果?
  • 为什么是两个系列的dex?
  • 壳dex 怎么来的
  • 壳dex如何保护源dex?
  • 如何签名?
  • 如何运行新dex(如何脱壳)?
4.1加密过程

4.2APK文件如何签名


4.3APK文件如何运行(脱壳)

4.4如何制定某些类在 main dex中
  • multiDexKeepFile:手动加入要放到Main.dex中的类
com.umeng.analytics.Abb.class
  • multiDexKeepProguard:以Proguard的方式手动加入要放到的Main.dex中的类
-keep public class com.tencent.bugly.**{*;}

文末

那么对于想坚持程序员这行的真的就一点希望都没有吗?
其实不然,在互联网的大浪淘沙之下,留下的永远是最优秀的,我们考虑的不是哪个行业差哪个行业难,就逃避掉这些,无论哪个行业,都会有他的问题,但是无论哪个行业都会有站在最顶端的那群人。我们要做的就是努力提升自己,让自己站在最顶端,学历不够那就去读,知识不够那就去学。人之所以为人,不就是有解决问题的能力吗?挡住自己的由于只有自己。点击我的GitHub下述资料免费领取
Android希望=技能+面试

  • 技能

  • 面试技巧+面试题
    net/topics/618156601)**
    Android希望=技能+面试

  • 技能
    [外链图片转存中…(img-TSIeohEm-1709643770572)]

  • 面试技巧+面试题

相关文章:

  • 【Golang】介绍
  • 微服务中的Feign:优雅实现远程调用的秘密武器(一)
  • 麒麟KYLINSOS服务器操作系统SP3安装
  • Java8的Stream执行机制
  • 前端面试练习24.3.5
  • FPGA-VGA成像原理与时序
  • Redis缓存【重点】
  • Kubernetes/k8s的核心概念
  • 蓝桥杯刷题--python-16
  • el-select 选中之后所有颜色变蓝了
  • STM32CubeIDE基础学习-新建STM32CubeIDE基础工程
  • qt QRadioButton 及QButtonGroup 使用
  • 事务处理
  • sqoop-import 详解
  • 【论文精读】Mask R-CNN
  • 【译】JS基础算法脚本:字符串结尾
  • 《剑指offer》分解让复杂问题更简单
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【mysql】环境安装、服务启动、密码设置
  • 2017-09-12 前端日报
  • ComponentOne 2017 V2版本正式发布
  • cookie和session
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • JavaScript标准库系列——Math对象和Date对象(二)
  • Java基本数据类型之Number
  • jquery cookie
  • PhantomJS 安装
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • 不上全站https的网站你们就等着被恶心死吧
  • 免费小说阅读小程序
  • 如何设计一个比特币钱包服务
  • 深入浏览器事件循环的本质
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • linux 淘宝开源监控工具tsar
  • 整理一些计算机基础知识!
  • #QT(智能家居界面-界面切换)
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (12)Linux 常见的三种进程状态
  • (2)STM32单片机上位机
  • (3)选择元素——(17)练习(Exercises)
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转)VC++中ondraw在什么时候调用的
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .apk 成为历史!
  • .jks文件(JAVA KeyStore)
  • .NET CLR Hosting 简介
  • .NET delegate 委托 、 Event 事件