【安卓应用渗透】第一篇:安卓逆向回顾和梳理-2211

news2025/7/19 19:11:39

文章目录

    • 安卓开发课程回顾
        • 第一课:安卓项目文件结构(逻辑视图)
        • 第五课:文件读取和数据库存取
            • 文件存取
            • SQLite数据库存取
        • 安卓开发:案前资料库
    • 安卓逆向课程回顾
        • 第一课:基础逆向工具(Apktool, Keytool, Jarsigner)
        • 第二课:破解登录的两种方式
        • 第四课:反编译工具-Androidkiller
        • 第五课:破解支付流程、监控分析工具
        • 第六课:动态调试(Smalidea、adb)
        • 安卓逆向:案前资料库
    • 小结:反编译后的渗透设想(前提是没壳或脱壳)
        • 代码包含的常量数据(最常见)
        • 破解签名(极少见但危害大)
        • 动态调试(下断点调试分析)

安卓开发课程回顾

安卓编程理念:逻辑和视图是严格分开的。

第一课:安卓项目文件结构(逻辑视图)

  • manifests(清单文件)
      每个安卓应用系统都一定有AndroidManifest.xml文件,为Android系统提供应用的基本信息,系统必须获得这些信息才能运行任意应用代码。
      举例:程序的activity必须在Manifest文件中定义,定义第一个activity的代码如下:(可以理解为进入app后的首个页面)
    在这里插入图片描述

  • java
      MainActivity存放第一个activity的代码,使用setContentView()函数定义activity的页面布局layout。系统执行java文件,然后寻找布局文件,将布局控件可视化。
    在这里插入图片描述

  • res资源
      drawable 图像包含两个文件,
    前景图ic_launcher_foreground、后景图ic_launcher_background。
      layout 布局文件
      mipmap 图标,包含ic_launcher和ic_launcher_round两个文件。
    此处引用了drawable的两个文件作为图标。
    ic_launcher指桌面图标,包含foregroud、backgroud两个参数。
    ic_launcher_round:圆形图。
    在这里插入图片描述

  values 变量包含colors.xml、strings.xml、styles.xml,添加控件需要定义变量名和变量值,这时候需要修改strings.xml文件:
在这里插入图片描述

  全图:

在这里插入图片描述

第五课:文件读取和数据库存取

文件存取

文件存储是Android最基本的数据存储方式,不对存储的内容进行任何格式化处理。

指定的文件名不能包含路径,默认存储到 /data/data/<packagename>/files/ 目录下。

  写入文件的执行过程:
openFileOutput(filename, mode) ,返回文件输出流对象FileOutputStream -->输出流写入对象OutputStreamWriter() --> 缓冲区写入对象BufferedWriter(),关闭缓冲区写入对象.close()

  读取文件的执行过程:
openFileInput(filename) ,返回文件输入流对象FileOutputStream --> 输入流写入对象InputStreamReader() --> 缓冲区读取对象BufferedReader() --> 把数据存放到StringBuilder对象,关闭缓冲区读取对象。
SQLite数据库存取

Android系统内置了数据库!SQLite是轻量级的关系型数据库,通常只需要几百KB的内存,因此特别适合在移动设备上使用。

Android专门提供SQLiteOpenHelper帮助类,可以简单地实现数据库的创建和升级。
SQLiteOpenHelper是一个抽象类,使用前提是创建自己的帮助类去继承他。

注意:通过内置类创建数据库和交互,无需数据库账号密码等。

安卓开发:案前资料库

《Android官方培训课程中文版(v0.9.7)》(貌似已过时)
官网Training:https://github.com/kesenhoo/android-training-course-in-chinese
文档在线阅读:http://hukai.me/android-training-course-in-chinese/

Android 开发者指南

《第一行代码 Android 第2版》,郭霖著 (主要参考资料)

安卓逆向课程回顾

第一课:基础逆向工具(Apktool, Keytool, Jarsigner)

Apktool 是一个反编译Android Apk的第三方工具。它可以反编译资源,并在进行修改之后重新打包Apk。

功能:将资源解码成原形式,比如png和xml。将解码资源重新打包成apk/jar等。

安装地址:https://ibotpeaches.github.io/Apktool/install/
开启代理,下载apktool.bat,下载apk-tool_2.4.1.jar,重命名为apktool.jar,把apktool.bat和apktool.jar剪切到C:\Windows目录下,就可以在命令行运行apktool软件啦。

值得一提的是,apktool.jar依赖Java1.8或更高版本。基础命令如下:

	运行命令:apktool 
	反编译APK文件:apktool d test.apk
	将反编译后的文件重新打包:apktool b test

使用 KeyTool 生成加密密钥,使用 Jarsigner 根据密钥进行签名:(入门时可以重新设置证书和签名,是因为没有防篡改机制,实战中多半会校验。当然如果能绕过的话,那就可以给 apk 种马然后发布了)

	生成证书:keytool -genkey -alias abc.keystore -keyalg RSA -validity 20000 -keystore abc.keystore
	
	对apk进行签名:(把test.apk替换为自己的apk名称,此处是app-debug.apk)
jarsigner -verbose -keystore abc.keystore -signedjar test.apk test.apk abc.keystore

第二课:破解登录的两种方式

1.通过审计 smali 代码,找到内嵌的用户名/口令常量。

2.破解证书和签名,通过修改关键语句,改变程序执行流程或执行内容,从而绕过验证。

第四课:反编译工具-Androidkiller

该反编译工具拥有 UI 界面,比 ApkTool 更加方便。

安装和使用,可以参考实验文章:【移动安全技术】_安卓逆向4-使用AndroidKiller插入广告页

第五课:破解支付流程、监控分析工具

破解支付流程:

  • 第一步,反编译;
  • 第二步,修改相关代码流程;
  • 第三步,重新签名;
  • 第四步,绕过签名检测,启动破解后的应用。

辅助逆向分析的监控工具:Monitor(Windows自带工具)。

进一步了解可参考:ADB、Android Monitor、DDMS、HierarchyViewer、MAT、SysTrace、TraceView 性能分析工具使用大全

第六课:动态调试(Smalidea、adb)

动态调试,可以分析数据流,对渗透测试的帮助较大。

可以参考实验文章:【移动安全技术】_安卓逆向6:使用smalidea动态调试

安卓逆向:案前资料库

反编译工具:安卓逆向_2 — Androidkiller,apktool、dex2jar、jd-gui、jadx反编译工具 的 安装、设置及使用教程…

在这里插入图片描述

(动态)调试分析工具:ADB、Android Monitor、DDMS、HierarchyViewer、MAT、SysTrace、TraceView 性能分析工具使用大全

小结:反编译后的渗透设想(前提是没壳或脱壳)

代码包含的常量数据(最常见)

第一版:

口令信息
敏感接口信息

破解签名(极少见但危害大)

重新打包并启动成功。

动态调试(下断点调试分析)

第一版:

可以掌握数据流进行篡改渗透
可以 Hook 前端代码
可以通过注释绕过各种检测?
甚至在登录校验时通过密码变量获取到非内置的用户密码?

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

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

相关文章

【分享】订阅金蝶云进销存集简云连接器同步销货数据至金蝶云进销存系统

方案场景 在企业规模不断壮大的过程中&#xff0c;企业都是在钉钉内提交OA审批&#xff0c;并通过人工的方式统计多种审批数据&#xff0c;然后手动导入到某系统内&#xff0c;如果中间有调整又需要从头再进行核对&#xff0c;繁琐的流程严重影响了业务拓展。基于该方式企业希…

[附源码]SSM计算机毕业设计重庆工程学院教师宿舍管理系统论文JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Eolink征文活动--推荐国产神器Eolink!API优先,Eolink领先!

前言&#xff1a; 在我们后端开发者做项目的时候&#xff0c;避免不了与前端界面的交互&#xff0c;对于我来讲&#xff0c;在做项目的时候用到过postman&#xff0c;swagger做接口测试工作&#xff0c;在公司的时候公司主要用YApi可视化接口平台&#xff0c;最近使用了一个爆款…

负担过重何以轻装前行

随波逐流并不一定过得容易。 猜测负担过重原因&#xff1a; 所作的事情和预期差异大自己并不擅长目前所从事的专业恐惧失败试错成本过高基础薄弱无法持续成长简单问题复杂化复杂问题简单化…… 如何改变这种情况&#xff1f; 自我认知和外部感知都存在分析错位和信息不对称的…

解决ggplot绘制散点图形状超过6个的警告

正常画图&#xff1a; library(ggplot2) ggplot(mpg,aes(displ,hwy))geom_point(aes(shapeclass,colorclass))可以看出形状少了一个&#xff0c;SUV没有形状 并且还会弹出这样的警告&#xff1a; Warning message: “The shape palette can deal with a maximum of 6 discrete…

【附源码】Python计算机毕业设计网络求职招聘系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

更灵活定位内存地址的方法

更灵活定位内存地址的方法 文章目录更灵活定位内存地址的方法1.and和or2.以字符形式给出的数据3.[bxidata]4.SI、DI与寻址方式的灵活应用1.and和or and指令&#xff1a;逻辑与指令&#xff0c;按位进行与运算(同真为真) 比如&#xff1a; mov al, 01100011B and al, 00111011B …

速锐得适配进口福特烈马BRONCO车载 CAN总线应用随动转向大灯改装

适配进口福特烈马BRONCO车载 CAN总线应用随动转向大灯改装&#xff0c;必须先获得福特烈马BRONCO的原厂电路图纸&#xff0c;为此&#xff0c;速锐得准备了福特诊断仪、福特烈马BRONCO原厂电路图纸工具&#xff0c;适配装置、CAN数据采集设备、软件及线缆等一系列工具。 我们首…

【附源码】Python计算机毕业设计石家庄学院跳蚤市场

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

[数据结构]二叉树的链式结构

作者&#xff1a; 华丞臧专栏&#xff1a;【数据结构】 各位读者老爷如果觉得博主写的不错&#xff0c;请诸位多多支持(点赞收藏关注)。如果有错误的地方&#xff0c;欢迎在评论区指出。推荐一款刷题网站 &#x1f449; LeetCode刷题网站 目录 前言 一、二叉树的链式结构 二…

10 种创新的智慧废弃物管理技术

美国人每年产生约 2.5 亿吨垃圾&#xff0c;其中只有 34% 被回收。尽管有环保意识&#xff0c;但其他几项统计资料&#xff0c;揭示了令人震惊的垃圾倾向。废弃物管理的复杂性以前从未如此极端&#xff0c;这就是为什么今天这个行业僱用了近 50 万人&#xff0c;他们承担着每天…

【序列比对】Needleman-Wunsch(全局)和Smith-Waterman(局部)算法py实现(多条回溯路径,三叉树思路,超详细注释)

Needleman-Wunsch和Smith-Waterman算法py实现&#xff08;多条回溯路径&#xff09; 话不多说&#xff0c;直接上结果图&#xff0c;多条回溯路径。 原理 代码详解&#xff08;以NW为例&#xff09; 导入包以及参数设置 import numpy as npsequence_1 "AACGTACTCAAG…

数据分析经典算法——红黑树

数据分析经典算法——红黑树红黑树的重要性红黑树的定义红黑树图解红黑树的重要性 红黑树的优势 红黑树能够以O(log2(N))的时间复杂度的时间复杂度进行搜索、插入、删除操作。 此外,任何不平衡都会在3次旋转之内解决。 这一点是AVL所不具备的。 而且实际应用中&#xff0c;很多…

JAVA concurrency -- AQS 源码详解

概述 AQS全称AbstractQueuedSynchronizer是 jdk 中一个非常重要的方法&#xff0c;这是一个 jdk 的同步器的实现&#xff0c;JUC 中的很多类例如ReentrantLock等的实现都依赖于 AQS。 CAS AQS 的同步实现方式依赖于 CAS&#xff0c;那么 CAS 究竟是什么呢&#xff1f; CAS全…

写了半个月近3万字,助你直接上手Flink,原来这就是流批一体的处理方式

Flink即刻出发1.1.Flink 数据流1.2.Flink 分层 API1.3.Flink流处理程序的一般流程1.4.搭建Flink工程1.4.1.创建Maven项目1.5.批处理的单词统计1.5.1.示例1.5.2.开发步骤1.5.3.参考代码1.6.流处理的单词统计1.6.1.示例1.6.2.开发步骤1.6.3. 参考代码&#xff1a;java语言实现1.6…

Vue学习

Vue学习(第一天) 1、Vue.js安装 1.创建vue项目 2.启动vue项目 3.vue的MVVM 2、vue学习-1 1.vue cli 1.什么是vue cli 2.vue cli使用前提-Node 3.vue cli使用前提-Webpack 4.vue cli的使用 5.认识vue cli3 6.目录结构 7.vue ui 项目管理工具 2.什么是路由 1.前端阶段 3.url和hi…

C++STL——string类与模拟实现

STL容器——string类什么是STLstring类字符串的标准什么是stringstring常用接口介绍string的初始化比较大小与赋值容量对象的修改访问及遍历操作string中的swap与C库中的swap的区别非成员函数string类的模拟实现深浅拷贝与现代写法什么是STL STL(standard template libaray-标…

WRFV3.8.1编译报错,无法显示exe文件

问题报错&#xff1a;在WRF中遇到了一个可能和ubuntu系统有关的报错&#xff0c;主要表现为random seed过小&#xff0c;找不到&#xff0c;无法进行compile&#xff0c;导致compile em_real后无法生成4个*.exe文件。第一个报错出现位置为&#xff1a;。附件为compile.log。 图…

【树莓派不吃灰】命令篇④ Linux 常用命令学习

目录1. 常用命令1.1 操作文件及目录1.2 系统常用命令1.3 压缩解压缩1.4 linux系统常用快捷键及符号命令2. Linux 命令大全❤️ 博客主页 单片机菜鸟哥&#xff0c;一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2022-11-18 ❤️❤️ 本篇更新记录 2022-11-18 ❤️&#x…

YOLO系列改进之四十四——融入适配GPU的轻量级 G-GhostNet

文章目录前言一、解决问题二、基本原理三、​添加方法总结前言 作为当前先进的深度学习目标检测算法YOLOv7&#xff0c;已经集合了大量的trick&#xff0c;但是还是有提高和改进的空间&#xff0c;针对具体应用场景下的检测难点&#xff0c;可以不同的改进方法。此后的系列文章…