吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6444|回复: 12
收起左侧

[Android 原创] android逆向分析之Xposed初探

  [复制链接]
有梦想的小草 发表于 2019-1-8 23:45
本帖最后由 有梦想的小草 于 2019-1-9 00:25 编辑

经过今天一天的学习,结合网络上许多牛人的分享,初次了解到Xposed的构建方法,特此记录与分享。
进行一个Xposed模块编写,必须的,也是首要的是要搭建一个Xposed开发环境(我们暂且称之为开发环境吧),简单来说就是迁移Xposed框架API到我们的项目并把我们的入口暴露给Xposed框架。

目录视图:

TIM图片20190108234258.png

环境搭建分为以下几步:
1.下载 api-82-sources.jar  api-82.jar   两个XposedAPI jar包

          地址:https://dl.bintray.com/rovo89/de.robv.android.xposed/de/robv/android/xposed/api/82/api-82-sources.jar
                    https://dl.bintray.com/rovo89/de.robv.android.xposed/de/robv/android/xposed/api/82/api-82.jar

         将这两个文件放入 ./app/libs 目录下,以后调用API需要从这两个文件中调用,如上图目录所示。

2.在 ./app 文件上右键新建 assets类型文件夹 并在其中添加xposed_init 文件  ,  这个文件里的内容是指向我们hook类 的位置,xposed框架从这个文件读取入口地址,如下。

[Java] 纯文本查看 复制代码
com.example.administrator.myxposed.XModule


3.新建 类 XModule 为我们的hook类,并在这个类里重写和实现我们的hook函数代码,如下。

[Java] 纯文本查看 复制代码
public class XModule implements IXposedHookLoadPackage {

    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {

        if (loadPackageParam.packageName.equals("com.example.administrator.myapplication")) {

            Class clazz = loadPackageParam.classLoader.loadClass("com.example.administrator.myapplication.MainActivity");

            XposedHelpers.findAndHookMethod(clazz, "toastMessage", new XC_MethodHook() {
                protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                    super.beforeHookedMethod(param);
                }

                protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                    param.setResult("你已被劫持");
                }
            });
        }
    }
}



4.在Manifest.xml 的application标签中添加标识,让Xposed识别和在列表中显示,如下代码可供参考。

[Java] 纯文本查看 复制代码
<meta-data
                android:name="xposedmodule"
                android:value="true" />
            <meta-data
                android:name="xposeddescription"
                android:value="模块描述" />
            <meta-data
                android:name="xposedminversion"
                android:value="54" />


5.修改build.gradle文件,dependencies中做如下修改:

[Java] 纯文本查看 复制代码
dependencies {
    provided 'de.robv.android.xposed:api:82'
    provided 'de.robv.android.xposed:api:82:sources'
    provided fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:26.+'
    testCompile 'junit:junit:4.12'
}


至此,Xposed代码就已书写完毕。

以下贴出 hook demo的 MainActivity 代码以供参考:

[Java] 纯文本查看 复制代码
public class MainActivity extends AppCompatActivity {
    private Button button;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button = (Button) findViewById(R.id.button);

        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, toastMessage(), Toast.LENGTH_SHORT).show();
            }
        });
    }

    public String toastMessage() {
        return "我未被劫持";
    }

}



效果截图:

1.未劫持app运行:

TIM图片20190108235446.png

2.Xposed hook后运行:

TIM图片20190108235253.png

3.Xposed模块列表

TIM图片20190108235614.png


【注意】按照图示设置 file->settings,否则hook不成功:

TIM图片20190109002303.png



免费评分

参与人数 6吾爱币 +14 热心值 +6 收起 理由
stefankuok + 1 + 1 我很赞同!
qtfreet00 + 9 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
测可2335 + 1 + 1 热心回复!
独行风云 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
kentish + 1 + 1 谢谢@Thanks!
飞天蜗牛 + 1 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

飞天蜗牛 发表于 2019-1-9 00:03
感谢楼主分享学习经验,学习下
loveactlink 发表于 2019-1-9 00:36
model6126maodou 发表于 2019-1-9 08:45
kentish 发表于 2019-1-9 09:10
谢谢分享 学习一下  
haoii123 发表于 2019-1-9 09:51
谢谢分享 学习一下  
gunxsword 发表于 2019-1-9 11:17
感谢分享,回头试试!
wubo777 发表于 2019-1-9 12:18

感谢楼主分享学习经验,赞一个。
wuai920981023 发表于 2019-1-9 12:52
感谢楼主分享学习经验,
蚂蚁牙黑 发表于 2019-1-9 14:48
不错,很清楚
xposed一直未上手,这次可以学习一波了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 21:52

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表