老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業(yè)提供網(wǎng)站建設、域名注冊、服務器等服務

APK防護中Anti_VirtualApp的思路和實現(xiàn)是怎樣的

APK防護中Anti_Virtual App的思路和實現(xiàn)是怎樣的,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設,安陸企業(yè)網(wǎng)站建設,安陸品牌網(wǎng)站建設,網(wǎng)站定制,安陸網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,安陸網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

0x00 前言

Virtual App是一個很強大的存在,破壞了Android 系統(tǒng)本身的隔離措施,可以進行免root hook和其他黑科技操作,你可以用這個做很多在原來APP里做不到事情,于此同時Virtual App的安全威脅也不言而喻。可以去看看這篇文章。VirtualApp技術(shù)黑產(chǎn)利用研究報告。
當然還有其他東西,可以去各大論壇進行深度挖掘。
我們這次的重點是放在Anti_Virtual App上。

1.內(nèi)容

1.1 第一種思路和實現(xiàn)
1.2  第二種思路和實現(xiàn)

我也不知道用什么來命名,感覺要是把思路直接寫在標題里之后不好展開。不啰嗦了正文開始。

0x01 第一種思路和實現(xiàn)

1.思路

1.1 思路是從哪來的?

我們要防止App在VirtualAPP上運行就要通過Virtual啟動App時的一些特征來逆向分析,VirtualAPP是開源的我們也可以結(jié)合源碼來進行分析。

1.2 思路挖掘

Android應用隔離是基于Linux系統(tǒng)的多用戶機制實現(xiàn)的,即每個應用在安裝時被分配了不同的Linux用戶uid/gid。而在VirtualApp中,client應用(通過VirtualApp安裝的應用)與host應用(即VirtualApp本身)是具有相同用戶uid的。

這個是在Virtual資料里的介紹,這里有一個值得關(guān)注的地方就是,client應用和host應用具有相同的uid。

我們來進行一個測試。

這個是我們運行在正常環(huán)境下的。


APK防護中Anti_Virtual App的思路和實現(xiàn)是怎樣的

用grep過濾一下。APK防護中Anti_Virtual App的思路和實現(xiàn)是怎樣的然后我們運行在虛擬機下用grep過濾一下。APK防護中Anti_Virtual App的思路和實現(xiàn)是怎樣的

有一個前提就是,Android 系統(tǒng)中的UID是在app安裝的時候進行分配的,之后是不會進行更改的。而且為了可以進行沙箱和隔離,每一個APP分配到的UID是不同的,而且不同的UID僅僅擁有一個進程。這是Linux的多用戶系統(tǒng)被閹割下成為了現(xiàn)在的狀態(tài),當然也提高了APP的安全性。相同的UID具有共享的特性。

就這個不同的點,我們進行測試的實現(xiàn)。

2. 實現(xiàn)

實現(xiàn)的方法直接使用NDK來進行開發(fā),或者使用java也可以。
實現(xiàn)思路就是我在app里調(diào)用ps |grep,拿到返回行數(shù),簡單粗暴易懂,可能會有bug,針對一般情況。輕踩。

我們需要做的第一步就是,獲取到APP的UID對應的UNAME。
我這里使用的是封裝方法。

    struct passwd *pwd;
    pwd = getpwuid(getuid());
    char *find=pwd->pw_name;

這樣可以直接拿到UNAME

然后我們使用字符串拼接,將命令結(jié)合,我是不是太啰嗦了。。。

    char cmd[20]="ps | grep ";
    LOGD("%s",cmd);
    strcat(cmd,find);
    LOGD("%s",cmd);

使用popen進行命令的運行

int getEnd(char * cmd){
    FILE *pp = popen(cmd, "r"); //建立管道    if (!pp) {
        LOGD("error");
    }
    int i=0;
    char tmp[1024]; //設置一個合適的長度,以存儲每一行輸出    while (fgets(tmp, sizeof(tmp), pp) != NULL) {
        if (tmp[strlen(tmp) - 1] == '\n') {
            tmp[strlen(tmp) - 1] = '\0'; //去除換行符            i++;
        }
        LOGD("%s",tmp);
    }
    LOGD("i:%d",i);
    return i;
}

最后進行調(diào)用判斷。整合一下最后的結(jié)果。

    struct passwd *pwd;
    pwd = getpwuid(getuid());
    char *find=pwd->pw_name;
    LOGD("%s",find);
    char cmd[20]="ps | grep ";
    LOGD("%s",cmd);
    strcat(cmd,find);
    LOGD("%s",cmd);
    int i =getEnd(cmd);
    if (i>4)
    {
        LOGD("This is VA!");
        kill(0, SIGKILL);
    }

3.測試

3.1 正常環(huán)境


APK防護中Anti_Virtual App的思路和實現(xiàn)是怎樣的

3.2 VirtualApp環(huán)境測試


APK防護中Anti_Virtual App的思路和實現(xiàn)是怎樣的

0x02 第二種思路和實現(xiàn)

1.思路

Virtual App有一個特點,就是在運行app的時候,如果存在so文件的話,會將so文件拷貝到自己的目錄下,那么是不是可以對so文件路勁進行讀取,然后進行判斷,就可以區(qū)分開Virtual App和正常運行環(huán)境呢。
這個實現(xiàn)要對/proc/PID/maps這個文件進行分析。實現(xiàn)起來可能有點復雜。去git上看看有沒有開源項目。
最后鎖定了一個目標。https://github.com/ysrc/AntiVirtualApp

2.實現(xiàn)

2.1 實現(xiàn)思路總結(jié)

(1)拿到PID
(2)拿到/proc/PID/maps
(3) 拿到包名
(4)拿到SO路徑
(5)分析比對

2.2 拿到PID

拿到當前進程的PID的方法很多。這里有一個很簡單的方法就是

int pid=getpid();

當然還有另外一種就是通過對java層進行反射拿到pid,兩種都是實現(xiàn)了的。
反射三步走,輕松拿到,這里對返回值的掌控還沒有到輕車熟路的程度,但是這樣子的反射還是可以拿到的。

    //反射拿到pid    jclass Process=env->FindClass("android/os/Process");
    jmethodID myPid=env->GetStaticMethodID(Process,"myPid","()I");
    LOGD("%d",(int)env->CallStaticIntMethod(Process,myPid));
    return (int)env->CallStaticIntMethod(Process,myPid);

2.3 拿到/proc/PID/maps

這里通過文件拼接讀取就可以拿到文件指針了。

char data[256];
    char s[64] = {0};
    int pid=getpid();
    sprintf(s, "/proc/%d/maps", pid);
    FILE *fd = fopen(s, "r");
    if (fd==NULL)
    {
        LOGD("The file is field");
    } else    {
        LOGD("ok");
    }

2.4 拿到包名。

包名可以通過/proc/PID/cmdline這個文件來拿到

我們還是進行相同的操作。然后對文件進行處理,最后拿到了我們的包名。

char *buffer = (char *) malloc(1024);
    memset(buffer, 0, 1024);
    char path_t[256] = {0};
    int pid = getpid();
    sprintf(path_t, "/proc/%d/cmdline", pid);
    int fd = open(path_t, O_RDONLY);
    if (fd > 0) {
        int read_count = (int) read(fd, buffer, 1024);
        close(fd);
        if (read_count > 0) {
            return buffer;
        }
    }
    free(buffer);
    return NULL;

進行一個測試:

2.5拿到SO路徑

對我們拿到的maps進行處理。

char path[128] = {0};
    char uid[10] = {0};
    char * filter="libnative-lib.so";
    while (fgets(data, 256, fd)) {
        int len = (int) strlen(data);
        if (len <= 0) {
            continue;
        }
        data[--len] = '\0';
        if (sscanf(data, "%*llx-%*llx %s %*s %*s %*s %s", uid, path) != 2) {
            continue;
        }
            LOGD("%s",data);
        if (strcmp(uid, "r-xp") == 0 && endsWith(path, filter)) {

            LOGD("getSoPath2:%s",path);
            break;      
      }
    }

進行測試
現(xiàn)在so也拿到了。

2.6 分析比對

比對的原理是so加載的地方大多只有三個,通過這三個加上包名進行比對,然后就可以發(fā)現(xiàn)VirtualApp下運行的App的so包地址已經(jīng)更改為VirtualApp的地址,原因很有可能就是因為隔離的特性不能越界訪問。

size_t len = strlen(p);
    int i=0;
    if (strstr(path,p) != NULL) {
        if (startsWith(path, SO_APP_LIB)) {
            if (strncmp(path + SO_APP_LIB_LEN, p, len)) {
                i++;
            }
        } else if (startsWith(path, SO_DATA_APP)) {
            if (strncmp(path + SO_DATA_APP_LEN, p, len)) {
                i++;
            }
        } else if (startsWith(path, SO_DATA_DATA)) {
            if (strncmp(path + SO_DATA_DATA_LEN, p, len)) {
                i++;
            }
        }
    }

2.7 最后進行一個結(jié)果測試

在正常的環(huán)境下運行


APK防護中Anti_Virtual App的思路和實現(xiàn)是怎樣的

在VirtualApp下運行


APK防護中Anti_Virtual App的思路和實現(xiàn)是怎樣的

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。


文章名稱:APK防護中Anti_VirtualApp的思路和實現(xiàn)是怎樣的
網(wǎng)站鏈接:http://www.xueling.net.cn/article/gdcejj.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 变态孕交videosgratis孕妇 | 亚洲精品无码久久久久久久 | 色综合久久88色综合天天6 | 中文字幕在线播放一区 | 国产不卡在线观看视频 | 欧美精品黄色片 | 久久99久久精品 | 亚洲日韩一区精品射精 | 超碰这里只有精品 | 小受叫床高潮娇喘嗯啊mp3 | 不卡视频一区 | 97日日碰曰曰摸日日澡 | 国产在线观看精品 | 看全色黄大色大片免费无码 | 国产精品久久影院 | 出差被夫の上司持久侵犯在线观看 | 欧美在线观看网站 | 亚洲图片欧美小说 | 在线观看爽视频 | 成人免费看黄网站yyy456 | 黄在线看| 大陆三级午夜理伦三级三 | 久久精品综合视频 | 中文字幕有码无码人妻在线 | 国产精品片 | 今天高清视频免费播放一级爱片 | 日韩午夜福利无码专区A | 久久爱.com | 熟妇人妻va精品中文字幕 | 黄色录像a | 五月婷六月婷婷俺也去 | 欧美性另类69xxxx最新章节 | 三级网在线 | 国产乱精品女同自线免费 | 日本v片 | 久久成人免费精品网站 | 中文字幕一区二区三区精彩视频 | 国产乱码精品一区二区三区不卡 | 欧美成人A片一区二区不卡 www.丁香.com | 综合久久久久久久青青 | 中文字幕丰满人伦在线 |