VN007+ 有超级管理员账号,登录后可以得到全部权限,超级管理员权限开启 ADB 后获取,但重置或者升级后失效,最好的办法是得到出厂超密,经过一翻逆向分析,发现算法是在 /usr/lib/libcfgapi.so 中的 tz_create_web_superkey 中实现的,我们可以借用这个函数得到出厂的超级管理员密码,以彼之矛,攻彼之盾。
#include <stdio.h>
#include <dlfcn.h>
#define SO_PATH "/usr/lib/libcfgapi.so"
int main(int argc, char *argv[]) {
void *handler = dlopen(SO_PATH, RTLD_NOW);
int (*func)(char *imei, char *buf);
char *error;
int rt;
char buf[256];
if (argc < 2) {
fprintf(stderr, "%s IMEI\n", argv[0]);
return 1;
}
handler = dlopen(SO_PATH, RTLD_NOW);
if (!handler) {
fprintf(stderr, "%s\n", dlerror());
return 1;
}
dlerror();
func = (int (*)(char *, char *))dlsym(handler, "tz_create_web_superkey");
error = dlerror();
if (error != NULL) {
fprintf(stderr, "%s\n", error);
return 1;
}
rt = (*func)(argv[1], buf);
if (rt == 0) {
printf("Your superkey is: %s\n", buf);
}
else {
printf("Error: code = %d\n", rt);
}
dlclose(handler);
return 0;
}
上面的代码保存为 superkey.c 后编译并执行:
user@openstick:~$ gcc superkey.c -o superkey -I /usr/lib/aarch64-linux-gnu/lib -ldl
user@openstick:~$ ./superkey 000000000000000
Your superkey is: ueoeHa=?zh
编译后的 superkey 也可以直接拷贝到 VN007+ 上执行。
栏目:
文章评论