Хранение кодов доступа

Хочу реализовать защиту на основе Guardant API с использованием ключа Code. Посоветуйте, пожалуйста, вариант оптимального хранения кодов доступа в программе ! Насколько я понимаю, хранить значения кодов доступа в явном виде ни в коем случае нельзя !?

К примеру, насколько эффективным можно считать вызов функции инициализации кодов доступа в таком виде:

GrdSetAccessCodes(hGrd, myEncription(Public), myEncription(PrivateRead),...);

где DWORD myEncription(...) - функция, возвращающая соответствующий код доступа в явном виде.

Я не очень представляю всех возможностей "хакеров", но если я правильно понимаю, путём дизассемблирования можно найти точку вызова функции GrdSetAccessCodes(...) и получить значения всех её параметров !? И мне кажется, для любого специалиста, владеющего дизассемблированием, это элементарная задача не смотря на обфускацию exe-ника и прочие ухищрения. И в этом случае вся остальная защита теряет какой-либо смысл, какой бы она ни была. Ведь при наличии кодов доступа хакер легко считает зашитый в ключ мой исполняемый код и создаст эмулятор !?

(2012-04-26 10:06:51 отредактировано Кирилл Ковлежов)

Re: Хранение кодов доступа

Да, хранить коды доступа в явном виде действительно не следует. Что касается способа хранения, то их настолько много, что выбрать оптимальный для себя способ может только разработчик под свой конкретный программный продукт. Единственное,  что мы можем с уверенностью рекомендовать - вызывать ф-цию GrdSetAccessCodes только в те моменты и только с теми кодами, когда нужно что-либо записать (PrivateWrite) или прочитать (PrivateRead), а не все коды сразу единым блоком.
Даже при наличии кодов доступа злоумышленник не считает загружаемый код. Это уже обсуждалось здесь.