|
|
本帖最后由 初晴~ 于 2022-8-7 22:31 编辑
昨天写了个模块,很多人问我怎么开发xp模块,今天我就来讲讲怎么Hook加固之后的应用。
如果软件未加固,Hook类里的代码不适用!
如果软件未加固,Hook类里的代码不适用!
如果软件未加固,Hook类里的代码不适用!
未加固应用的xposed hook论坛已经有了,我就不写了。
依旧是我们的受害者小组件盒子 8月4日数字加固
我也只试过数字加固,其他加固等遇到再说吧
打开AIDE 当然建议还是用as
首先导入Xposedapi 更多/设置/构建&运行android.jar文件 把我们android.jar的绝对路径给复制进去
然后新建一个Android app项目,应用名包名自己改,我就不演示了。
新建好项目之后需要在AndroidManifset.xml里声明xposed模块
打开Amxl src/main里面
在application里面添加三个meta-data标签
模块描述的value可以更改,其他不能更改。
代码如下:
- <meta-data
- android:name="xposedmodule"
- android:value="true" />
- <meta-data
- android:name="xposeddescription"
- android:value="改为自己想描述的" />
- <meta-data
- android:name="xposedminversion"
- android:value="54" />
复制代码
改完之后我们创建Hook类,类名随意。
在scr/main/java里面新建类
创建好Hook类之后我们要声明类入口。
在main目录下创建assets目录,在assets目录下创建xposed_init文件,不要后缀名。
之后在里面输入包名+Hook类名 (例如我的Hook类名是Hook,那么就输入com.mycompany.application.Hook注意大小写)只有一行代码。
这一步做完我们就可以开始编写Hook代码了
Ok,打开我们之前创建的Hook类
实现IXposedHookLoadPackage接口,并且重写handleLoadPackage方法。
代码如下:
- import de.robv.android.xposed.IXposedHookLoadPackage;
- import android.content.Context;
- import de.robv.android.xposed.callbacks.XC_LoadPackage;
- import de.robv.android.xposed.XposedBridge;
- import de.robv.android.xposed.XposedHelpers;
- import de.robv.android.xposed.XC_MethodHook;
- public class 输入你自己的类名 implements IXposedHookLoadPackage {
- public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
-
- }
- }
复制代码
我们知道软件加固之后classloader就被替换成加固本身的了,所以我们想要Hook加固后的应用,首先就是要获取Context对象,通过这个对象呢来获取classloader,获取到classloader之后呢就把原来的classloader替换成加固后的classloader就可以绕过加固实现Hook了。(看不懂没事,代码等下放下面)
代码如下:
- if (lpparam.processName.equals("io.iftech.android.box")) //***** 判断应用名
-
- {
-
- XposedBridge.log("加载 App:" + lpparam.packageName);
-
- XposedHelpers.findAndHookMethod("com.stub.StubApp",
- lpparam.classLoader, "a", Context.class, new XC_MethodHook() {//或者a
-
- @Override
-
- protected void afterHookedMethod(MethodHookParam param) throws Throwable {
-
- super.afterHookedMethod(param);//获取到数字加固的Context对象,通过这个对象来获取classloader
-
- Context context = (Context) param.args[0];//获取数字加固的classloader,之后hook加固后的代码就使用这个classloader
-
- ClassLoader classLoader = context.getClassLoader();//替换classloader,hook加固后的真正代码
-
- }
- });
-
-
-
-
-
- }
复制代码
Ok,做完这些已经可以开始编写Hook代码了。
至于类名和方法名这些就不用讲了吧,论坛搜一搜就行了
代码如下:
- XposedHelpers.findAndHookMethod("io.iftech.android.box.data.User", classLoader, "isVip", new XC_MethodHook() {//类名和方法名
- @Override
- protected void afterHookedMethod(MethodHookParam param) throws Throwable{
- param.setResult(true);
-
- }
-
- });
复制代码
- XposedHelpers.findAndHookMethod("io.iftech.android.box.data.User", classLoader, "isLifeVip", new XC_MethodHook() {//类名和方法名
- @Override
- protected void afterHookedMethod(MethodHookParam param) throws Throwable{
- param.setResult(true);
-
- }
-
- });
复制代码
Ok, 我们打包试一下。
激活模块之前:
激活模块之后:
完整版代码下载:
带Xposedapi的android.jar
https://cshlolss.lanzouv.com/ijsfe094q4gf
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
-
查看全部评分
总评分:好评 +21
金币 +34
|