文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

android多开器解析与检测实现方法示例

2024-04-02 19:55

关注

多开理论基础

app多开常用于做一些不合法的事情,如高羊毛,黑灰产,甚至会对app的功能做破坏修改。因此多开在实际app应用中是有一定危害性的,因此对多开环境的识别是很重要的,通过识别多开环境有利于让app更加安全。

目前市面上的多开App的原理类似,都是以新进程运行被多开的App,并hook各类系统函数,使被多开的App认为自己是一个正常的App在运行。

从形式上来说多开App有2种形式,一种是从多开App中直接加载被多开的App,如平行空间、VirtualApp等,另一种是让用户新安装一个App,但这个App本质上就是一个壳,用来加载被多开的App,其原理和前一种是一样的,市面上多开分身这款App是用的这种形式,用户每分身一个App需新安装一个包名为dkmodel.xxx.xxx的App。

多开实现原理解析

app多开实现原理很多种类,如采用多用户方式(mumu模拟器的多开器实现)、通过创建不同进程名称(多开分身、双开助手)进行运行。

我们知道在每一个的app都有属于自己的私有目录,一般是“/data/data/包名/”或“/data/user/用户号/包名”,多开方式也是基于这些去做处理的,那么我们就可以通过调用系统getFilesDir()方法可以读取到私有目录下的信息目录。在多开环境下,获取到目录会变为“/data/data/多开包名/xxxxxxxx”或“/data/user/用户号/多开App的包名”。
基于以上的原理分析,就可以通过以下代码实现对多开环境的判断识别了。

代码实现:多开包名


//用于收集可以实现多开的app包名,已收集到最新市面上的大部分多开app
private String[] packagename = {
        "com.bly.dkplat",//多开分身本身的包名
        "com.by.chaos",//chaos引擎
        "com.lbe.parallel",//平行空间
        "com.excelliance.dualaid",//双开助手
        "com.lody.virtual",//VirtualXposed,VirtualApp
        "com.qihoo.magic",//360分身大师
        "com.dual.dualgenius", //DualGenius/双开精灵
        "com.jiubang.commerce.gomultiple" //GO Multiple/Go双开
};

通过读取文件包的方式进行比对
public  boolean checkPrivateFilePath(Context context)
{
    String path = context.getFilesDir().getPath();
    for(String vtpkg: packagename)
    {
        if(path.contains(vtpkg))
        {
            return true;
        }
    }

    return false;
}

通过读取文件包的方式进行比对


public  boolean checkPrivateFilePath(Context context)
{
    String path = context.getFilesDir().getPath();
    for(String vtpkg: packagename)
    {
        if(path.contains(vtpkg))
        {
            return true;
        }
    }

    return false;
}

代码实现:多用户


private  String GetMulData()
{
    //通过读取命令行方式实现。
    String filter = exec("cat /proc/self/cgroup");
    if(null == filter || (filter.length() == 0))
    {
        return null;
    }

    int uidStartIndex = filter.lastIndexOf("uid");
    int uidEndIndex = filter.lastIndexOf("/pid");
    if(0 > uidStartIndex)
    {
        return null;
    }
    if( 0 >= uidEndIndex)
    {
        uidEndIndex = filter.length();
    }

    filter = filter.substring(uidStartIndex + 4, uidEndIndex);
    try {
        String strUid = filter.replaceAll("\n", "");
        if(isNumeriToUid(strUid))
        {
            int  uid = Integer.valueOf(strUid);
            filter = String.format("u0_a%d", uid -10000);
            return filter;
        }


    }catch (Exception e)
    {
        return null;
    }
    return  null;
}

总结

到此这篇关于android多开器解析与检测实现的文章就介绍到这了,更多相关android多开器解析与检测内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯