1.了解Xposed原理及发展
2.从0到1编写xposed模块
3.配置ubuntu的逆向环境
4.了解xposed的常用Api
1.教程Demo(更新)
2.jadx-gui
3.雷电模拟器
4.vmware
5.Android Studio
Xposed是一款可以在不修改APK的情况下影响程序运行的框架,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作。在这个框架下,我们可以编写并加载自己编写的插件APP,实现对目标apk的注入拦截等。
用自己实现的app_process替换掉了系统原本提供的app_process,加载一个额外的jar包,入口从原来的: com.android.internal.osZygoteInit.main()被替换成了: de.robv.android.xposed.XposedBridge.main(),
创建的Zygote进程就变成Hook的Zygote进程了,从而完成对zygote进程及其创建的Dalvik/ART虚拟机的劫持(zytoge注入)
名称 | 地址 | 支持版本 | 是否免root |
---|---|---|---|
xposed | https://github.com/rovo89/Xposed | 2.3-8.1 | 否 |
EDXposed | https://github.com/ElderDrivers/EdXposed | 8.0-10 | 否 |
LSPosed | https://github.com/LSPosed/LSPosed | 8.1-13 | 否 |
VirtualXposed | https://github.com/android-hacker/VirtualXposed | 5.0-10.0 | 是 |
太极 | https://www.coolapk.com/apk/me.weishu.exp | 5.0-10.0 | 是 |
两仪 | https://www.coolapk.com/apk/io.twoyi | 8.1-12 | 是 |
天鉴 | https://github.com/Katana-Official/SPatch-Update | 6-10 | 是 |
1.修改app布局:上帝模式
2.劫持数据,修改参数值、返回值、主动调用等。例:微信防撤回、步数修改、一键新机
应用变量
3.自动化操作,例:微信抢红包
学习项目:
2022 最好的Xposed模块: GravityBox, Pixelify, XPrivacyLua
基于Xposed的抖音爬虫,抖音风控后自动一键新机,模拟一个全新的运行环境
基于xposed的frida持久化方案
A Xposed Module for Android Penetration Test, with NanoHttpd.
GravityBox
Xposed-Modules-Repo]
一个旨在使QQ变得更好用的开源Xposed模块
杜比大喇叭
知乎去广告Xposed模块
哔哩漫游
曲境
自动化创建Xposed模块及钩子,让Xposed模块编写时只需关注钩子实现
ubuntu虚拟机镜像,感谢沐阳哥提供的镜像!!!
内置:
Frida
开发环境
动态分析及开发工具:android-studio
动态分析工具:ddms
静态分析工具:jadx1.4.4
动静态分析工具:jeb
动态分析工具:集成HyperPwn
静态分析工具:010 editor
抓包工具:Charles
抓包工具:WireShark
动态分析工具:unidbg
vm虚拟机:https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html
(或下载我打包好的)
激活码:
'''
ZZ5RR-6AF8H-M8EKQ-TGMNG-X2UV6
JU090-6039P-08409-8J0QH-2YR7F
4A4RR-813DK-M81A9-4U35H-06KND
NZ4RR-FTK5H-H81C1-Q30QH-1V2LA
JU090-6039P-08409-8J0QH-2YR7F
4Y09U-AJK97-089Z0-A3054-83KLA
4C21U-2KK9Q-M8130-4V2QH-CF810
MC60H-DWHD5-H80U9-6V85M-8280D
'''
这几个密钥都试试看
第一步,安装虚拟机调整路径,输入激活码
第二步,导入镜像,文件->打开->选择解压好的镜像
第三步,点击运行,待初始化,输入密码:toor
1.Android Studio创建新项目
2.将下载的xposedBridgeApi.jar包拖进libs文件夹
3.右击jar包,选择add as library
4.修改xml文件配置
<!-- 是否是xposed模块,xposed根据这个来判断是否是模块 -->
<meta-data
android:name="xposedmodule"
android:value="true" />
<!-- 模块描述,显示在xposed模块列表那里第二行 -->
<meta-data
android:name="xposeddescription"
android:value="这是一个Xposed模块" />
<!-- 最低xposed版本号(lib文件名可知) -->
<meta-data
android:name="xposedminversion"
android:value="89" />
5.修改build.gradle,将此处修改为compileOnly 默认的是implementation
implementation 使用该方式依赖的库将会参与编译和打包
compileOnly 只在编译时有效,不会参与打包
6.新建-->Folder-->Assets Folder,创建xposed_init(不要后缀名):只有一行代码,就是说明入口类
7.新建Hook类,实现IXposedHookLoadPackage接口,然后在handleLoadPackage函数内编写Hook逻辑
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.callbacks.XC_LoadPackage;public class Hook implements IXposedHookLoadPackage {
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {
}
}
继承了IXposedHookLoadPackag便拥有了hook的能力
An efficient Hook API and Xposed Module solution built in Kotlin
修改返回值
XposedHelpers.findAndHookMethod("com.zj.wuaipojie.Demo", loadPackageParam.classLoader, "a", String.class, new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
super.afterHookedMethod(param);
param.setResult(999);
}
});
修改参数
XposedHelpers.findAndHookMethod("com.zj.wuaipojie.Demo", loadPackageParam.classLoader, "a", String.class, new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
super.beforeHookedMethod(param);
String a = "pt";
param.args[0] = a; }
});
Class a = loadPackageParam.classLoader.loadClass("类名");
XposedBridge.hookAllMethods(a, "方法名", new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
super.beforeHookedMethod(param); }
});
Class a = classLoader.loadClass("类名")
XposedBridge.hookAllMethods(a,"方法名",new XC_MethodReplacement() {
home.php?mod=space&uid=1892347
protected Object replaceHookedMethod(MethodHookParam methodHookParam) throws Throwable {
return "";
}
});
XposedHelpers.findAndHookMethod(Application.class, "attach", Context.class, new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
Context context = (Context) param.args[0];
ClassLoader classLoader = context.getClassLoader();
//hook逻辑在这里面写
}
});
写一个xposed模块去修改上节课smali相关学习里的方法,并修改参数以及返回值
待更新
百度云:
https://pan.baidu.com/s/1cFWTLn14jeWfpXxlx3syYw?pwd=nqu9
阿里云PS:
https://www.aliyundrive.com/s/TJoKMK6du6x
哔哩哔哩:
https://www.bilibili.com/video/BV1X24y1m7cj
PS:解压密码都是52pj,阿里云由于不能分享压缩包,所以下载exe文件,双击自解压
《安卓逆向这档事》一、模拟器环境搭建
《安卓逆向这档事》二、初识APK文件结构、双开、汉化、基础修改
《安卓逆向这档事》三、初识smail,vip终结者
《安卓逆向这档事》四、恭喜你获得广告&弹窗静默卡
《安卓逆向这档事》五、1000-7=?&动态调试&Log插桩
《安卓逆向这档事》六、校验的N次方-签名校验对抗、PM代{过}{滤}理、IO重定向
[原创]源码编译(2)——Xopsed源码编译详解
[原创]Xposed Hook技巧,代{过}{滤}理abstract
[原创]Xposed callMethod 如何传入接口参数
详细文字介绍、视频原件下载、视频所用到的程序下载、课后作业和学习交流参看论坛原文:
https://www.52pojie.cn/thread-1740944-1-1.html
点击左下角阅读原文,进入 B站 在线观看视频教程,欢迎点赞、投币、收藏、转发~
-官方论坛
www.52pojie.cn
--推荐给朋友
公众微信号:吾爱破解论坛
或搜微信号:pojie_52