Themida/VMProtect/Enigma vb. zaten bunları sağlıyor (Runtime Encryption hariç ve Runtime Encryption için yapılması gereken birçok şey var (Polymorphic/Metamorphic Engine gibi) bunun yanı sıra stabil olmasını da sağlamak zorunda. Genelde bunu RAT vb. için kullanırlar. Hilelerde "doğru" Unique Build için gereklidir ama Crâck için hatırı sayılır koruma sağlamaz. AHK gibi Loader içinde var olan kodları farklı şekillerde çalıştırmaya yarar (Code Mutation' un Runtime' da değişen hali gibi düşünebilirsin). Tabi senin bahsettiğin string vb. içinse (Xor gibi) evet bu gerekli en basit şeydir ve bu programlar zaten bunu sağlıyor.). Tabi çoğu kullanıcı bunları bilmediğinden sadece exe/dll' i programa sürükleyip kullanıyor. Doğru kullanmak için SDK ile Marker kullanmak gerekir. Ve bu korumaların sağladığı func/api' leri kendi programın içinde de çağırıp istediğin gibi kullanabilirsin. Yani kısacası Source içinde olanla dışarıdan kullandığın programlar arasında hiçbir fark yok, sadece nasıl kullanacağını bilmen lazım. İşin sonunda zaten bu programlar hazır bir Loader gibidir sadece senin programını kendi Loader' larının içinde koruyarak/değiştirerek çalıştırır.
Bunlara ek olarak programın unpack edilmesi sandığınız kadar önemli bir konu değil. Crâck' de asıl korumayı sağlayan şey Virtualization' dur. Yani kodları istediğiniz kadar Mutation/Obfuscation vb. edin asıl korumayı sağlayan tek şey Virtualization
Örnek olarak programı sadece Themida' ya sürükleyip packleyip kullanırsanız kodlarınızda herhangi bir Virtualization olmaz. Themida sadece kendi kodlarına Virtualization uygular ve sizin kodlarınızı da bunun arkasında korur. Ama SDK dahil edip hangi func/api' lerinizi Virtualization/Mutation yapmasını Marker ile belirtirseniz işte o zaman doğru şekilde kullanmış olursunuz. Ve unpack edilse de kaynak kodunuza ulaşması çok daha zor olur.
Custom LLVM ile birkaç yıl önce oluşturduğum bir test uygulaması bu ve gördüğün gibi bunu ilk gören kişi bunula mı uğraşıcam diyip cayabilir. Ama aslında yaptığı şey çok basit. Temelinde bu bir Obfuscation uyguluyor ve bunun yanında basit düzeyde Virtualization. Uygulama şekliyse kod bloğunun içinde birkaç blok daha oluşturmak. Kısa adıyla CFF (Control Flow Flattening). Çözümüyse basit, programı inceleyip oluşturulan her loopentry label' i takip eden store için otomatikleştirilmiş for döngüleri yeterli
Neyse işte sözün kısası bu programlar doğru kullanıldığı sürece yeterli korumayı sağlayacaktır, Cracklemek isteyen koruma ne olursa olsun yapabilir. Önemli olan kaynak kodunu korumaktır.