ALEX5402 / NewBlackbox

a softwere to clone apps on android also support running apps without installing
MIT License
83 stars 125 forks source link

Failed to open database '/data/data/com.baidu.searchbox/database/pushinfo.db'. #2

Open ghost opened 1 month ago

ghost commented 1 month ago

应用名:百度 测试手机:华为p20 Android 10

(1) Failed to open database '/data/data/com.baidu.searchbox/database/pushinfo.db'. android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (Sqlite code 14 SQLITE_CANTOPEN): Could not open database, (OS error - 13:Permission denied)

(2) E Failed inserting a file into the cache com.facebook.common.file.FileUtils$CreateDirectoryException: /storage/emulated/0/Android/data/com.baidu.searchbox/cache/image_cache

ALEX5402 commented 1 month ago

应用名:百度 测试手机:华为p20 Android 10

(1) Failed to open database '/data/data/com.baidu.searchbox/database/pushinfo.db'. android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (Sqlite code 14 SQLITE_CANTOPEN): Could not open database, (OS error - 13:Permission denied)

(2) E Failed inserting a file into the cache com.facebook.common.file.FileUtils$CreateDirectoryException: /storage/emulated/0/Android/data/com.baidu.searchbox/cache/image_cache

did you check the permisson ?

ghost commented 1 month ago

Test code

Vfs.h

#ifndef VFS_H
#define VFS_H
#include "Log.h"

#define SHADOWHOOK_LIBC_PATH "/apex/com.android.runtime/lib64/bionic/libc.so"

#define SHADOW_HOOK_DEF(ret, func, ...) \
  void * func##_orig = NULL; \
  void * func##_stub = NULL;            \
  ret func##_proxy(__VA_ARGS__)

#define SHADOW_HOOK_SYMBOL(func) \
    func##_stub = shadowhook_hook_sym_name(SHADOWHOOK_LIBC_PATH, #func, (void *)func##_proxy, &func##_orig); \
    if(func##_stub == NULL) {    \
        ALOGD("VfsHook Failed -------------- %s", #func);   \
    }else{   \
        ALOGD("VfsHook Success-------------- %s %p", #func, func##_orig);   \
    }

namespace Vfs {
    void init();
}

#endif //VFS_H

Vfs.cpp

#include "Vfs.h"
#include "IO.h"
#include "shadowhook.h"

SHADOW_HOOK_DEF(int, open, const char *pathname, int flags, int mode) {
    SHADOWHOOK_STACK_SCOPE();
    const char * redirectPath = IO::redirectPath(pathname);
    ALOGD("Vfs open -------------- %s ---- %s", pathname , redirectPath);
    return SHADOWHOOK_CALL_PREV(open_proxy, redirectPath, flags, mode);
}

void Vfs::init(){

    if(shadowhook_init(SHADOWHOOK_MODE_SHARED, false) == 0 ){

        SHADOW_HOOK_SYMBOL(open);
    }
}

Log NativeCore: Vfs open -------------- /data/data/com.baidu.searchbox/database/pushinfo.db ---- /data/user/0/com.vspace/blackbox/data/user/0/com.baidu.searchbox/database/pushinfo.db

ghost commented 1 month ago

NewBlackbox 没有hook native c/c++ io 函数,native c/c++ open(),lstat()等没有对路径进行重定向 是这个问题吗?

NewBlackbox does not hook native c/c++ IO function, native c/c++ open(), lstat() etc. do not redirect paths. JniHook::HookJniFun(env, "libcore/io/Linux", "open",......) etc. is ineffective for native code. Is that the problem?