`

Xpose框架的入门学习

阅读更多

【关于Xpose】:

第一次接触到Xpose是在网络安全的课上,老师提出的期末考核,当时听到Xpose一脸懵逼,常年做Android竟然不知道这个,而且时间很仓促,只有2个星期准备,同时这两个星期包括了一个星期的考试周。做这样的系统首先要会JAVA,其次要对Android开发的流程比较熟悉,这样的挑战对我来说都是难度比较大的,更不要说是初次接触的同学们了,所以这里将自己初步学习过程记录下来,让同学们少走弯路,以最快的时间最高的效率初步搭建好自己包含Xpose框架的app。

=====================================================================================

【关于eclipse及初次安卓开发】:

建议大家直接去看我的分类博客“Android初步”,运行出自己第一个“Hello world”app就算成功,博客里面写文顺序是按照我学习的过程按时间顺序推进的,当年囫囵吞枣学了一遍,后来觉得基础没打好,于是有重新过了一遍基础,大三,大四基本上课就是在搞这个,自己写代码,运行,找bug没有问题以后写博客,其中也碰到了很多新手遇到的问题,所以大家可以相互借鉴

===================================================================================

                                                                言归正传

关于Xpose框架,框架对于我们Android开发人员来说,远远没有字面上意思来的“高大上”,简单粗暴的解决方式就是在网上下一个“.jar”然后在project里面丢到lib里面,对就是库,咱缺少那个库,下载下来丢进去,然后我们就可用用里面各种API接口了,省事方便。我觉得我大部分时候使用框架是因为自己"懒"。不过想起当年在“蓝杰”让我们手动实现队列的那个时光,自己实现才是真正了解原理的最佳途径,不过鉴于时间紧张,我们就简单粗暴的站在巨人的肩膀上编代码。

搭建:

新建一个Project,名字你随便,记得最好英文



 然后:去网上找框架,就是我们丢到lib里面的东东。


 【注意!】一定是lib而不是libslib自己新建一个文件夹

如果直接将jar包放置到了libs目录下,很可能会产生错 误“IllegalAccessError: Class ref in 
pre-verified class resolved to unexpected 
implementation”。 
估计Xposed作者在其框架内部也引用了BridgeApi,这样操作避免重复引用。

ee就是死在了这个上面然后上网找大牛的代码去看,看到“北漂周”周圣韬大神这句话,顿时觉得十分惭愧不愧是做安全方面的人,作为我们后湖出身的业界楷模,大家注意这里


 就是这个XposedBridgeApi-54就是这个啦。当然啦看了我的文章的人有福利,我会把我这个框架传上来。

下载下来以后直接拖到lib里面,然后再buid path一下+add to path,为什么要这样呢,因为是为了


这两个地方也会出现我们框架的身影,有人问那为什么那么麻烦呢,我直接拖进去,粘贴进去不就得了。答:“欢迎强迫症的孩子一个一个去拖”。

这就是ctr+A+C  和ctr+C(N次)的区别。别问我为什么知道,以前我也傻也是一个个拖进去的。

【配置】:

需要在Androidmanifest配置如下

 

 <meta-data

            android:name="xposedmodule"

            android:value="true" />

        <meta-data

            android:name="xposeddescription"

            android:value="Easy example which makes the status bar clock red and adds a smiley" />

        <meta-data

            android:name="xposedminversion"

            android:value="30" />

 这个是要加的代码:具体加在哪里呢:

看整体

 

 <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <meta-data

            android:name="xposedmodule"

            android:value="true" />

        <meta-data

            android:name="xposeddescription"

            android:value="Easy example which makes the status bar clock red and adds a smiley" />

        <meta-data

            android:name="xposedminversion"

            android:value="30" />
        <activity
            android:name="com.example.xposehook.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

 看到这里的同学最好不要问我AndroidManifest在哪里

在你的眼皮子底下,不在任何包里

【代码】:

src使我们放代码的地方

其中:

 MainActivity是自动生成的。第二个是我们用Xpose功能的地方。这里简单调用xpose框架来动态监测我们的app是否包含这个包名:

import de.robv.android.xposed.IXposedHookLoadPackage;

import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XC_MethodHook.MethodHookParam;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam;

public class Main implements IXposedHookLoadPackage{

    @Override
    public void handleLoadPackage(final LoadPackageParam lpparam) throws Throwable {
        // TODO Auto-generated method stub
        if(!lpparam.packageName.equals("com.monkey.myxpose")){
            return;
        }
        
        XposedHelpers.findAndHookMethod("com.monkey.getcoin.MainActivity", lpparam.classLoader, "getCoin",new XC_MethodHook() {
            protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                // TODO Auto-generated method stub
                //super.beforeHookedMethod(param);
                param.setResult(99999);
                XposedBridge.log("Loaded app: " + lpparam.packageName);
            }
        });
    }
    
}

 

 【非常重要】:上次忘记讲了,非常抱歉,我们做好这个模块以后,需要一个初始化申明,声明加载这个Android包里xposehook所在的class。



 在asset包里新建xposed_init   txt文本,注意名字一定是固定的就是上图那个不能随便改。

然后里面写入你的hook函数所在的class:

如下:

com.example.xposeee.Attacker

 

 

 我们可以看到头文件中Import导入了不少Xpose框架里面的东东,到这里说明你的包都导入成功了,能用了。

到现在一个初步的Android搭建好Xpose框架的app已经实现

虚拟机运行或者真机运行:

我们的app图标,图片字都可以换,这里就不教大家做个性化app了,毕竟“交差”要紧



 

 没做界面,现在基本框架搭建好,下一节课直接讲xpose是拿来干什么的,之所以刚开始不讲是因为希望大家搭好框架心里不慌,慢慢看原理,好吧其实真实原因是:“我也还不懂”

一起学习进步吧

 

下面我已经将XposedBridgeApi-54.zip 导入进来,大家自行下载解压。

如果有任何的问题:

请联系我

QQ邮箱:429899791@qq.com

加人请说明:iteye+问题

 

 

  • 大小: 11.1 KB
  • 大小: 4.1 KB
  • 大小: 6.8 KB
  • 大小: 6.2 KB
  • 大小: 14.5 KB
  • 大小: 4.8 KB
  • 大小: 2.2 KB
  • 大小: 2.9 KB
0
0
分享到:
评论

相关推荐

    Xpose框架的源码

    其中,核心库(如`xposedlib`)是框架的基础,包含与Android系统交互的关键类;接口层定义了模块开发的API,使得开发者可以轻松地编写自定义模块;安装器负责在设备上安装和管理框架及模块;模块管理器则负责动态...

    安卓Hook教程,里面包含了Xpose框架和实现demo

    通过逍遥模拟器安装xpose框架(有脚本可以一件安装),实现hook功能

    xpose安卓手机框架

    xpose安卓手机框架

    xpose适配模拟器版本(1).rar

    1. **Xpose框架安装**:首先,用户需要在模拟器上获取root权限,这是Xpose运行的基础。然后,将Xpose框架的apk文件安装到模拟器上,并通过特定的引导程序启动它。这个过程中可能会遇到权限问题或系统兼容性问题,...

    XPosed框架,原XPosed派大星,目前可用的XP框架

    能在线下载的XPosed框架,支持安卓8以下,ROOT后可一键在线安装。支持雷电模拟器、夜神模拟器、逍遥模拟器、部分云手机以及系统支持的手机。Xposed鸭是一款基于Xposed Installer的修改版软件,他弥补了原版XPosed...

    xposed离线安装文件

    Xposed框架是一款强大的Android系统修改工具,它允许用户在不修改APK的情况下影响应用程序或系统的行为。这个离线安装文件包含Xposed框架的多个版本以及一个名为JustTrustMe的APK,这暗示了我们可能涉及的主要知识点...

    XposedAPI54和APK文件

    Xposed框架是一款在Android系统上广泛使用的开源框架,它允许用户通过安装各种模块来修改系统的功能,无需对系统进行根权限操作。XposedAPI54指的是该框架在Android API级别54(即Android 5.1.1)时对应的接口库,...

    xposed全版本卸载包

    Xposed框架是一款强大的Android系统修改工具,它允许用户通过安装各种模块来定制和优化系统功能。标题中的"全版本卸载包"意味着这个压缩包包含了适用于不同Android版本的Xposed框架卸载程序,旨在帮助用户在遇到问题...

    基于xposed框架开发,有很多好玩的功能,比如:自动抢红包,防止消息撤回,朋友圈防删除,修改运动步数,自动点赞朋友圈等

    在这个框架的基础上,可以开发出很多好玩的应用程序,比如自动抢红包、防止消息撤回、朋友圈防删除、修改运动步数、自动点赞朋友圈等。 首先,让我们来看看自动抢红包功能。当有红包出现时,XPosed框架会自动触发...

    免rootxposed框架

    virtualxposed,免root的xposed框架,更加方便更加便利,详情访问github

    XposeMe:一个简单的应用程序,可以更改和重置文本视图。 编写为学习 Xposed 框架的示例应用程序

    编写为学习 Xposed 框架的示例应用程序。 XposeMe是一个EXTREMELY基本(按5分钟编写)的应用程序,包含三个GUI元素:“更改文本”按钮,“重置文本”按钮和“更改文本”文本视图。 单击“更改它!” 按钮(通常)将...

    Xposed-派大星-支持国内下载

    Xposed-派大星-支持国内下载

    雷电、逍遥模拟器,Android7.1.2 系统 x86 安装 Xposed 需要资源

    . 亲测可用,支持雷电和逍遥模拟器 7.1.2 系统2. 支持 x86 版本模拟器3. Xposed 安装教程:...

    Xposed.zip

    总的来说,这个“Xposed.zip”压缩包提供了一个基本的Android 10环境下Xposed监听模型,对于学习Xposed框架和开发自定义模块的开发者来说,是一个不错的起点。通过深入研究和实践,你可以更深入地了解Android系统,...

    1.3.8.1版(18-04-02)360加固保Hook

    而使用Xposed框架对360加固保进行Hook,可以让开发者在不破坏加固的基础上,实现特定的扩展功能,如获取应用内部数据、监控应用行为等。这需要开发者具备一定的Android底层知识,了解Java反射和JNI技术。 4. Hook...

    xpose-frontend

    Xpose客户端 欢迎使用xpose社交照片新闻应用程序。 储存库 服务器回购: : 客户端回购: : 实时链接: : 概括 作为摄影和摄影爱好者,xpose可以用同样的心态来满足用户的需求。 xpose是新闻摄影的平台,可将...

    xposed...xpgod.apk

    用于系统框架。搞好了可以改颜色什么的。。。还可以吧我还在用

    Xpose-开源

    《Xpose-开源:探索非线性药代动力学与药效学模型的利器》 在医药研发领域,理解和分析药物在体内的吸收、分布、代谢和排泄(ADME)过程至关重要。为了进行这样的研究,科学家们通常采用NONMEM(Nonlinear Mixed-...

    一个基于xposed和inline hook的一代壳脱壳工具

    原理 原理就是去hook libart.so里面的art::DexFile::OpenMemory,然后再把内存中的dex写到文件中去。就是这么简单,最主要的就是hook的时机,大部分的壳都是在attachBaseContext这个方法里面去完成代码的解密。...

Global site tag (gtag.js) - Google Analytics