#include #include #include #include #include #include #include #include #include void fpwrite(const char *f, const char *s) { FILE *fi = fopen(f, "w"); if (!fi) { return; } fprintf(fi, "%s", s); fclose(fi); } int main() { mkdir("/dev", 0755); mkdir("/proc", 0755); mkdir("/sys", 0755); mount("devtmpfs", "/dev", "devtmpfs", MS_NOSUID, "mode=0755"); mount("proc", "/proc", "proc", 0, NULL); mount("sysfs", "/sys", "sysfs", 0, NULL); fpwrite("/sys/class/android_usb/android0/enable", "0"); fpwrite("/sys/class/android_usb/android0/idVendor", "18d1"); fpwrite("/sys/class/android_usb/android0/idProduct", "4ee2"); fpwrite("/sys/class/android_usb/android0/functions", "acm"); fpwrite("/sys/class/android_usb/android0/f_acm/instances", "1"); fpwrite("/sys/class/android_usb/android0/enable", "1"); fpwrite("/sys/class/android_usb/android0/iManufacturer", "Xiaomi"); fpwrite("/sys/class/android_usb/android0/iProduct", "Redmi"); fpwrite("/sys/class/android_usb/android0/iSerial", "0123456789ABCDEF"); { mknod("/dev/ttyGS0", 0777 | S_IFCHR, makedev(233, 0)); int fd; if ((fd = open("/dev/ttyGS0", O_RDWR)) < 0) { fd = open("/dev/null", O_RDWR); } ioctl(fd, TIOCSCTTY, 0); dup2(fd, 0); dup2(fd, 1); dup2(fd, 2); } symlink("/dev/ttyGS0", "/dev/console"); setenv("LD_LIBRARY_PATH", "/lib:/usr/lib:/sbin", 1); setenv("PATH", "/usr/sbin:/usr/bin:/sbin:/bin", 1); execl("/sbin/sh", "/sbin/sh", NULL); }