نوشته شده توسط
محمد تارزان
ممنون جناب مهندس شیری، مثلا برای Win Form به زبان VB.Net یا C#.Net ، اگر نرم افزار و راهکار مناسبی که مورد تایید شما هست بفرمایید ممنون میشم. البته بنده برخی مطالب شما و سایر دوستان را در خصوص مبهم سازی رو توی این سایت خوندم. اگر جمع بندی کنید ممنون میشم.
ببیند دوست عزیز!
واقعیت این هست که قبلا هم گفتم حفاظت از کد های برنامه هایی که به یک زبان میانی مثل همین CLI در سی شارپ نوشته میشوند اصولا امکانپذیر نیست! بنابراین شما هرقدر هم که از Packer / Obfuscator ها استفاده کنید بالاخره با یک ابزار میشه سورس را استخراج کرد.
به همین علت پیشنهاد من این هست که بهتره که اگر نرم افزارتون را به صورت متعامد(یعنی نرم افزار را با استفاده از الگوهای مناسب مثل MVC,MVVP,... طراحی کرده باشید) بنا براین باید بتونید به راحتی لایه منطق و اصولا الگوریتم های مهم و حساس نرم افزار را با استفاده از زبانهایی مثل ++C,C به کتابخانه هایی مثل Shared Object , Static Library , Dynamic Link Library تبدیل کنید! تا به این صورت نتونن به سورس کدهای مهم شما دسترسی پیدا کنند چرا که تابحال ابزاری که بتونه از روی کد اسمبلی خروجی سورس کد سی ویا سی پلاس پلاس تولید کنه نداریم! دلیلش هم ساده است چونکه وقتی شما کد را به اسمبلی تبدیل میکنید دیگه توانایی شناسایی صد در صدی سورس کدهای اصلی وجود ندارد برای مثال تصور کنید که 8=3+5 حالا چندتا راه جبری وجود داره تا به 8 برسیم مثلا 2+6 و 7+1 و 4+4 و ... حالا تصور کنید برنامه دی کامپایلر وقتی به چنین دستوراتی برخورد میکنه!
int main()
{
int a = 5;
int b = 3;
int c = a+b;
return 0;
}
خوب حالا خروجی اسمبلی و ماشین کدش یه چیزی شبیه این میشه!...
LOC: MACHINE CODE ASM SOURCE
0100: B0 05 mov al, 5
0102: B3 0A mov bl, 3
0104: 02 D8 add bl, al
حالا تصور کنید که بخواهید از روی این کد به اون سورس کد برسید قطعا کار سختی خواهید داشت.
البته این کد بسیار بسیار ساده بود و فقط جهت بهتر متوجه شدن گفته هام قرار دادم. ونکته دیگه اینکه شاید نتونن کدهای سی را دی کامپایل کنند ولی با ابزارهایی میتونن کد اسمبلی را استخراج کنند البته نه کد اسمبلی مستقیم را بلکه اسمبلی باینری فایل که به چندین هزار خط میرسه بنابراین بازهم به سورس کد شما نمی تونن دسترسی پیدا کنند به راحتی فقط و فقط می تونن تزریق کد انجام بدهند که اونهم مقوله کرک کردن نرم افزار که خودش یک دنیایی متفاوت هست.
ودر جمع بندی اگر امکانش را دارید می تونید از کتابخانه ها استفاده کنید! اگر نه هم که فعلا به همین ابزار مبهم ساز و پکر اکتفا کنید. ویک نکته را هم فراموش نکنید مبهم سازی بیش از حد هم می تونه در خروجی باینری تاثیر گذار باشه!
موفق باشید.