待整理
双开
双开:简单来说,就是手机同时运行两个或多个相同的应用,例如同时运行两个微信
汉化
- arsc
- xml
- dex
初识AndroidManifest.xml
AndroidManifest.xml文件是整个应用程序的信息描述文件,定义了应用程序中包含的Activity,Service,Content provider和BroadcastReceiver组件信息。每个应用程序在根目录下必须包含一个AndroidManifest.xml文件,且文件名不能修改。它描述了package中暴露的组件,他们各自的实现类,各种能被处理的数据和启动位置。
去弹窗
算法助手开启弹窗定位
强制开启调试
手机的 /system/build.prop 中的 ro.debuggable属性设置为1,即可为所有 App 开启调试模式。若 ro.debuggable属性设置为0,则判断 AndroidManifest.xml 文件中 android:debuggable属性是否为 true ,若为 true ,则开启调试模式,否则不开启。
方法一:在AndroidManifest.xml里添加 android:debuggable="true"
方法二:XappDebug模块hook对应的app
项目地址 XappDebug
方法三:Magisk命令(重启失效)
方法四:刷入MagiskHide Props Config模块
adb debug模式启动
adb shell am start -D -n
adb shell am start -D -n 包名/类名
am start -n 表示启动一个activity
am start -D 表示将应用设置为可调试模式
Log插桩
定义:Log插桩指的是反编译APK文件时,在对应的smali文件里,添加相应的smali代码,将程序中的关键信息,以log日志的形式进行输出。
调用命令
文件见 《安卓逆向这档事》五、1000-7=?&动态调试&Log插桩
签名
Android 目前支持以下四种应用签名方案: v1 方案:基于 JAR 签名。 v2 方案:APK 签名方案 v2(在 Android 7.0 中引入) v3 方案:APK 签名方案 v3(在 Android 9 中引入) v4 方案:APK 签名方案 v4(在 Android 11 中引入)
见 应用签名
《安卓逆向这档事》六、校验的N次方-签名校验对抗、PM代{过}{滤}理、IO重定向
过签名(签名校验对抗)
方法一:核心破解插件,不签名安装应用
方法二:一键过签名工具,例如MT、NP、ARMPro、CNFIX、Modex的去除签名校验功能
方法三:具体分析签名校验逻辑(手撕签名校验)
方法四:io重定向--VA&SVC:ptrace+seccomp
方法五:pm代理
反root检测
反制手段 1.算法助手、对话框取消等插件一键hook 2.分析具体的检测代码 3.利用IO重定向使文件不可读 4.修改Android源码,去除常见指纹
反调试
开发者防止自己的软件被调试,可以采用如下方式:
安卓系统自带调试检测函数
debuggable属性
ptrace检测
每个进程同时刻只能被1个调试进程ptrace ,主动ptrace本进程可以使得其他调试器无法调试
调试进程名检测
frida 检测
重启 systemui
如何 hook 安卓原生 URLConnection 的 getInputStream()
现代安卓 URLConnection 的底层实现是 okhttp, 所以直接 hook URLConnection 的 getInputStream() 没有任何效果。
其下有三个文件
DelegatingHttpsURLConnection.java
HttpsURLConnectionImpl.java
HttpURLConnectionImpl.java
查看源码得知可以 hook DelegatingHttpsURLConnection.java 或者 HttpURLConnectionImpl.java 里的 getInputStream() 来实现修改响应数据。
注意:虽然源码中的包名是 com.squareup.okhttp.internal.huc ,
但是因为 jarjar-rules 的存在,其真实包名为 com.android.okhttp.internal.huc

