欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

android多開器解析與檢測實現(xiàn)方法示例

 更新時間:2021年08月26日 09:51:26   作者:小道安全  
最近有業(yè)務(wù)上的要求,要求app在本地進行諸如軟件多開、hook框架、模擬器等安全檢測,防止作弊行為,下面這篇文章主要給大家介紹了關(guān)于android多開器解析與檢測實現(xiàn)的相關(guān)資料,需要的朋友可以參考下

多開理論基礎(chǔ)

app多開常用于做一些不合法的事情,如高羊毛,黑灰產(chǎn),甚至?xí)pp的功能做破壞修改。因此多開在實際app應(yīng)用中是有一定危害性的,因此對多開環(huán)境的識別是很重要的,通過識別多開環(huán)境有利于讓app更加安全。

目前市面上的多開App的原理類似,都是以新進程運行被多開的App,并hook各類系統(tǒng)函數(shù),使被多開的App認為自己是一個正常的App在運行。

從形式上來說多開App有2種形式,一種是從多開App中直接加載被多開的App,如平行空間、VirtualApp等,另一種是讓用戶新安裝一個App,但這個App本質(zhì)上就是一個殼,用來加載被多開的App,其原理和前一種是一樣的,市面上多開分身這款A(yù)pp是用的這種形式,用戶每分身一個App需新安裝一個包名為dkmodel.xxx.xxx的App。

多開實現(xiàn)原理解析

app多開實現(xiàn)原理很多種類,如采用多用戶方式(mumu模擬器的多開器實現(xiàn))、通過創(chuàng)建不同進程名稱(多開分身、雙開助手)進行運行。

我們知道在每一個的app都有屬于自己的私有目錄,一般是“/data/data/包名/”或“/data/user/用戶號/包名”,多開方式也是基于這些去做處理的,那么我們就可以通過調(diào)用系統(tǒng)getFilesDir()方法可以讀取到私有目錄下的信息目錄。在多開環(huán)境下,獲取到目錄會變?yōu)椤?data/data/多開包名/xxxxxxxx”或“/data/user/用戶號/多開App的包名”。
基于以上的原理分析,就可以通過以下代碼實現(xiàn)對多開環(huán)境的判斷識別了。

代碼實現(xiàn):多開包名

//用于收集可以實現(xiàn)多開的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;
}

代碼實現(xiàn):多用戶

private  String GetMulData()
{
    //通過讀取命令行方式實現(xiàn)。
    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;
}

總結(jié)

到此這篇關(guān)于android多開器解析與檢測實現(xiàn)的文章就介紹到這了,更多相關(guān)android多開器解析與檢測內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論