четверг, 17 октября 2013 г.

Защита исходного кода приложений

Для защиты исходного кода приложения обычно используются протекторы (представитель, .Net Reactor) или обфускаторы (представитель SmartAssembly, список можно глянуть здесь). В данной статье не планирую рассказать в чем их отличие, и какие есть разновидности. Со всем этим читатель может ознакомиться самостоятельно, например здесь. Случайно в интернете нашёл описание как можно написать собственный обфускатор ну или по крайней мере разобраться как он работает. Пример основан на использовании Mono.Cecil, что так же позволит немного разобраться в данной библиотеке.
К сожалению, блог автора пропал и его удалось восстановить благодаря веб-архиву. В итоге всех статей автор написал свой обфускатор, который выложил в открытом доступе http://code.google.com/p/ncloak/

Выкладываю ссылки в хронологическом порядке. Пользуйтесь :)

Protecting your precious code!
Protecting your precious code! - Part 2
Protecting your precious code - Obfuscation
Protecting your precious code - Mono.Cecil
Protecting your precious code - Naming inside our obfuscater
Lesson of rolling name table
Obfuscating multiple assemblies - Part 1
Obfuscating multiple assemblies - Part 2
Breaking into obfuscated code
String Encryption as an Obfuscation Tool - Part 1
String Encryption as an Obfuscation Tool - Part 2
String Encryption as an Obfuscation Tool - Part 3
The danger of the Changelog
Stopping ILDASM decompiling your assemblies
Handling 64-bit assemblies during obfuscation
How to make your Obfuscator fool Reflector
Making NCloak fool Reflector
Removing Invalid OpCodes From Obfuscated Assemblies
Hacking Mono.Cecil - allowing invalid opcodes
Tamper Proofing your Code
Tamper Proofing - an implementation (Part 1)
Tamper Proofing - an implementation (Part 2)

пятница, 15 февраля 2013 г.

Библиотека Quartz.NET

В одном из текущих проектов понадобилось реализовать windows-сервис, который бы запускался раз в час, делал своё дело и засыпал до следующего запуска. Реализовал просто - через таймер.
Потом понадобилось добавить еще одну периодическую задачу, которая должна запускаться с другим интервалом. Как бы не проблема: создаём еще один таймер и радуемся. И что плодить таймеры каждый раз? Не хочу, ибо не красиво. Создать свой движок, управляющий созданием таймеров - тоже вариант. Но решил поискать существующие решения этой задачи.
Натолкнулся на Quartz.NET - портированный с Java open source framework Quartz. На сайте библиотеки есть много примеров использования scheduler.

Еще статьи

2leep.com