Android逆向之繞過(guò)雙進(jìn)程保護(hù)

修改$AOSP/bionic/libc/bionic/fork.c,讓程序fork失敗即可,修改的代碼如下:

#include <unistd.h>
#include <stdlib.h>
#include <fcntl.h>
#include "pthread_internal.h"
#include "bionic_pthread.h"
#include "cpuacct.h"

extern int  __fork(void);

#define BUF_LEN 512

int block()
{
    char buf[BUF_LEN] = {0};
    char cmd[128] = {0};
    sprintf(cmd , "/proc/%d/cmdline" , getpid());
    int fd = open(cmd , O_RDONLY);
    read(fd , buf , BUF_LEN);
    close(fd);
    char targetPath[BUF_LEN] = {0};
    sprintf(targetPath , "/data/data/%s" , buf);
    if (access(targetPath , F_OK) == 0)
    {
         return 1;
    }
    return 0;
}

int  fork(void)
{
    int  ret;
    if (block())
    {
        return -1;
    }
//......
}

雖然這種小技巧很容易在以后的加固版本會(huì)被針對(duì),但是至少目前是有效的

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容