$git clone https://github.com/firerpa/lamdaLAMDA 是一个用于逆向及自动化的辅助框架,它设计为减少安全分析以及应用测试人员的时间及琐碎问题,以编程化的接口替代大量手动操作,它并不是一个单一功能的框架。为了让你大概了解它的用处:你是否会在手机上安装各类代理、插件或者点来点去的设置来完成你的工作?你是否要在异地操作远在千里之外的手机?你是否有编程控制手机的需求?是否还在某些云手机厂商那里购买昂贵的IP切换、远程ADB调试、RPA自动化甚至连 logcat 日志都要付费的服务?如果有,那么对了,只需一个 LAMDA 即可解决这些问题。并且,LAMDA 更注重**分布式
| 1 | <p align="center"> |
| 2 | <img src="image/logo.svg" alt="LAMDA" width="256"> |
| 3 | </p> |
| 4 | |
| 5 | <p align="center">Android reverse engineering & automation framework</p> |
| 6 | |
| 7 | LAMDA 是一个用于逆向及自动化的辅助框架,它设计为减少安全分析以及应用测试人员的时间及琐碎问题,以编程化的接口替代大量手动操作,它并不是一个单一功能的框架。为了让你大概了解它的用处:你是否会在手机上安装各类代理、插件或者点来点去的设置来完成你的工作?你是否要在异地操作远在千里之外的手机?你是否有编程控制手机的需求?是否还在某些云手机厂商那里购买昂贵的**IP切换**、**远程ADB调试**、**RPA自动化**甚至连 **logcat 日志**都要付费的服务?如果有,那么对了,只需一个 LAMDA 即可解决这些问题。并且,LAMDA 更注重**分布式**,事实上,你可以在一台公网服务器上管理散布在世界各地各种网络环境中的设备。当然,LAMDA 可以做到的不止于此。 |
| 8 | |
| 9 | * 零依赖,只需 **root** 即可 |
| 10 | * 前身通过超500台设备压力的稳定生产环境考验 |
| 11 | * 通过接口轻松设置根证书,配合 http/socks5 代理实现中间人 |
| 12 | * 通过 frida 暴露内部 Java 接口(类 [virjar/sekiro](https://github.com/virjar/sekiro) 但基于 frida) |
| 13 | * 近乎商业级软件的质量和稳定性,ARM/X86全架构 |
| 14 | * 较高的安全性,支持接口及登录认证 |
| 15 | * 将你的设备变为移动网络代理 |
| 16 | * 部分兼容 uiautomator2 |
| 17 | * 设备状态/资源消耗读取 |
| 18 | * 系统配置/属性读取修改 |
| 19 | * 界面布局检视 |
| 20 | * 无线连接内置 root 权限的 WIFI ADB |
| 21 | * 支持自定义启动配置 |
| 22 | * 支持模拟器及真机、云手机/无头开发板、redroid (仅ARM) |
| 23 | * 支持安卓 6.0 (M, API 23) - 13 (T, API 33) |
| 24 | * 支持 WSA (Windows Subsystem for Android™️) |
| 25 | * 支持 UDP 协议代理(socks5 UDP 模式) |
| 26 | * 支持 OpenVPN 与代理共存 |
| 27 | * 支持 Magisk 开机自启动 |
| 28 | * 封装了大量常用接口,只需要会写 Python |
| 29 | * 完全网络化,脱离 USB 数据线/USB 集线器等实体 |
| 30 | * 大文件上传下载 |
| 31 | * 大大降低门槛以及闲杂琐事上的时间成本 |
| 32 | * 获取/重放系统中最近的 Activity |
| 33 | * 唤起应用的 Activity |
| 34 | * 可使用 ssh 登录设备终端 |
| 35 | * 只要有网即可连接任意地方运行了 LAMDA 的设备 |
| 36 | * 前后台运行 shell 命令,授予撤销应用权限等 |
| 37 | * 内置 http/socks5 代理,可设置系统/指定应用的代理 |
| 38 | * 内置 frida 15.x, IDA 7.5 server 等工具 |
| 39 | * 内置 crontab 定时任务 |
| 40 | * 内置 Python3.9 及部分常用模块 |
| 41 | * 内置 OpenVPN 可实现全局/非全局的 VPN |
| 42 | * WIFI 远程桌面(web) |
| 43 | * WEB 端文件上传下载 |
| 44 | * UI自动化,通过接口实现自动化操作 |
| 45 | |
| 46 | 如果觉得以下教程过于复杂看不懂,可以选择观看网友制作的 [视频教程](https://lamda.run/tutorial/video)。 |
| 47 | |
| 48 | ## 无视恶意软件对抗 |
| 49 | |
| 50 | MOMO (vvb2060) 是我们认为目前最强的ROOT特征检测软件,如 MOMO 所说:我们的目标是提高用户的知识水平。注意这段描述的功能**并不属于 LAMDA 框架的能力范畴**,它是由 LAMDA 和**未公开**的基建项目共同组成,我们只是以此来引出:你可以相信 LAMDA。 |
| 51 | |
| 52 |  |
| 53 | |
| 54 | ## 一键中间人流量分析 |
| 55 | |
| 56 | 支持常规以及国际APP流量分析,DNS流量分析,得益于 [mitmproxy flow hook](https://docs.mitmproxy.org/stable/api/events.html),你可以对任何请求做到最大限度的掌控,mitmproxy 功能足够丰富,你可以通过其 `Export` 选项导出特定请求的 `curl` 命令或者 `HTTPie` 命令,分析重放、拦截修改、功能组合足以替代你用过的任何此类商业/非商业软件。如果你仍不清楚 mitmproxy 是什么以及其具有的能力,请务必先查找相关文档,因为 LAMDA 将会使用 mitmproxy 为你展现应用请求。 |
| 57 | |
| 58 | 通过 tools/ 目录下的 `globalmitm`,`startmitm.py` 实现,使用方法请看其同目录 README。 |
| 59 | |
| 60 |  |
| 61 | |
| 62 | ## 拖拽上传 |
| 63 | |
| 64 | 可直接在远程桌面拖拽上传,支持上传整个目录,最大支持单个 256MB 的文件,文件将始终被上传到 `/data/local/tmp` 目录下。 |
| 65 | |
| 66 |  |
| 67 | |
| 68 | ## 远程桌面连接 |
| 69 | |
| 70 | 即使手机不在身边也可以使用浏览器随时操作界面,并且内置了 Python 以及相关 frida 工具,是你的另一个在线 shell。 |
| 71 | |
| 72 |  |
| 73 | |
| 74 | ## 通过代码自动化 |
| 75 | |
| 76 | 直接通过代码点点点,可以替代大部分手动操作。 |
| 77 | |
| 78 |  |
| 79 | |
| 80 | ## 界面布局检视 |
| 81 | |
| 82 | 可在远程桌面即时检视安卓应用的界面布局用以编写自动化代码,点击远程桌面右上角的眼睛图标即可进入模式, |
| 83 | 按下 `CTRL + R` 刷新布局,再次点击眼睛图标退出。 |
| 84 | |
| 85 |  |
| 86 | |
| 87 | ## 设备目录索引 |
| 88 | |
| 89 | 你可以在浏览器浏览设备上的文件,同时你也可以点击文件名来下载所需的文件。 |
| 90 | |
| 91 |  |
| 92 | |
| 93 | 如果你希望继续看下去,请确保:有一台已经 root 且运行内存大于 2GB,可用存储空间大于 1GB 的安卓设备或者安卓模拟器(推荐使用最新版**夜神**,**雷电**模拟器,或者 AVD [Android Studio Virtual Device])。**不完全支持** 网易 Mumu,**不支持**腾讯手游助手、蓝叠以及安卓内虚拟如 VMOS 等),对于真机,推荐运行最接近原生系统的设备如谷歌系、一加、安卓开发板等,或系统仅经过轻度改造的设备。如果你使用的是OPPO/VIVO/华为/小米的设备,经过尝试后无法正常运行,建议改用模拟器。 |
| 94 | |
| 95 | 对于**云手机**,支持阿里云/华为云手机,不支持X手指、X多云、X电、X云兔、X子星、X马云及任何其他品牌。 |
| 96 | |
| 97 | <br> |
| 98 | |
| 99 | # 目录 |
| 100 | |
| 101 | - [目录](#目录) |
| 102 | - [免责声明及条款](#免责声明及条款) |
| 103 | - [前言](#前言) |
| 104 | - [安装 LAMDA](#安装-lamda) |
| 105 | - [注意事项](#注意事项) |
| 106 | - [基础要求](#基础要求) |
| 107 | - [系统设置](#系统设置) |
| 108 | - [网络设置](#网络设置) |
| 109 | - [其他设置](#其他设置) |
| 110 | - [安装客户端](#安装客户端) |
| 111 | - [安装服务端](#安装服务端) |
| 112 | - [通过 Magisk 安装](#通过-magisk-安装) |
| 113 | - [手动安装](#手动安装) |
| 114 | - [方式 1](#方式-1) |
| 115 | - [方式 2](#方式-2) |
| 116 | - [启动服务端](#启动服务端) |
| 117 | - [退出服务端](#退出服务端) |
| 118 | - [卸载服务端](#卸载服务端) |
| 119 | - [使用 LAMDA](#使用-lamda) |
| 120 | - [远程桌面](#远程桌面) |
| 121 | - [文件上传](#文件上传) |
| 122 | - [文件下载](#文件下载) |
| 123 | - [移动代理](#移动代理) |
| 124 | - [自定义代理配置](#自定义代理配置) |
| 125 | - [连接设备](#连接设备) |
| 126 | - [先来一个热身](#先来一个热身) |
| 127 | - [设置系统代理](#设置系统代理) |
| 128 | - [安装中间人证书](#安装中间人证书) |
| 129 | - [设置 OpenVPN](#设置-openvpn) |
| 130 | - [连接内置的 FRIDA](#连接内置的-frida) |
| 131 | - [使用 FRIDA 暴露 Java 接口](#使用-frida-暴露-java-接口) |
| 132 | - [使用内置的定时任务](#使用内置的定时任务) |
| 133 | - [使 LAMDA 可被任意地点连接](#使-lamda-可被任意地点连接) |
| 134 | - [读写系统属性](#读写系统属性) |
| 135 | - [读写系统设置](#读写系统设置) |
| 136 | - [获取设备运行状态](#获取设备运行状态) |
| 137 | - [在设备上执行命令](#在设备上执行命令) |
| 138 | - [使系统可调试](#使系统可调试) |
| 139 | - [启动 IDA 调试服务](#启动-ida-调试服务) |
| 140 | - [无线连接内置的 WIFI ADB](#无线连接内置的-wifi-adb) |
| 141 | - [文件操作](#文件操作) |
| 142 | - [关机重启](#关机重启) |
| 143 | - [应用操作](#应用操作) |
| 144 | - [WIFI操作](#wifi操作) |
| 145 | - [基本UI操作](#基本ui操作) |
| 146 | - [进阶UI操作](#进阶ui操作) |
| 147 | - [接口锁](#接口锁) |
| 148 | - [使用内置终端 |