
Android 逆向进阶
文章平均质量分 80
专栏收录 Android 逆向相关的进阶内容,会不断加入新内容,使其涵盖全面
Android 逆向基础免费专栏:https://blog.youkuaiyun.com/dafan0/category_12676250.html
象野VH
爬虫工程师
展开
-
Jadx 使用指南
Jadx本身是一个命令行工具,它也有配套的图形界面工具–jadx-gui,jadx-gui还具有快速定位、引用搜索、全文搜索等功能。所以,往往直接使用jadx-gui完成一些反编译操作。apk 全称 Android Package,它相当于一个压缩文件,只要在电脑上将 apk 后缀改为 zip 即可解压。参数就是输入文件的路径,-d 指定反编译后输出文件的路径,-r指定不解析资源文件(能够提升整体反编译的速度)。Jadx 是一款使用广泛的反编译工具,可以一键把 apk 文件还原成 Java 代码。原创 2025-02-07 17:38:53 · 191 阅读 · 0 评论 -
Frida使用指南(四)- Frida-Native-Hook
Module 对象代表一个加载到进程的模块(例如,在 Windows 上的 DLL,或在 Linux/Android 上的 .so 文件), 能查询模块的信息,如模块的基址、名称、导入/导出的函数等。Memory是一个工具对象,提供直接读取和修改进程内存的功能,能够读取特定地址的值、写入数据、分配内存等。1.导出表(Export Table):列出了库中可以被其他程序或库访问的所有公开函数和符号的名称。2.导入表(Import Table):列出了库需要从其他库中调用的函数和符号的名称。原创 2025-01-24 16:58:28 · 247 阅读 · 0 评论 -
Frida使用指南(三)- Objection
objection是基于frida的命令行hook集合工具, 可以让你不写代码, 敲几句命令就可以对java函数的高颗粒度hook, 还支持RPC调用。可以实现诸如内存搜索、类和模块搜索、方法hook打印参数返回值调用栈等常用功能,是一个非常方便的,逆向必备、内存漫游神器。项目地址。原创 2025-01-24 10:45:51 · 798 阅读 · 0 评论 -
Frida使用指南(五)- Hook 定位加密位置
*运行以下 hook 脚本可以得到 Java 的 taget_class 类中的所有方法在 c 中对应的位置。**这个脚本大概知道逻辑就可以,想要具体了解,参考:https://www.apecome.com/video/XLSP16761x0x16761xXL100249xxx?如果字符串是在so中生成,可以去Hook内部:NewStringUTF 方法,该方法用于将C中的字符串转换为jstring,再返回给Java。**注意:**若加密算法定义在拦截器中,才采用这种方法寻找位置。原创 2025-01-23 17:45:14 · 517 阅读 · 0 评论 -
Frida使用指南(二)- Frida常用Hook脚本
注意:在java中定义,在c中实现的方法,也可以进行hook。原创 2025-01-23 10:44:32 · 137 阅读 · 0 评论 -
Android开发与网络请求
目标:快速开发一个安卓页面(用户登录&跳转)抓包就是在后端逻辑与API之间截取信息。原创 2025-01-20 15:57:39 · 131 阅读 · 0 评论 -
Java常用算法
注意:java与python的实现结果有时会有不同,比如java可能会把换行符==等符号给剔除掉,此时在用python实现时也要进行剔除。提醒:java、Python存在语言区别,有时个别字节会出现不同,但不影响整个结果。提醒:MD5加密盐salt、AES加密key、iv等关键字均可能被隐藏。如果在Hook时用到,再根据需要查看。注意:requests.post中的data也支持发送字节。java实现:算法+字节转换成十六进制字符串。注意:headers中的键与值都是字符串。原创 2025-01-20 15:54:14 · 70 阅读 · 0 评论 -
Java基础(二)
List是一个接口,接口下面有两个常见的类型(目的是可以存放动态的多个数据)目的:通过关键字让调用关系更加清晰(不过,很多项目不会用的那么专业)。,常见实现这个接口的有两个类,用于存储键值对,类似python中的。,常见实现这个接口的有两个类,用于实现不重复的多元素集合。在Java中:不支持同时继承多个类;Java中接口,约束实现它的成员必须实现接口中的方法。与在python中的用法相同。约束实现他的类必须包含的成员。Java中的继承,只支持单。,不支持多继承,但支持。可以泛指实现他的类。原创 2025-01-17 17:14:12 · 341 阅读 · 0 评论 -
Java基础(一)
Python,解释型编程语言Java,编译型&解释型语言在执行代码时,需要对代码先进行编译。利用java的安装bin目录下的javac,在终端执行>>>javacHello.java,编译完成后,会得到一个文件,然后运行代码>>>javaHello,打印字符串“你好”。编写Java代码时建议大家使用IDE(集成开发环境)来提高开发效率。推荐IDE:Intellij。原创 2025-01-17 17:07:21 · 52 阅读 · 0 评论 -
Android抓包 - Charles 安装配置及使用
Charles是一个HTTP代理与监视软件,方便开发人员查看手机与Internet之间的所有HTTP和HTTPS网络记录Charles 官方网站:https://www.charlesproxy.com/Charles 下载网址:https://www.charlesproxy.com/download/原创 2024-05-04 10:07:01 · 1094 阅读 · 0 评论 -
Android抓包 - 反抓包策略总结
可以思考是否是使用其他框架如flutter进行的开发或使用了自定义的协议进行的网络通信,此时需要先借助更加底层的抓包工具如wireshark进行协议分析,明确具体使用了那种协议后,才好确定后续的绕过方案。也许以上方式都尝试了,结果依然无法抓包。抓包前,可能会遇到 app 检测。原创 2024-06-02 08:26:07 · 695 阅读 · 0 评论 -
Android抓包 - 抓包工具总结
不同的抓包工具有不同的效果,因此,需要根据场景去选择抓包工具,有效的拦截到协议。原创 2024-05-18 11:49:45 · 1422 阅读 · 0 评论 -
Android抓包 - Root检测绕过
现在很多app特别是银行、政务app等在使用时,假如你的手机已经被ROOT了,就会弹框提醒你的运行环境不安全,然后某些特定功能就无法使用。ROOT的检测与绕过是一种基于Pattern的对抗,检测方根据ROOT后手机的一些特征Pattern来检测ROOT,而绕过方则是根据检测方的各种检测方式来设计各种绕过方法。原创 2024-04-28 18:43:31 · 850 阅读 · 0 评论 -
Android抓包 - 反抓包之不走系统代理
在安卓开发中,OkHttp发送请求时,设置,让手机不走系统代理,此时基于系统代理抓不到包。例如:得物、识货。此时的现象是app中可以加载出信息,但charles无法抓到包。这种情况如何抓包呢?原创 2024-05-06 21:46:32 · 1502 阅读 · 0 评论 -
Android抓包 - 证书认证
下图为HTTP协议的请求过程:传输过程中都是明文数据下图为HTTPS协议的请求过程:注意:公钥加密的数据只能通过对应的私钥才能解密,就算是进行加密的公钥也不能进行解密。加入charles后的流程如下:对于HTTP请求,charles不需要做什么配置,即可抓到包。对于HTTPS请求,charles如果不进行设置,抓到的包是经过了加密的。如果想进行解密,就需要得到对称密钥,而获得对称密钥的方法通过charles抓包是实现不了的。原创 2024-05-12 16:14:50 · 1132 阅读 · 0 评论 -
Android抓包 - 客户端证书认证进阶(代码混淆)
定位混淆后的代码位置Hook绕过如果定位混淆后的代码呢?hook系统方法,根据调用栈寻找到 doHandshake 被混淆的位置。console.log("参数:", a, b);});对比分析,先找到 connectTls 位置,由此展开后续分析。如果绕过?绕过pinner证书,最简单直接在connectTls中就能找到他的类和方法被混淆后的名称,可以直接Hook。例如:上面的第52行绕过证书校验方式1:关键字搜索定位代码(费劲)方式2:Hook底层校验的方法,直接绕过。原创 2024-05-13 22:37:08 · 1244 阅读 · 0 评论 -
Android抓包 - 服务端证书认证
客户端证书校验和服务端证书校验的表现都是app不能加载出有效信息,但在客户端证书校验中,Charles抓包得到的验证码为2开头的,在服务端证书校验中,Charles抓包得到的验证码为4开头的。原创 2024-05-12 16:38:45 · 1013 阅读 · 0 评论 -
Android抓包 - Hook 底层通信
平时开发使用的 http 或 https 均属于应用层的协议,其本质都会调用 TCP 发送请求。例如:你在 Python 中使用 requests 模块发送一个 http 请求,其底层就是使用 socket 模块 + TCP 实现发送的请求。相比 http ,在第二步多了一个请求的收发以同步随机字符串。原创 2024-05-25 11:36:07 · 441 阅读 · 0 评论 -
Frida使用指南 - Frida 检测绕过
进入app安装目录,把 libmsaoaidsec.so 删除即可。app安装目录位置,/data/app/,进入后再进入/lib/arm64/,运行 rm libmsaoaidsec.so 即可。然后在MT管理器中将怀疑的 so 文件移动到别的地方后进行测试,看是否还会出现闪退现象。hook发现,app会出现闪退现象,原因是这个app做了frida反调试。这个就类似frida-server防hook的升级版,启动后即可使用。有些app运行时会监测frida的相关特征,监测到之后就会直接闪退。原创 2024-05-12 17:10:25 · 2676 阅读 · 0 评论 -
预备阶段-Mitmproxy的使用
是一个代理工具(类似于Charles),可以实现抓包的功能。除此以外,他还可以集成Python脚本,在请求和响应中用代码进行自定义操作。原创 2024-10-11 20:34:45 · 99 阅读 · 0 评论 -
阶段二 - Fart8刷机及使用
刷机时,如果执行 flash-all.bat 无反应,那执行 fastboot devices 试试,若无设备出现,需要去安装google usb 驱动,具体参考六期-day06-03。我的电脑硬件不支持对AOSP源码进行编译,所以只能用别人编译好的刷机包进行刷机。使用的刷机包是luffy 8期 day37 下的v5目录下的taimen包,这个刷机包里面。刷机过程中,总是提示超过了最大存储空间,需要在flash-all.bat 文件的以下位置添加:-S 256M。原创 2024-06-18 07:25:06 · 599 阅读 · 0 评论 -
预备阶段-Android逆向基础
Android程序一般是使用Java语言开发的,通过打包生成一个APK文件安装到Android手机上来运行。通过一些反汇编工具可以得知APK文件内部的逻辑,甚至得到它最初的Java源代码(不完全等同于开发时的源代码,但是大体上相同)。也可以通过反汇编工具得到类似的Smali代码,Smali代码是一种类似于汇编语言的代码,适合机器执行,但对于程序员来说就很晦涩难懂。随着业务安全性的提高,现在大多数加密都放置在so文件中生成,想要了解so文件就需要掌握Arm汇编语法,了解寄存器和指令集。原创 2024-09-27 08:25:21 · 126 阅读 · 0 评论 -
Unidbg调用-补环境V3-打包
以识货app的数据解密为例来进行打包。原创 2024-06-29 09:13:56 · 144 阅读 · 0 评论 -
Unidbg调用-补环境V3-Hook
结合IDA和unidbg,可以在so的执行过程进行Hook,这样可以让我们了解并分析具体的执行步骤。:基于unidbg调试执行步骤 或 还原算法(以Hookzz为例)。原创 2024-06-29 09:06:17 · 323 阅读 · 0 评论 -
Unidbg调用-补环境V3-主动调用
*注意:**这一部分没有看见有价值的内容,复习时可略过,需要时再看。原创 2024-06-29 08:54:58 · 278 阅读 · 0 评论 -
Unidbg调用-补环境V2
补环境。原创 2024-06-29 08:15:34 · 267 阅读 · 0 评论 -
Unidbg调用-补环境V1
遇到 Java 的类库,可以执行返回结果;原创 2024-06-29 08:06:39 · 293 阅读 · 1 评论 -
预备阶段 - Airtest 使用指南
AirtestIDE 安装与启动: https://airtest.doc.io.netease.com/IDEdocs/getting_started/AirtestIDE_install/Airtest 可以基于图像识别来自动化控制 APP。这些方法更详细的用法及示例见 崔庆才 book。原创 2024-06-13 22:07:25 · 205 阅读 · 0 评论 -
unidbg讲解V1
DvmClass,在unidbg执行中用于表示类。DvmObject,在unidbg执行中用于表示对象(基于类创建对象)。DvmObject<?> obj1 = Crypt.newObject("真正的对象");DvmObject<?> obj2 = vm.resolveClass("com/yoloho/libcore/util/Crypt").newObject("真正的对象");方法的签名,用于表示某个方法。emulator,",参见JNI开发时的类型对照表。原创 2024-06-13 22:00:33 · 1631 阅读 · 0 评论 -
阶段二 - Android脱壳介绍
这里的 com.jiuxianapk.ui 就是app的包名,上面的语句相当于以spawn的形式进行运行,会重新加载app,并将app的内容加载到内存中,加载后再把里面的内容dump下来,生成dex文件。运行命令,会在运行目录生成dex文件:运行在那个目录都可以,生成的dex文件会放在那个目录。全选这些dex文件,直接拖到jadx中,即可完成脱壳解包。原创 2024-05-12 16:59:04 · 392 阅读 · 0 评论 -
预备阶段 - 解锁 Root 教程
参考链接:原创 2024-06-03 07:14:35 · 83 阅读 · 0 评论 -
拓展 - 正向实现客户端证书认证
如果第三方模块被混淆,那hook方式均不能生效。这时就需要根据系统包去定位校验的函数,因此需要对安卓开发者是如何实现客户端证书校验的有一定了解,接下来就介绍这部分内容。开发者实现客户端证书校验的本质是:证书/密钥 + 代码。在形式上有:公钥校验、证书校验和Host(主机)校验。原创 2024-05-18 16:20:03 · 636 阅读 · 0 评论 -
阶段一 - 基于Flutter开发与自定义协议
所以就有了降级方案,可以通过屏蔽 IP 实现。找到 IP 后,通过防火墙屏蔽,就可以正常使用 charles 、fiddler 抓包了。比如美团系(美团、点评、滴滴)使用了一种叫做移动长连接的技术,在打开 App 的时候,移动端和服务器建立起 tcp 连接,后续的请求和接收都走该通道,导致抓不到 http/https 的数据包。不过这种技术在 TCP 通道无法建立或者发生故障时,会选择使用 UDP 面向无连接的特性提供另一条请求通道,或者绕过代理长连服务器直接向业务服务器发起 HTTP 公网请求。原创 2024-05-19 06:40:14 · 504 阅读 · 0 评论