Android小技巧
经验
- 不要用jadx和jd,反编译的控制结构可能是错的,用jeb
- 找旧版,旧版可能没加固,没检测
- 遇到uni-app勇敢改html/js文件,很多人没有防护意识的
抓某个进程的log
使用命令:adb logcat --pid=$(adb shell pidof -s hiddencamdetector.futureapps.com.hiddencamdetector)
加固
360加固
找到篇分析文章https://oacia.dev/360-jiagu/ 一看字数还是先放一下慢慢看吧
使用工具DITOR
检测hook的加固
比如网易易盾
需要使用改了art源码的Android系统
有个提供在线服务的网站:https://nop.gs/
jadx打不开脱出的dex
checksum失败,修复dex头。
mt或https://github.com/luoyesiqiu/DexRepair
Xposed
修改final字段
直接用反射修改final字段会报
java.lang.IllegalAccessException: Cannot set public final field
这个时候只需要使用
XposedHelpers.setBooleanField(value, "a", true)
看起来好蠢QwQ,折腾了半天呢
frida
启动指定包名的应用
frida -l xxx.js -U -f package_name"
启动 工作资料/指定用户 的应用
~: adb shell pm list users 11/04/2024 11:13:08 PM
Users:
UserInfo{0:机主:4c13} running
UserInfo{10: 壶中界 :1030} running
UserInfo{95:DUAL_APP:20001010} running
frida -l xxx.js -U -f package_name --aux uid="(int)10"
frida获取不到类
首先看看是不是没有加Java.perform
查找所有dalvik.system.PathClassLoader
,然后一个一个地用来尝试查找类,写出来大概是这样
Java.perform(function () {
Java.choose("dalvik.system.PathClassLoader", {
onMatch: function (instance) {
// console.log(instance)
// console.log(Java.ClassFactory)
var factory = Java.ClassFactory.get(instance)
try {
var myClass = factory.use("d.a.a.a.c.d$a$b")
var methodArr = myClass.class.getMethods()
for (var m in methodArr) {
console.log(methodArr[m])
}
console.log(myClass["b"])
myClass["b"].implementation = function (a) {
console.log(`b is called`)
var stack = Java.use("java.lang.Exception").$new().getStackTrace()
for (var i = 0; i < stack.length; i++) {
console.log(stack[i].toString())
}
this["b"](a)
}
console.log("stop")
} catch (e) {
// console.log("next")
// console.log(e)
}
},
onComplete: function () {
// console.log("Done")
},
})
})
魔改Android导致的问题
scrcpy在小米的usb设置bug的情况下如何启用触摸
又名不登陆小米账号启用 MIUI 的 ADB 调试(安全设置)和 ADB 应用安装(需 Root)
setprop persist.security.adbinstall 1
setprop persist.security.adbinput 1
setprop persist.fastboot.enable 1
am force-stop com.miui.securitycenter
编辑/data/data/com.miui.securitycenter/shared_prefs/remote_provider_preferences.xml
,加入
<boolean name="permcenter_install_intercept_enabled" value="false" />
<boolean name="security_adb_install_enable" value="true" />
UI相关
获取当前Activity
adb shell "dumpsys window | grep mCurrentFocus"
获取窗口堆栈
adb shell dumpsys window windows |grep "Window #"
整个Activity的详细信息
adb shell dumpsys activity [package_name]