本帖最后由 qiujunjian1 于 2023-09-16 16:08 编辑
一、课程目标
1.了解Xposed原理及发展 2.从0到1编写xposed模块 3.配置ubuntu的逆向环境 4.了解xposed的常用Api 二、工具
1.教程Demo(更新) 2.jadx-gui 3.雷电模拟器 4.vmware 5.Android Studio 三、课程内容
1.什么是Xposed?Xposed是一款可以在不修改APK的情况下影响程序运行的框架,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作。在这个框架下,我们可以编写并加载自己编写的插件APP,实现对目标apk的注入拦截等。 2.Xposed原理用自己实现的app_process替换掉了系统原本提供的app_process,加载一个额外的jar包,入口从原来的: com.android.internal.osZygoteInit.main()被替换成了: de.robv.android.xposed.XposedBridge.main(), 创建的Zygote进程就变成Hook的Zygote进程了,从而完成对zygote进程及其创建的Dalvik/ART虚拟机的劫持(zytoge注入) 3.Xposed的发展及免root框架4.Xposed可以做什么?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模块编写时只需关注钩子实现
5.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的能力 6.Xpoosed常用APIAn efficient Hook API and Xposed Module solution built in Kotlin 1.Hook普通方法修改返回值 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; } });
2.Hook复杂&自定义参数Class a = loadPackageParam.classLoader.loadClass("类名"); XposedBridge.hookAllMethods(a, "方法名", new XC_MethodHook() { @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { super.beforeHookedMethod(param);
} });
3.Hook替换函数Class a = classLoader.loadClass("类名") XposedBridge.hookAllMethods(a,"方法名",new XC_MethodReplacement() { home.php?mod=space&uid=1892347 protected Object replaceHookedMethod(MethodHookParam methodHookParam) throws Throwable { return ""; } });
4.Hook加固通杀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相关学习里的方法,并修改参数以及返回值 五、答疑
待更新 六、视频及课件地址
下方隐藏内容为本帖所有文件或源码下载链接:
游客你好,如果您要查看本帖隐藏链接需要登录才能查看,
请先登录
|