-6

У меня есть программа на C # .NET, которая, по моему мнению, была скомпрометирована (реинжиниринг). Есть ли способ предотвратить это?

3 ответа3

10

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

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

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

Вам, вероятно, придется прибегнуть к единственному учреждению на Земле, которое может (крайне несовершенным образом) попытаться отреагировать на ошибочные или аморальные действия, которые произошли в прошлом: правовая система. Видите ли, даже если кто-то делал что-то действительно неприятное, например, выпуская конкурирующий продукт, используя ваш код в качестве основы, вам не нужно строго использовать машину времени, чтобы помешать им сделать это: вы можете просто привлечь к суду самых злостных нарушителей. и позволить системе правосудия разыграть себя. Вы не обязательно получите идеальный результат и, вероятно, не получите все деньги, которые вам причитаются (судебные издержки и все такое); но это будет лучше, чем сидеть здесь, желая, чтобы у вас была машина времени.

Разумеется, в будущем любые новые разработки кода, которые вы выпускаете, должны быть запутаны, если ваша цель состоит в том, чтобы помешать другим людям с удобством осуществлять обратный инжиниринг сборок .NET. Но я оставлю эту тему другим ответчикам; Я просто хотел быть педантом.

3

Вам нужен обфускатор кода C #, проверьте эти вопросы:

Вопрос 1

вопрос 2

3

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

Анти-Обратный Инженерное Руководство

По сути, вам нужно применить некоторые методы запутывания, чтобы замедлить процесс. Есть несколько инструментов, которые помогут вам сделать это, в зависимости от языка программирования, который вы используете. Если вы ищете Stackoverflow, вы можете найти много ответов, быстрый поиск вернул следующую ссылку о Javascript, например:

Как я могу запутать JavaScript?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .