吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 26558|回复: 56
收起左侧

[Android工具] 应用隐藏,基于xposed

  [复制链接]
pan2112 发表于 2019-5-25 12:41
1.jpg 第一个页面选中要对其隐藏的应用,然后按+里面的确定
2.jpg
第二个页面选中需要隐藏的应用,然后按+里面的确定
3.jpg
运行效果,全屏蔽了,读取不到

xposed hook的源码
public class HookToast implements IXposedHookLoadPackage, IXposedHookZygoteInit {
    private static String str_json;
    private static Maphelper maphelper;

    @Override
    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {
        if (loadPackageParam.packageName.equals("android") || loadPackageParam.packageName.equals("de.robv.android.xposed.installer")) {
            return;
        }


        if (loadPackageParam.packageName.contains(BuildConfig.APPLICATION_ID)) {
            findAndHookMethod("com.ppqqjy.apkhide.other", loadPackageParam.classLoader, "isXposedWork", new XC_MethodReplacement() {
                @Override
                protected Object replaceHookedMethod(MethodHookParam methodHookParam) throws Throwable {
                    return true;
                }
            });
            return;
        }

        if (maphelper == null) {
            maphelper = new Maphelper(1);
        }
        String Str = "";
        if (maphelper != null) {
            Str = maphelper.getstring("app");
        }
        if (Str.length() < 1) {
            return;
        }
        final Map maps = JSONObject.parseObject(Str);
        if (!maps.containsKey(loadPackageParam.packageName)) {
            return;
        }
        if (maps.get(loadPackageParam.packageName).toString().contains("true")) {

           // Log.d("调试输出:1111111111", loadPackageParam.packageName);



            str_json = maphelper.getstring("hide");
            if (str_json.length() < 1) {
                return;
            }

            findAndHookMethod("android.app.ApplicationPackageManager", loadPackageParam.classLoader, "getInstalledApplications", int.class, new XC_MethodHook() {
                @Override
                protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                    List<ApplicationInfo> applicationList = (List) param.getResult();
                    List<ApplicationInfo> resultapplicationList = new ArrayList<>();
                    for (ApplicationInfo applicationInfo : applicationList) {
                        String packageName = applicationInfo.packageName;
                        if (isTarget_hide(packageName)) {
                        } else {
                            resultapplicationList.add(applicationInfo);
                        }
                    }
                    param.setResult(resultapplicationList);
                }
            });
            findAndHookMethod("android.app.ApplicationPackageManager", loadPackageParam.classLoader, "getInstalledPackages", int.class, new XC_MethodHook() {
                @Override
                protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                    List<PackageInfo> packageInfoList = (List) param.getResult();
                    List<PackageInfo> resultpackageInfoList = new ArrayList<>();

                    for (PackageInfo packageInfo : packageInfoList) {
                        String packageName = packageInfo.packageName;
                        if (isTarget_hide(packageName)) {
                        } else {
                            resultpackageInfoList.add(packageInfo);
                        }
                    }
                    param.setResult(resultpackageInfoList);
                }
            });
            findAndHookMethod("android.app.ApplicationPackageManager", loadPackageParam.classLoader, "getPackageInfo", String.class, int.class, new XC_MethodHook() {
                @Override
                protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                    List<PackageInfo> packageInfoList = (List) param.getResult();
                    List<PackageInfo> resultpackageInfoList = new ArrayList<>();

                    for (PackageInfo packageInfo : packageInfoList) {
                        String packageName = packageInfo.packageName;
                        if (isTarget_hide(packageName)) {
                        } else {
                            resultpackageInfoList.add(packageInfo);
                        }
                    }
                    param.setResult(resultpackageInfoList);
                }
            });
            findAndHookMethod("android.app.ApplicationPackageManager", loadPackageParam.classLoader, "getApplicationInfo", String.class, int.class, new XC_MethodHook() {
                @Override
                protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                    String packageName = (String) param.args[0];
                    String packageName_ = "";
                    if (isTarget_hide(packageName)) {
                    }
                    param.setResult(packageName_);
                }
            });
            findAndHookMethod("android.app.ActivityManager", loadPackageParam.classLoader, "getRunningServices", int.class, new XC_MethodHook() {
                @Override
                protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                    List<ActivityManager.RunningServiceInfo> serviceInfoList = (List) param.getResult();
                    List<ActivityManager.RunningServiceInfo> resultList = new ArrayList<>();
                    for (ActivityManager.RunningServiceInfo runningServiceInfo : serviceInfoList) {
                        String serviceName = runningServiceInfo.process;
                        if (isTarget_hide(serviceName)) {
                        } else {
                            resultList.add(runningServiceInfo);
                        }
                    }
                    param.setResult(resultList);
                }
            });
            findAndHookMethod("android.app.ActivityManager", loadPackageParam.classLoader, "getRunningTasks", int.class, new XC_MethodHook() {
                @Override
                protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                    List<ActivityManager.RunningTaskInfo> serviceInfoList = (List) param.getResult();
                    List<ActivityManager.RunningTaskInfo> resultList = new ArrayList<>();
                    for (ActivityManager.RunningTaskInfo runningTaskInfo : serviceInfoList) {
                        String taskName = runningTaskInfo.baseActivity.flattenToString();
                        if (isTarget_hide(taskName)) {
                        } else {
                            resultList.add(runningTaskInfo);
                        }
                    }
                    param.setResult(resultList);
                }
            });
            findAndHookMethod("android.app.ActivityManager", loadPackageParam.classLoader, "getRunningAppProcesses", new XC_MethodHook() {
                @Override
                protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                    List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfos = (List) param.getResult();
                    List<ActivityManager.RunningAppProcessInfo> resultList = new ArrayList<>();
                    for (ActivityManager.RunningAppProcessInfo runningAppProcessInfo : runningAppProcessInfos) {
                        String processName = runningAppProcessInfo.processName;
                        if (isTarget_hide(processName)) {
                        } else {
                            resultList.add(runningAppProcessInfo);
                        }
                    }
                    param.setResult(resultList);
                }
            });


        }
    }


    final private boolean isTarget_hide(String name) {
        String Str;
        final Map maps = JSONObject.parseObject(str_json);
        if (!maps.containsKey(name)) {
            if (name.contains(":")) {
                Str = getSubString("SubString" + name, "SubString", ":");
            } else if (name.contains("/")) {
                Str = getSubString("SubString" + name, "SubString", "/");
            } else {
                Str = name;
            }
            if (!maps.containsKey(Str)) {
                return false;
            }
            return maps.get(Str).toString().contains("true");
        }
        return maps.get(name).toString().contains("true");
    }


    public String getSubString(String text, String left, String right) {
        String result = "";

        int zLen;
        if (left == null || left.isEmpty()) {
            zLen = 0;
        } else {
            zLen = text.indexOf(left);
            if (zLen > -1) {
                zLen += left.length();
            } else {
                zLen = 0;
            }
        }
        int yLen = text.indexOf(right, zLen);
        if (yLen < 0 || right == null || right.isEmpty()) {
            yLen = text.length();
        }
        result = text.substring(zLen, yLen);
        return result;
    }

    @Override
    public void initZygote(StartupParam startupParam) throws Throwable {
        return;
    }
}

没有任何广告或者连接服务器行为。
链接:https://pan.baidu.com/s/13-39fI_nPKz5VVh7IFV4uw
提取码:rs5m

免费评分

参与人数 7吾爱币 +12 热心值 +7 收起 理由
灿烂CanLan + 1 + 1 热心回复!
wa774779 + 1 + 1 谢谢@Thanks!
sczxlsyx + 1 + 1 好高深的样子!
heiyutian + 1 + 1 2018.06.14那一天,微信封了无数使用xposed的用户,很多防止检测的工具都无.
nokia555 + 1 + 1 我很赞同!
ablack无名 + 1 + 1 我很赞同!
云在天 + 6 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

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

 楼主| pan2112 发表于 2019-5-29 01:36
d50497778 发表于 2019-5-28 20:19
楼主能否说下 隐藏后软件是否还能有效 运行?

被隐藏的软件肯定正常运行,目标软件难说,如果打不开重新启动手机下试试,还不行就是做了针对性防hook,这种只能一个个软件分析修改的。
 楼主| pan2112 发表于 2019-5-25 13:15
Yorick1218 发表于 2019-5-25 12:55
应用控制器那事搞的大家都很神经紧张啊,哈哈

用xposed模块多是root的,乱搞吓死人了,我现在多不敢下模块用,需要就去github找源码编译,或者自己做。。。
Yorick1218 发表于 2019-5-25 12:55
应用控制器那事搞的大家都很神经紧张啊,哈哈
会飞的花 发表于 2019-5-25 13:25
应用控制有点可惜了!这个是防止xp检测还是普通的隐藏软件
寂如流年的回忆 发表于 2019-5-25 13:31
pan2112 发表于 2019-5-25 13:15
用xposed模块多是root的,乱搞吓死人了,我现在多不敢下模块用,需要就去github找源码编译,或者自己做。 ...

用虚拟xp
oouuvs 发表于 2019-5-25 17:01
谢谢分享
 楼主| pan2112 发表于 2019-5-25 17:31
a2204297 发表于 2019-5-25 16:45
下载了怎么不能安装的?

基于xposed的,你有root跟安装xposed不
 楼主| pan2112 发表于 2019-5-25 17:50

可能是什么软件阻止安装了吧,你看看xposed的log
fafaking 发表于 2019-5-26 10:45
本帖最后由 fafaking 于 2019-5-26 10:48 编辑

这个东西好
lshonin 发表于 2019-5-26 10:51
感谢分享,挺多可以收起来了。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-23 17:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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