Как я обнаруживаю, что приложение для iOS работает на взломанном телефоне?

Чтобы избежать использования исключений и для решения на основе типа, я пришел к следующему:

#! /usr/bin/python3

import itertools

def p2Sort(x):
    notImpl = type(0j.__gt__(0j))
    it = iter(x)
    first = next(it)
    groups = [[first]]
    types = {type(first):0}
    for item in it:
        item_type = type(item)
        if item_type in types.keys():
            groups[types[item_type]].append(item)
        else:
            types[item_type] = len(types)
            groups.append([item])

    #debuggng
    for group in groups:
        print(group)
        for it in group:
            print(type(it),)
    #

    for i in range(len(groups)):
        if type(groups[i][0].__gt__(groups[i][0])) == notImpl:
            continue
        groups[i] = sorted(groups[i])

    return itertools.chain.from_iterable(group for group in groups)

x = [0j, 'one', 2.3, 'four', -5, 3j, 0j,  -5.5, 13 , 15.3, 'aa', 'zz']
print(list(p2Sort(x)))

Обратите внимание, что дополнительный словарь для хранения различных типов в списке и переменной типа (notImpl). Обратите внимание, что float и int не смешиваются здесь.

Выход:

================================================================================
05.04.2017 18:27:57
~/Desktop/sorter.py
--------------------------------------------------------------------------------
[0j, 3j, 0j]
<class 'complex'>
<class 'complex'>
<class 'complex'>
['one', 'four', 'aa', 'zz']
<class 'str'>
<class 'str'>
<class 'str'>
<class 'str'>
[2.3, -5.5, 15.3]
<class 'float'>
<class 'float'>
<class 'float'>
[-5, 13]
<class 'int'>
<class 'int'>
[0j, 3j, 0j, 'aa', 'four', 'one', 'zz', -5.5, 2.3, 15.3, -5, 13]
162
задан Cœur 3 November 2017 в 04:39
поделиться

3 ответа

Это зависит, что Вы подразумеваете под перепрошивкой. В простом случае необходимо быть в состоянии видеть, установлен ли Cydia, и пойдите тем - что-то как

NSString *filePath = @"/Applications/Cydia.app";
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath])
{
   // do something useful
}

Для взломанных ядер, это - немного более включенная (партия).

85
ответ дан wisequark 23 November 2019 в 21:22
поделиться

Я предложил бы искать файлы, которые не присутствуют на "ванили" iPhone. Все наборы перепрошивки я видел установку ssh. Это могло бы быть хорошим индикатором взломанного телефона.

3
ответ дан Gordon Wilson 23 November 2019 в 21:22
поделиться

Проверка того, сломано ли ядро, не ТАКОЕ сложная задача.

При взломе выполняется проверка подписи ядра подписанного кода. всегда сообщать, что код подписан правильно, на неразрушенных телефонах нельзя запускать код с плохой подписью.

Итак, включите в приложение отдельный исполняемый файл с плохой подписью. Это может быть просто 3-строчная программа с main () и возвращаемым значением. Скомпилируйте исполняемый файл без подписи кода (отключите его в Настройках проекта-> Сборка) и подпишите его другим ключом с помощью утилиты командной строки «codeign».

Пусть ваше приложение запускает отдельный исполняемый файл. Если ваша программа не может получить возвращаемое значение при запуске отдельного исполняемого файла с плохим сигналом, она определенно заключена в тюрьму. Если отдельный исполняемый файл возвращает A-OK,

51
ответ дан 23 November 2019 в 21:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: