安卓逆向 - 基础入门教程

news2024/11/19 17:44:36

一、引言

1、我们在采集app数据时,有些字段是加密的,如某麦网x-mini-wua x-sgext x-sign x-umt x-utdid等参数,这时候我们需要去分析加密字段的生成。本篇将以采集的角度讲解入门安卓逆向需要掌握的技能、工具。

2、安卓(Android)是一种基于Linux内核操作系统,架构图(了解即可)

3、安卓应用程序使用JAVA语言编写(重要),作为一名安卓逆向人员我们必须掌握Java语言基础(基本语法、类、接口、面向对象、网络类库、加密解密等等)

4、安卓逆向是对已经打包好的APP进行反编译,分析源码了解应用逻辑的一门技术,这一部分我们需要学习静态分析,动态分析。各种反编译工具(推荐 jadx),Frida Hook。

二、静态分析,学习jadx反编译

1、安装jadx,github地址: Releases · skylot/jadx · GitHub,下载 jadx-1.4.7.zip 解压即可。

2、调整jadx最大内存,打开bin目录下的 jadx-gui.bat文件,搜索DEFAULT_JVM_OPTS。

将 -XX:MaxRAMPercentage=70.0 修改成 -Xmx16g 

 3、jadx使用,打开apk,jadx会自动反编译apk

 全局搜索:点击左上角的导航 - 文本搜索,输入关键字,并且下方可以筛选检索的位置

根据关键字定位到关键代码后,我们就可以进行分析加密参数的生成啦。

三、动态分析,Frida 初使用

1、安装 adb (Android Debug Bridge),通过命令行使用adb,对安卓设备进行操作

2、下载模拟器,我使用的逍遥模拟器 (有Root好的真机更棒)

模拟器启动后,在命令行依次执行命令:

adb forward tcp:27043 tcp:27043
adb forward tcp:27042 tcp:27042
adb connect 127.0.0.1:21503
adb devices

再执行 adb shell,即可进入模拟器, #字符代表已 Root 

 3、安装Frida

本地直接使用 pip install frida 命令安装 (需有Python环境)

模拟器(手机)端下载对应的Frida-server: Releases · frida/frida · GitHub

低版本安卓推荐下载:12.8.13,高版本安卓直接下载最新版

模拟器是 x86架构,真机是 arm架构,请下载对应的 frida-server

4、开启Hook,动态分析应用运行时数据

1、将frida-server传到手机 /data/local/tmp 目录,转到本地frida-server存放的目录,依次执行以下命令

adb push frida-server-12.8.13-android-x86 /data/local/tmp
adb shell
cd /data/local/tmp
chmod 777 frida-server-12.8.13-android-x86
./frida-server-12.8.13-android-x86

2、编写 hook脚本,使用js方式启动,本例为 hook URL的构造方法:

function hook1(){
    var URL = Java.use('java.net.URL');
    URL.$init.overload('java.lang.String').implementation= function(a){
            console.log('加密前:'+a)               
            console.log('                    ')
            this.$init(a)
    }
}

function main(){
    Java.perform(function(){
        hook();
    })
}


setImmediate(main);

3、开始 hook,注意高版本 frida不需要带 --no-pause 

frida -U -l dm_hook.js -f cn.damai --no-pause

其中 dm_hook.js是 hook脚本的文件名,cn.damai是apk的包名。

滑动应用,正常打印出 url信息。

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

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

相关文章

vscode 格式问题

1、EditorConfig for VS Code 插件 shift alt f 格式化文件(VS Code格式化按键),如下图,每个缩进4空格 代码如下 创建文件名 .editorconfig root true [*] charset utf-8 indent_style space indent_size 2 end_of_…

【Linux多线程】一个基于环形队列实现的案例

环形队列 前言sem信号量程序代码pthread.hpp代码说明RingQueue.cc代码说明Makefile 运行 前言 sem信号量 sem_t 是信号量(Semaphore)的数据类型,用于在多线程或多进程环境中实现线程同步和资源控制。 信号量是一个计数器,用来控…

小红书2023“家生活”趋势白皮书

关于报告的所有内容,公众【营销人星球】获取下载查看 核心观点 近年来,年轻人与家的关系愈发紧密。 在小红书上,我们观察到了家居家装内容的蓬勃生长,3 年来相关内容的笔记规模增长了6倍,相关品类的搜索量增加的 3.…

10个学习JavaScript的理由

当你决心学习一门语言的时候,很难选择到底应该学习哪一门,常用的语言有Python、Java、JavaScript、C/CPP、PHP、Swift、C#、Ruby、Objective-C和SQL,但这并不是完整的列表。 文章目录 一、命名:JavaScript的由来 二、学习JavaSc…

SAP MDG —— MDG on S/4HANA 2023 创新汇总(Central Governance)

文章目录 MDG 基于SAP S/4HANA 2023的创新集中治理MDG通用架构相关基于已激活的数据刷新快照和未激活数据在文件上载时,将导入的源文件附到生成的变更申请附件中文件上载中新的层次结构更新模式文件下载中使用字段描述替换字段技术名称 MDG财务主数据相关当在MDG搜索…

Element的el-select下拉框多选添加全选功能

先看效果图 全选: 没有选中时: 选中部分: 作者项目使用的是vue3写法,如果是vue2的自己转换一下 html代码: js代码: 拓展 另一种方法,如果不想使用勾选框,可以试试下面的方…

Bigemap 在林业调研工作中的应用

1. 工作内容:做人工造林计划,生态林业规划设计。 2. 使用场景:主要用 bigemap 软件下载地图 ,套合自己用 app 实地采集的数据,比如:林地占 用案件调查;扶贫工作;森林防火灾害面积…

【iOS RunLoop】

文章目录 前言-什么是RunLoop?默认情况下主线程的RunLoop原理 1. RunLoop对象RunLoop对象的获取 CFRunLoopRef源码部分(引入线程相关) 2. RunLoop和线程3. RunLoop相关的类RunLoop相关类的实现CFRunLoopModeRef五种运行模式CommonModes CFRun…

【力扣】206. 反转链表 <链表指针>

【力扣】206. 反转链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2 输入:head [1,2] 输出:[2,1] 示例 3 输入&#xff1a…

超详细|ChatGPT辅助论文编写教程

本教程讲述在论文编写中使用ChatGPT进行辅助,提供思路,提升效率 祝看到本教程的小伙伴们都完成论文,顺利毕业。 可以加QQ群交流,一群: 123589938 第一章 论文框架搭建 1.1 明确论文题目 1.1.1 适合的研究方向 首先赋…

产品使用手册编写指南工具,我推荐这几个!

在编写产品使用手册时,有许多工具可以帮助我们更高效地完成任务。因为产品手册不仅是一份使用说明书,更是互联网企业宣传和推销自己产品的一种普遍形式,是对产品外观及内容的客观介绍,是对业务操作流程的详细讲解,是对…

【Apollo学习笔记】—— 相机仿真

文章目录 前言相关代码整理 测试实践文件目录包管理BUILD文件以及cyberfile.xml文件源程序BUILD运行结果其他参考CameraOutput channels启动camera驱动启动camera video compression驱动 前言 本文是对Cyber RT的学习记录,文章可能存在不严谨、不完善、有缺漏的部分&#xff0…

uniapp 使用iconfont

问题描述:在开发过程中会遇到使用自定义icon的情况,在uniapp项目中使用iconfont步骤如下。 问题解决 步骤一: 打开iconfont网址------我的项目-----下载至本地 下载成功的文件内容: 步骤二: 以管理员身份运行终端&am…

c++游戏制作指南(二):制作一个炫酷的启动界面(c++绘图)

🍿*★,*:.☆( ̄▽ ̄)/$:*.★* 🍿 🍟欢迎来到静渊隐者的csdn博文,本文是c游戏制作指南的一部🍟 🍕更多文章请点击下方链接🍕 🍨 c游戏制作指南&#x1f3…

SAP 集成以及PO异步接口调优

前言:目前国内的SAP相关的技术文档实在是少得可怜,PO相关的就更少了,基本上都是需要摸索,官方的技术专家很多时候的回复都是说了又似乎没说。。。 背景:由于目标系统接收数据缓慢或者是异步线程出现异常导致错误积压。…

IO流(3)- 转换流与打印流

目录 1. 为什么要用到转换流? 2. 字符输入转换流(重点掌握) 3. 字符转换输出流(理解即可) 4. 认识打印流 5. 打印流的作用 6. PrintStream(字节打印流)如何使用? 7. PrintStream 内部没有缓冲区 8. …

Go -- 测试 and 项目实战

没有后端基础,学起来真是费劲,所以打算速刷一下,代码跟着敲一遍,有个印象,大项目肯定也做不了了,先把该学的学了,有空就跟点单体项目,还有该看的书.... 目录 🍌单元测试…

【LeetCode】【数据结构】单链表OJ常见题型(二)

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言: 【LeetCode】面试题02.04. 分割链表 【Lee…

Unity实现物体上下漂浮旋转效果

效果展示 代码(直接挂载在物体上就可以了) using System.Collections; using System.Collections.Generic; using UnityEngine;public class FloatingObject : MonoBehaviour {public float amplitude 0.5f; // 上下移动的幅度public float frequency …

C# OpenCvSharp 去水印 图像修复

效果 项目 VS2010.net4.0OpenCvSharp3 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; using System…