| 
转载自吾爱破/解精华帖正已手下的文章
×
注册登录后全站资源免费查看下载您需要 登录 才可以下载或查看,没有账号?立即注册  
 
 一、课程目标
 
 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框架
 名称 地址 支持版本 是否免root xposedhttps://github.com/rovo89/Xposed2.3-8.1否
 EDXposedhttps://github.com/ElderDrivers/EdXposed8.0-10否
 LSPosedhttps://github.com/LSPosed/LSPosed8.1-13否
 VirtualXposedhttps://github.com/android-hacker/VirtualXposed5.0-10.0是
 太极https://www.coolapk.com/apk/me.weishu.exp5.0-13是
 两仪https://www.coolapk.com/apk/io.twoyi8.1-13是
 天鉴https://github.com/Katana-Official/SPatch-Update6-10是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
 第一步,安装虚拟机调整路径,输入激活码 第二步,导入镜像,文件->打开->选择解压好的镜像 第三步,点击运行,待初始化,输入密码: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常用API1.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() {      @Override      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相关学习里的方法,并修改参数以及返回值五、答疑 
 待更新六、视/频及课件地址 
 百度云七、其他章节阿里云
 哔哩哔哩
 PS:解压密码都是52pj,阿里云由于不能分享压缩包,所以下载exe文件,双击自解压
 八、参考文档
 
 
 |