Реверс-инжиниринг ОС?
если у вас есть куча свободного времени (пара тройка лет) и вы хорошо разбираетесь в железе и процессе дизассемблирования, реализуете все необходимые инструменты для упрощения процесса - то пишите клон iOS совместимый с их ПО. Только вас либо засудят по итогу либо у вас ничего не выйдет.
Наёмные убийцы из Microsoft и Apple найдут тебя. Если решишь этим заняться, то знай тебе, что дизассемблирование не всегда даёт адекватный результат, а многие компоненты ядра как Windows так и iOS написаны обфусцированном коде, посему разобарться в нём очень сложно, тем паче в одиночку. Например, вот обфусцированный код:F
U (Y (t + 28) + 1536) |=
62 & -n;
M
U (d + D) =
X (D, Y (t + 12) + 26628, 412162) ? X (D, Y (t + 12) + 27653,
                    410112) ? 31 : 0 : U (d + D);
for (; j < 12800; j += 8)
    P (d + 27653 + Y (t + 12) + ' ' * (j & ~511) + j % 512,
        U (Y (t + 28) + j / 8 + 64 * Y (t + 20)), 0);
}
а вот его расшифровка:case msg_render:
    /* This code draws content of window (black frame, white area and text) */
    {
        char *dest = (char *)arg;
        if(shell){
            (*content)[(LINES - 1) * COLUMNS] = '>';
        }
        /* Frame */
        draw_rectangle(dest + my_task->begin, TITLE_HEIGHT + 8, 4,            LINES * SYMBOL_HEIGHT + 3, COLUMNS * SYMBOL_WIDTH + 2, BLACK);
        /* Area */
        draw_rectangle(dest + my_task->begin, CONTENT_TOP,      CONTENT_LEFT, LINES * SYMBOL_HEIGHT + 1, COLUMNS * SYMBOL_WIDTH,     WHITE);
        /* Text */
        for(int i = 0; i != LINES; ++i){
            for(int j = 0; j != COLUMNS; ++j){
                draw_symbol(dest + my_task->begin + (CONTENT_TOP + i * SYMBOL_HEIGHT) * SCREEN_WIDTH + CONTENT_LEFT + j * SYMBOL_WIDTH, (*content)[(*line + i) * COLUMNS + j], BLACK);
            }
        }
    }
    break;
(источник здесь.
Проще написать свою ОС, совместимую с какой-то, но это опять же очень долго и успеха не будет.   
Как доказательство - ReactOS.