需求: 给debugserver提权
代码:
#include <spawn.h>
extern char **environ;
int run_cmd(const char *cmd)
{
pid_t pid;
const char *argv[] = {"sh", "-c", cmd, NULL};
int status = posix_spawn(&pid, "/bin/sh", NULL, NULL, (char* const*)argv, environ);
if (status == 0) {
if (waitpid(pid, &status, 0) == -1) {
perror("waitpid");
}
}
return status;
}
int main(int argc, char **argv, char **envp) {
if (argc < 2)
{
fprintf(stderr, "usage: %s program args...\n", argv[0]);
return EXIT_FAILURE;
}
int ret, status;
pid_t pid;
posix_spawnattr_t attr;
posix_spawnattr_init(&attr);
posix_spawnattr_setflags(&attr, POSIX_SPAWN_START_SUSPENDED);
ret = posix_spawnp(&pid, argv[1], NULL, &attr, &argv[1], envp);
posix_spawnattr_destroy(&attr);
if (ret != 0)
{
printf("posix_spawnp failed with %d: %s\n", ret, strerror(ret));
return ret;
}
char buf[200];
snprintf(buf, sizeof(buf), "/electra/jailbreakd_client %d 1", pid);
run_cmd(buf);
kill(pid, SIGCONT);
waitpid(pid, &status, 0);
return 0;
}
// vit=objc
在ios11越狱环境下只从此脚本报错:
/usr/bin/JBDO: line 1: syntax error near unexpected token newline' /usr/bin/JBDO: line 1:
!<arch>’
网上查过许多方法都不行,比如什么换行符不对等等,希望大佬能赐教