案例一:小睡眠签名 https://mp.weixin.qq.com/s/BIooPf-xHIz6a6ndWvACQg

引流星球的文章,pass

案例二:去广告 https://mp.weixin.qq.com/s/0Tu-G0fI0PQb05DpGNVXrg

案例三:AutoJs 自动化

下载:https://github.com/kkevsekk1/AutoX

环境配置:https://blog.csdn.net/weixin_55751186/article/details/132420597

简单案例:https://www.cnblogs.com/chen-xia/p/13079588.html

定位组件(通过id、className)

image.png

得物自动下滑

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// 检查是否在商品详情页
function checkPage() {
// targetPage = id("com.shizhuang.duapp:id/search_title");
targetPage = id("com.shizhuang.duapp:id/base_product_title");
if (targetPage.exists()) {
toastLog("当前位于商品列表页");
return true;
} else {
toastLog("没有在目标页面");
return
}
}


// 检查是否出现验证码
function checkCaptcha() {
// captcha = className("android.view.View").text("向右拖动滑块,完成拼图");
captcha = id("com.shizhuang.duapp:id/slideBtn");
if (captcha.exists()) {
toastLog("出现验证码,请手动通过");
return true
} else {
toastLog("页面暂无验证");
return
}
}

// 执行下滑操作的函数
function scrollDown() {
gesture(1000, [390, 1520], [400, 480]) // 模拟器
// gesture(1000, [58, 2638], [60, 752]) // 三星真机
}

// 主循环函数
function mainLoop() {
while (true) {
if (checkCaptcha()) {
toastLog("出现验证码,20秒后重试...");
sleep(20000);
continue;
}
if (!checkPage()) {
toastLog("没有在目标页面,10秒后重试...");
sleep(10000);
continue;
}
scrollDown();
toastLog("下滑完成,间隔3秒后继续...");
sleep(2000);
}
}

// 运行主循环
mainLoop();

案例四: Objection 分析 app

有两种Hook方式,一种基于xposed(算法助手、simpleHook),一种基于frida(objection),如果一种hook不了,就尝试另一种

安装:pip install objection

参考: https://www.zhuoyue360.com/crack/92.html

先启动frida-server, 然后启动要hook的应用,然后 frida-ps -R 查看包名,然后开始注入

1
objection -g 得物 explore

SSL绕过

1
android sslpinning disable

绕过root检测

1
android root disable

hook 类方法

1
android hooking watch class_method com.shizhuang.duapp.modules.du_mall_common.utils.product.BaseMallProductItemView.update --dump-args --dump-return

其中android hooking watch class_method 表示 hook类方法,后面加具体的方法名

各个参数作用:

  • --dump-args 查看参数
  • --call-original 调用原始的方法实现,而不是注入的代码
  • --dump-return 查看返回值
  • --set-return "hooked" 设置返回值
  • --native hook native方法
  • --call-back my_func 用自定义函数替换方法
  • --watch-traces --depth 5 查看调用堆栈
  • --dump-backtrace 查看调用链路

hook 类

1
android hooking watch class com.example.MyClass --dump-args --dump-return

查看调用了哪些函数,以及函数的入参和返回

hook native函数

通过【基地址】+ 【偏移】来定位函数

1
android hooking watch native --offset 0x6BC23000+0x1540 --dump-args --dump-return
  1. 用IDA定位到要hook的native函数,例如在libnative.so里面的Java_com_example_NativeFunc,查看函数的偏移 0x1540
  2. 使用objection中的android memory list modules命令列出加载的模块,找到libnative.so对应的基地址,例如0x6BC23000