Android Spider Frida - App逆向注入JavaScript代码_frida.js的基本语法与数据类型介绍



无论是针对初学者的入门级学习资料还是面向经验丰富的高级开发者的深入课程,《大数据知识点》都覆盖了超过95%的核心内容,并且系统性非常强。
因为文件数量较多,在此仅对部分目录进行了截图展示。整套资源包括canonical面试资料库、学习心得、源代码解析教程、实际项目经验分享以及详细的框架规划图解,并提供完整的教学视频资源库,并将在未来持续补充和完善
文章目录
- 引言
-
反向操作流程
-
Overload / Frida数据类型
- 1.1 定义与概述
- 2.1 常见的实现方式
- 1.1 定义与概述
-
三、Frida Hook常用代码介绍
-
- 1.基本代码框架
-
四、注入JavaScript代码运行监听App
-
总结
-
前言
Frida可通过将JavaScript脚本注入到APP内存中来实现对其运行状态及底层逻辑的实时监控,并支持对核心业务流程进行重构以恢复源代码逻辑结构;该工具能够通过逆向工程手段帮助分析人员快速定位问题根源并制定优化方案;其中"HOK"即为钩子技术的核心概念即利用钩子机制动态关联关键业务流程与目标功能模块
提示:以下是本篇文章正文内容,下面案例可供参考
一、逆向步骤
逆向流程:
- 获取到App应用的apk文件;
- 通过ApkScanner-PKI等工具执行查壳操作,
- 若有壳需先解壳以获得Dex文件用于反编译;
- 利用Jadx-GUI等工具解析其源代码以识别关键组件;
- 根据App抓取的数据解析出加密的关键参数,并在Jadx-GUI中执行定位操作;
- 分析反编译后的Apk源码以编写钩子脚本(采用JavaScript语言实现);
- 启动并配置Frida服务以便于其接收来自安卓模拟器或手机设备的数据流;
- 在钩子脚本执行后可深入分析异常行为路径(简而言之类似于通过浏览器调试功能实现动态逆向分析)。
ApkScan-PKID 查壳工具获取使用:<>
Frida-Dexdump 脱壳工具获取使用:<>
JDAX-GUI 反编译工具获取使用:<>
安装抓包工具及模拟器的指南:进行App抓包操作。<>
JS逆向工程 Frida框架与夜神模拟器的安装配置及基本操作:<>
二、重载(Overload) / Frida数据类型
1.重载函数介绍
在类内部定义的具有相同名称的方法称为重载,在这种情况下允许成员方法具有相同的名称但不同的参数列表和返回值类型。在C#语言中,默认情况下只有当两个方法拥有完全相同的输入和输出时才会被视为同一个方法;然而,在某些情况下可以通过显式地为这些情况创建多个相关联的方法来实现所需的重载效果。为了实现多态性机制中的功能扩展性需求,在设计系统时应充分考虑各种可能的组合情况并确保每个成员方法(包括构造函数)都必须拥有独一无二的参数配置从而能够正确触发相应的行为模式。
- 被重载的方法必须更改参数集合(参数个数或类型发生变化);
- 被重载的方法允许修改返回类型;
- 被重载的方法能够定义访问权限;
- 被重载的方法能够定义新增或更为宽泛的异常检查;
- 方法可以在同一类内部或者在其子类内部实现相同功能;
- 无法通过返回值类型来区分不同的重载函数。
2.重载函数常用的类型
| java中的类型 | frida里面的类型 |
|---|---|
| int | int |
| float | float |
| boolean | boolean |
| string | java.lang.String |
| char | [C |
| byte | [B |
| list | java.util.List |
| HashMap | java.util.HashMap |
| ArrayList | java.util.ArrayList |
| JavaObject | java.lang.Object |
| String[] | [Ljava.lang.String |
提示:如果出现以上没有的类型,则app源码文件.class.对象类型
三、Frida Hook常用代码介绍
1.基本代码框架
import frida
import sys
def on\_message(message, data):
if message['type'] == 'send':
print("[\*] {0}".format(message['payload']))
else:
print(message)
JavaScript_Code = """
Java.perform(function(){ // 是 frida的main,所有的脚本必须放在这个里面
var hooksClass = Java.use("xxxxx"); // 定位至类文件处, 获得类包, 相当于js的new()
hooksClass.md5.implementation = function(s){ // 改编function()函数的实现
console.log("md5传入的参数:", s); // 控制台打印
![img]()
![img]()
![img]()
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!** **由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新** **[需要这份系统化资料的朋友,可以戳这里获取]()**
真正体系化!** **由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新** **[需要这份系统化资料的朋友,可以戳这里获取]()**
