資源共享吧|易語言論壇|逆向破解教程|輔助開發(fā)教程|網(wǎng)絡(luò)安全教程|rigasin.com|我的開發(fā)技術(shù)隨記

 找回密碼
 注冊成為正式會員
查看: 2046|回復(fù): 4
打印 上一主題 下一主題

[安卓逆向] 哪位大佬幫我看一下代碼,運行后獲得的進程id是錯誤的?(安卓上運行的程序)

[復(fù)制鏈接]

8

主題

225

帖子

0

精華

中級會員

Rank: 3Rank: 3

資源幣
3
積分
232
貢獻
0
在線時間
60 小時
注冊時間
2020-3-20
最后登錄
2023-1-20
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2020-3-24 19:40:15 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
5資源幣
本帖最后由 wangda38 于 2020-3-24 19:46 編輯

///根據(jù)包名查找游戲進程pid
int getPID(const char *pack_name) {
    int id = -1, pid = -1;
    DIR *dir = 0;
    FILE *file = 0;
    char filename[32] = {0};
    char cmdline[256] = {0};
    struct dirent *entry = 0;

    if (pack_name == NULL) {
        return -1;
        }

    dir = opendir("/proc");
    if (dir == NULL) {
        return -1;
        }

    while ((entry = readdir(dir)) != NULL) {
        id = atoi(entry->d_name);
        if (id > 0) {
            sprintf(filename, "/proc/%d/cmdline", id);
            file = fopen(filename, "r");

            if (file) {
                fgets(cmdline, sizeof(cmdline), file);
                fclose(file);

                if (strcmp(pack_name, cmdline) == 0) {
                    pid = id;
                    break;
                    }
                }
            }
        }
    closedir(dir);
    return pid;
}


extern "C"
jint Java_com_example_appc_aaa_searchMem(JNIEnv *env, jobject thiz) {
    char *game = "com.bb.bb"; //包名
int pid = getPID(game);
    return pid;
}







最佳答案

查看完整內(nèi)容

我這邊正常啊,沒毛病啊
回復(fù)

使用道具 舉報

2362

主題

1萬

帖子

304

精華

管理員

Rank: 9Rank: 9Rank: 9

資源幣
5417
積分
17719
貢獻
97
在線時間
7401 小時
注冊時間
2015-4-14
最后登錄
2025-1-3

論壇管理員超級版主終身VIP會員資源共享吧男神終身成就

沙發(fā)
發(fā)表于 2020-3-24 19:40:16 | 只看該作者
wangda38 發(fā)表于 2020-3-25 12:19
你好,代碼運行到
if (strcmp(process_name, cmdline) == 0) {
                                     ...

我這邊正常啊,沒毛病啊
回復(fù)

使用道具 舉報

2362

主題

1萬

帖子

304

精華

管理員

Rank: 9Rank: 9Rank: 9

資源幣
5417
積分
17719
貢獻
97
在線時間
7401 小時
注冊時間
2015-4-14
最后登錄
2025-1-3

論壇管理員超級版主終身VIP會員資源共享吧男神終身成就

板凳
發(fā)表于 2020-3-24 23:02:21 | 只看該作者
int find_pid_of(const char *process_name)
{
        int id;
        pid_t pid = -1;
        DIR* dir;
        FILE *fp;
        char filename[32];
        char cmdline[256];

        struct dirent * entry;

        if (process_name == NULL)
                return -1;

        dir = opendir("/proc");
        if (dir == NULL)
                return -1;

        while ((entry = readdir(dir)) != NULL) {
                id = atoi(entry->d_name);
                if (id != 0) {
                        sprintf(filename, "/proc/%d/cmdline", id);
                        fp = fopen(filename, "r");
                        if (fp) {
                                fgets(cmdline, sizeof(cmdline), fp);
                                fclose(fp);

                                if (strcmp(process_name, cmdline) == 0) {
                                        /* process found */
                                        pid = id;
                                        break;
                                }
                        }
                }
        }

        closedir(dir);
        return pid;
}

extern "C"
jint Java_com_example_appc_aaa_searchMem(JNIEnv *env, jobject thiz) {
    pid_t target_pid;
    target_pid = find_pid_of("com.bb.bb");
    return pid;
}
回復(fù)

使用道具 舉報

8

主題

225

帖子

0

精華

中級會員

Rank: 3Rank: 3

資源幣
3
積分
232
貢獻
0
在線時間
60 小時
注冊時間
2020-3-20
最后登錄
2023-1-20
地板
 樓主| 發(fā)表于 2020-3-25 12:19:23 | 只看該作者
admin 發(fā)表于 2020-3-24 23:02
int find_pid_of(const char *process_name)
{
        int id;

你好,代碼運行到
if (strcmp(process_name, cmdline) == 0) {
                                        /* process found */
                                        pid = id;
                                        break;
                                }
這里的包名匹配不對返回得不到id,
我調(diào)試后看到的cmdline得到的包名是當(dāng)前本程序在進程中的包名,
無法得到其他的包名。
大佬請問這個怎么解決
回復(fù)

使用道具 舉報

8

主題

225

帖子

0

精華

中級會員

Rank: 3Rank: 3

資源幣
3
積分
232
貢獻
0
在線時間
60 小時
注冊時間
2020-3-20
最后登錄
2023-1-20
5#
 樓主| 發(fā)表于 2020-3-26 17:33:59 | 只看該作者
admin 發(fā)表于 2020-3-25 17:53
我這邊正常啊,沒毛病啊

請問你的root權(quán)限用c是怎么實現(xiàn)的?我這好像是權(quán)限不對
回復(fù)

使用道具 舉報

 點擊右側(cè)快捷回復(fù)  

本版積分規(guī)則

小黑屋|資源共享吧 ( 瓊ICP備2023000410號-1 )

GMT+8, 2025-1-5 06:57 , Processed in 0.057715 second(s), 12 queries , MemCached On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回復(fù) 返回頂部 返回列表