Защита/Антиинвертирование Интеллектуальной собственности C++

В моем случае это выглядит так:

- (UITableViewCell *)tableView:(UITableView *)tableView
         cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    NSString *cellIdentifier = CELL_ROUTE_IDENTIFIER;
    RouteTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if (cell == nil) {
        cell = [[RouteTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                         reuseIdentifier:cellIdentifier];
    }

    if ([self.routes count] > 0) {
        Route *route = [self.routes objectAtIndex:indexPath.row];

        UITapGestureRecognizer *singleTapOwner = [[UITapGestureRecognizer alloc] initWithTarget:self
                                                                                    action:@selector(imageOwnerTapped:)];
        singleTapOwner.numberOfTapsRequired = 1;
        singleTapOwner.cancelsTouchesInView = YES;
        [cell.ownerImageView setUserInteractionEnabled:YES];
        [cell.ownerImageView addGestureRecognizer:singleTapOwner];
    } else {
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
    }
    return cell;
}

И селектор:

- (void)imageOwnerTapped:(UISwipeGestureRecognizer *)gesture {
    CGPoint location = [gesture locationInView:self.tableView];
    NSIndexPath *tapedIndexPath = [self.tableView indexPathForRowAtPoint:location];
    UITableViewCell *tapedCell  = [self.tableView cellForRowAtIndexPath:tapedIndexPath];

    NSIndexPath *indexPath = [self.tableView indexPathForCell:tapedCell];
    NSUInteger index = [indexPath row];

    Route *route = [self.routes objectAtIndex:index];
}
6
задан Doorknob 9 February 2013 в 15:11
поделиться

7 ответов

Существуют такие решения, как Safenet и HASP, которые утверждают, что шифруют двоичный файл, но защищены ли они от реверсирования при использовании с действующим ключом?

Нет. Специализированный реверс-инженер может его расшифровать, потому что операционная система должна иметь возможность расшифровать его, чтобы запустить его.

Лично я бы не стал беспокоиться. По общему признанию, я ничего не знаю о вашем бизнесе, но мне кажется, что обратное проектирование C ++ относительно сложно по сравнению с такими языками, как Java или .NET. Этого будет достаточно защиты, чтобы проводить всех, кроме самых решительных злоумышленников.

Однако решительный злоумышленник всегда сможет обойти все, что вы реализуете, потому что в какой-то момент это нужно превратить в кучу инструкций процессора и выполнен. Вы не можете помешать им прочитать это.

Но это ' sa много усилий для нетривиальной программы. Мне кажется гораздо более вероятным, что кто-то может просто создать конкурента, увидев вашу программу в действии (или даже просто из ваших маркетинговых материалов). Это, вероятно, проще, чем пытаться перепроектировать вашу, и избежать любых потенциальных юридических проблем. Это не то, что вы можете (или должны) предотвратить.

7
ответ дан 8 December 2019 в 13:02
поделиться

нанять некоторых людей, которых я работал с ними годами, они полностью запутают исходный код!

6
ответ дан 8 December 2019 в 13:02
поделиться
1
ответ дан 8 December 2019 в 13:02
поделиться

Здесь есть две основные области:

  1. Обфускация - часто означает переименование и удаление символов. Некоторые могут также переупорядочивать код путем эквивалентных преобразований кода. Исполняемые упаковщики также обычно используют логику защиты от отладки.
  2. Защита нижнего уровня - это означает программирование на уровне ядра или оборудования. Встречается в таких руткитах, как Sony, nProtect, защита от копирования CD / DVD.
1
ответ дан 8 December 2019 в 13:02
поделиться

Практически невозможно по-настоящему запутать код таким образом, чтобы его невозможно было перепроектировать.

Если бы это было возможно, то компьютерный вирус было бы совершенно невозможно остановить, никто бы не стал уметь знать, как они работают и чем занимаются. Пока мы не сможем запустить зашифрованный код, шифрование в какой-то момент расшифровывается и «читается» (например, тот, кто может читать машинный код), прежде чем он может быть выполнен процессором.

Теперь, имея это в виду, вы Можно смело предположить, что дешевая защита отбьет дешевых хакеров. Читайте "дешево" как "не хорошо", это совершенно не связано с ценой, которую вы платите. Отличная защита отразит великих хакеров, но максимальной защиты не существует.

Обычно, чем более коммерчески ваше решение, тем более «хорошо известны» векторы атак.

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

1
ответ дан 8 December 2019 в 13:02
поделиться

Конечно, вы можете пойти на все, чтобы попытаться обойти / задержать отладчики и обратное проектирование. Как говорили другие, вы не остановите решительного злоумышленника, точка ... и как только ваше приложение будет взломано, вы можете рассчитывать, что оно будет доступно бесплатно в Интернете.

Вы заявляете две цели желаемой схемы защиты:

1) Сделайте трудным обратный инжиниринг. 2) Сделайте очевидным, что кто-то вас обкрадывает.

Для №1 любая схема обфускатора / отладочного детектора / и т.д. будет иметь хоть какое-то влияние. Честно говоря, однако, сокращение процента инженеров, которые когда-либо копались в выводе компилятора, означает, что скомпилированный код C / C ++ для многих ЯВЛЯЕТСЯ запутанным кодом.

Для пункта 2, если у вас нет конкретного и юридически защищенного алгоритма / процесса, который вы вы пытаетесь защитить, как только приложение будет реконструировано, вы потеряны. Если это юридически защищено, вы уже опубликовали защищенные детали, так что вы пытаетесь получить?

В целом, я думаю, что это трудный способ «выиграть», и вам лучше исправить это на «бизнес-сторона» - то есть оформить свое приложение по подписке или взимать плату за обслуживание / поддержку ... но особенности, очевидно, зависят от ваших обстоятельств.

1
ответ дан 8 December 2019 в 13:02
поделиться

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

Отсрочка обратного проектирования только «отсрочит» неизбежное. На чем вам нужно сосредоточиться, так это на сдерживании первоначальной попытки нарушения авторских прав / интеллектуальной собственности. Хорошее уведомление о юридических положениях и условиях на странице «О программе» или выделенное жирным шрифтом уведомление об авторских правах, предупреждающее о том, что любые попытки реконструировать код приведут к взлому через позвоночник ...

Большинство людей откажутся от попыток сорвите что-нибудь, если есть шанс, что им будет предъявлен судебный иск.

Мы используем SafeNet, и наши клиенты рассматривают его как «официальную» защиту. Это само по себе является хорошим сдерживающим фактором.

1
ответ дан 8 December 2019 в 13:02
поделиться
Другие вопросы по тегам:

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