会飞的丑小鸭 发表于 2023-6-21 15:15

《教我兄弟学Android逆向14 xpose改机开发02-改机代码基础编写》

本帖最后由 会飞的丑小鸭 于 2024-1-31 17:04 编辑

上一篇 《教我兄弟学Android逆向13 xpose改机开发01-环境设置》我们学习到了在高系统上面安装xpose的方法,并学习到了一些刷机知识,课后通过百度也了解了一下TWRP,Magisk和lineageOs系统。既然xp的基础环境搭建完成了,那么本节课我带你来编写xp改机的代码,但是学习本节课之前你有几个疑问,什么是改机?改机有什么用处?我们为什么要去学习改机?
改机是让自己的机型设备信息发生改变,改机主要是应用于账号的批量注册,手机群控等等。这节课的目的当然不是去教大家去变坏。师夷长技以制夷,你肯定也是有一颗成为白帽子的心的。

要么学!要么不学!学和不学之间没有中间值 不学就放弃,学就要去认真的学!    --致选择

编译环境:
AndroidStudio2016.1.3
测试手机:
小米5s
测试系统:
7.1.2

一.代码编写
01.用As打开《教我兄弟学Android逆向12 编写xposed模块》最后附件里的课堂Demo



02.打开layout.xml进入text将下面的代码复制进去
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            xmlns:tools="http://schemas.android.com/tools"
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:theme="@android:style/Theme.Black.NoTitleBar"
            tools:context=".MainActivity">
    <TextView
            android:text="TextView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" android:id="@+id/tv_imei"/>
    <EditText
            android:id="@+id/appconfig_accounts"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="top"
            android:lines="15"/>

    <Button
            android:id="@+id/newPhoneSet_button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="一键新机"
            android:textSize="18sp" />

</LinearLayout>

03.完成后点Design现在界面大概是这个样子


04.我们本节课要实现的是手动点击一键新机左上角显示出本机系统原本的imei和改机后的imei,这里我们选用SharedPreferences储存,程序刚安装完成第一次打开的时候会获取到本机的设备信息然后储存到/data/data/com.example.xposed_test/shared_prefs/oldPhone.xml中。


05.一键新机要做的是点击一键新机左上角显示出系统原本的imei和改机后的imei, 点一键新机的时候我们这里创建出新的imei的数据储存在newPhone.xml里面,然后hook的代码通过这个xml去取数据用来改机


06.关于hook的代码我们知道直接用SharedPreferences需要当前界面的content,这里我们可以在MainActivity中写一个getMainContext方法去获取到当前界面的content,然后程序启动的时候调用,最后用hook去获取到这个content这样hook代码就可以获取到SharedPreferences的存储数据。




07.打开HookMain.java编写hook代码 这里第一步去hook getMainContext方法获取content 第二步去hook getDeviceId设置成我们一键新机的值




08.最终效果,每次点击一键新机imei都会变成我们随机的值,说明新机成功。






二.总结
本节课用一键新机改系统imei的例子带你熟悉了一下改机的流程,搭建了改机的基础代码,本节课我们选用的是SharedPreferences存储,点一键新机的时候创建设备信息储存到xml中,hook的时候从xml取数据完成hook。其实也是可以把新机数据储存为json保存到手机存储目录中,json格式更方便将改机的设备信息数据上传到服务器。下节课我们将会在本节课的基础上继续hook更多的数据来完善改机。


课后作业
1.完成本节课代码的编写
2.用json存储新机数据完成对imei的hook






下一篇《教我兄弟学Android逆向15 xpose改机开发03-写一款自己的改机软件》









迷心大哥哥 发表于 2023-6-21 15:33

每天学一点,老师夸我好孩子{:301_997:}

会飞的丑小鸭 发表于 2024-1-20 14:21

chinadd 发表于 2023-6-23 11:36
怎么能把安卓内核版本低的问题改了

java层和native层还有其他方式都有检测安卓内核版本的地方 这个要hook so层的一些系统函数 或者改android源码等等

tybo8083006 发表于 2023-6-21 15:39

每天学习打卡

天黑嘿 发表于 2023-6-21 16:24

这属于硬改还是软改

zhiaipojie0313 发表于 2023-6-21 18:41

支持支持,学习了

yuan71058 发表于 2023-6-21 20:07

swl0515 发表于 2023-6-21 20:33

学习了 学习了

乱世骄子 发表于 2023-6-21 21:10

谢谢,学习了

会飞的丑小鸭 发表于 2023-6-21 21:49

天黑嘿 发表于 2023-6-21 16:24
这属于硬改还是软改

这个属于软改,硬改教程后续会陆续更新

moruye 发表于 2023-6-21 22:43

页: [1] 2 3 4
查看完整版本: 《教我兄弟学Android逆向14 xpose改机开发02-改机代码基础编写》