# مهندسی نرم افزار > مباحث مرتبط با مهندسی نرم‌افزار > امنیت در نرم افزار و برنامه نویسی >  سوال در مورد قفل گذاری روی نرم افزار

## sara_aryanfar

با سلام من روی یه برنامه که نوشتم قفل cpu گذاشتم اما یکی از دوستان گفت میشه سورس برنامه ها رو ویرایش و این قفل رو برداشت و برنامه رو کرک کرد می خواستم بدونم ایا درسته با چه برنامه ای فایل اجرایی رو ویرایش می کنن مثلا vb رو ویرایش می کنن یا فرقی نداره و سی شارپ رو هم ویرایش میشه کرد

----------


## ایمان مدائنی

از قفل شخت افزاري استفاده كنيد 
من tiny من آموزششو تو سايت گذاشتم 
شما ميتوني مقداري از پروژه رو در قفل ذخيره كني مثل چند تا از كلاسهاي اصلي برنامه 
اون وقت اگه سورسها هم باز بشه مشكلي پيش نمياد باز كردن قفل كار هر كسي نيست نشدني نيست ولي كار هر جوجه هكري نيست

----------


## tooraj_azizi_1035

سلام خانم آریانفر، شما نباید سریال CPU رو به عنوان معیاری برای یونیک کردن سیستم ها از همدیگه قرار بدید چون اینتل اعلام کرده از Pentium III به بعد به دلایل نگرانی در مورد محرمانگی ( Privacy Concern ) سریال CPU *ممکنه* وجود نداشته باشه یا تکراری باشه من تو چند تا سیستم تست کردم یه سریال داد.

این منبع رو بخونید تا متوجه بشید: http://bochs.sourceforge.net/techspec/24161821.pdf

در انتهای صفحه 19 این متن رو می بینید:

*Processor serial number provides an*
*identifier for the processor, but should not be assumed to be unique in itself.* There are potential modes in which
erroneous processor serial numbers may be reported. For example, in the event a processor is operated outside its
recommended operating specifications, (e.g. voltage, frequency, etc.) the processor serial number may not be
correctly read from the processor. Improper BIOS or software operations could yield an inaccurate processor serial
number. These events could lead to possible erroneous or duplicate processor serial numbers being reported. System
manufacturers can strengthen the robustness of the feature by including redundancy features, or other fault tolerant
methods.
Processor serial number used as a qualifier for another independent number could be used to create an electrically
accessible number that is likely to be distinct. Processor serial number is one building block useful for the purpose
of enabling the trusted, connected PC.

----------


## ali.m.vand

کد های سی شارپ و وی بی همه ویرایش میشن اسم نرم افزار رو پیام میزنم تا وضع بدتر از اینی که هست نشه

----------


## علیرضا حسن زاده

> از قفل شخت افزاري استفاده كنيد 
> من tiny من آموزششو تو سايت گذاشتم 
> شما ميتوني مقداري از پروژه رو در قفل ذخيره كني مثل چند تا از كلاسهاي اصلي برنامه 
> اون وقت اگه سورسها هم باز بشه مشكلي پيش نمياد باز كردن قفل كار هر كسي نيست نشدني نيست ولي كار هر جوجه هكري نيست


اینی که گفتین برای برنامه های Native شاید سخت باشه ولی برای برنامه های دات نت کار زیاد سختی نیست چون شما تو یه قسمتی از کد برنامتون این کلاسها رو می خواین از رو tiny بخونی (حالا با هر الگوریتمی هم که رمز کرده باشی) نهایتا کاربر کد شمارو می تونه ببینه و با یه کدی مثل کد شما اون کلاس ها رو هم از رو tiny بخونه (تنها کاری که برای مقابله برای این روش میشه استفاده کرد همون obfuscation هست که درک منطق کد را برای کرکر (نه هکر) سخت میکنه)

----------


## joker

ما يه بخش داريم تحت عنوان : امنیت-در-نرم-افزار-و-برنامه-نویسی
https://barnamenevis.org/forumdisplay.php?66

اونجا مسائل آموزشي در مورد امن كردن نرم افزارها هست ، اگه مطالبش جوابگو نبود و نتونستيد خودتون يك سيستم  برا حفاظت نرم افزار پياده كنيد سوال بپرسيد هرجائيش گير كردين مطمئنا بچه ها بي جواب نميزارن....

----------


## ab.mahmoodi

برای ایجاد امنیت در یک نرم افزار میتونید از قفلهای سخت افزاری یا نرم افزاری استفاده کنید. اما این کار بتنهایی کافی نیست. شما باید فایل اجرایی خوتون رو هم پروتکت کنید. اگر این فایل اجرایی در دات نت تولید شده باشه خوب براحتی ریسورس میشه و سورس را میشه براحتی تغییر داد و نیازی به دیباگ نیست. اما در فایلهای اجرایی نوع غیر دات نت وضعیت متفاوت است این نوع فایها هم قابل دیباگ شدن هستند و براحتی میتوان بخشهای مختلف را تغییر داد و رفتار نرم افزار را کنترل نمود. در هر دو حالت باید از نرم افزارهای پروتکتور استفاده نمود.

----------


## Restlesa

بهترين روش براي امنيت برنامه هاتون ثبت برنامه مورد نظرتون در وزارت فرهنگ و ارشاد اسلامي هستش
كدهاي امنيتي نرم افزاري و سخت افزاري بلاخره توسط اشخاص هكر شكسته ميشن مخصوصا اگه برنامه تون طرفدارهاي زيادي پيدا كنه ولي اگه برنامه تون رو در اين وازت به ثبت برسونيد اگر اين كار رو انجام بدين حق كپي رايت به صورت كامل و قانوني بر روي برنامه تون اعمال ميشه و اگر هر هكري بخواد برنامه تون رو كرك كنه بايد عواقب بعد از اون رو هم به جون بخره. به همين دليل احتمال كرك كردن برنامه تون به شدت كاهش پيدا مي كنه. اين كار تا اونجايي كه من مي دونم 100 هزار تومان براي هر برنامه هزينه آب مي خوره و هر برنامه اي رو هم به ثبت نمي رسونن

----------


## Nima NT

با ثبت نرم افزار هم تا حدودی میشه جلوی کرک شدن برنامه رو گرفت ، بهترین کاری که معمولا" انجام میشه این هست که اگر نرم افزار ثبت شده باشه و در سایتی نسخه کرک شده اون یا اطلاعاتی در مورد نحوه کرک کردن اون انتشار پیدا کنه میتونید به راحتی علاوه بر تخته کردن در اون سایت برای همیشه مسئولین سایت رو به دادگاه بکشونید.

----------


## hepL3r

> اگر هر هكري بخواد برنامه تون رو كرك كنه بايد عواقب بعد از اون رو هم به جون بخره.


فکر کم منظورتون کرکر هست . در ضمن اگه نرم‌افزار توسط تیم‌های 0Day کرک بشه تقریبا" گرفتن این‌جور افراد غیر ممکن میشه .
بهتره بیشتر به فکر افزایش امنیت نرم‌افزارتون باشید تا گرفتن کرکر .
در مورد برنامه‌های vb باید بگم آنپک کردن و کرک کردن این برنامه‌ها نسبت به برنامه‌های دیگه راحت‌تر هست ولی بازم به برنامه‌نویس بستگی داره .
برای اینکه HWID درست کنید میتونید از ترکیب سریال‌های چنتا سخت‌افزار باهم استفاده کنید ( مثلا" هارد و CPU )




> با چه برنامه ای فایل اجرایی رو ویرایش می کنن مثلا vb رو ویرایش می کنن یا فرقی نداره و سی شارپ رو هم ویرایش میشه کرد


هر دوی این زبان‌های برنامه‌نویسی قابلیت در‌کامپایل شدن رو دارن .

----------


## FastCode

سریال سخت افزار کلاً یک مقدار مسخرست جون خیلی وقت پیش ها یه چیزی اختزاع شده به اسم ماشین مجازی
سریال NIC یک مقدار بهتره.اگر کاربر ندونه که از سریال nic استفاده میشه,ممکنه نتونه این کار رو با ماشین مجازی بکنه.ولی یک کاربر حرفه ای میتونه.

----------


## joker

تغییر مک آدرس ساده تر از بقیه موارد هست.
حتی نیاز به VM هم نداره ،
اصلا پیشنهاد نمیشه.

----------


## علیرضا حسن زاده

ترکیب چند تا از سریال ها با یه الگوریتم خاص میتونه از بهترین روشها باشه
من الان در حال کار رو کشف رمز یه برنامه هستم(چون برنامه تحت داس هستش خیلی گیر کردم) که اگه یه بایت از فایلی که رمز توش ذخیره شده رو تغییر بدی برنامه کرش میکنه و اجرا نمیشه البته این روش رو میشه  با الگوریتم های رمز نگاری ایجاد کرد که اگه کاربر بخواد رمز یاالگوریتم رو دستکاری کنه کارش مشکل میشه کاربر هم خیلی سخته که بفهمه از چه سریال هایی استفاده کردین یعنی کدی که به کاربر برای کد فعال سازی به کاربر نشون میدین رو به صورت یه رشته که به صورت رمز در اومده نشون بدین اینجوری کار یکم مشکل تر میشه برای کرکر

----------


## FastCode

> تغییر مک آدرس ساده تر از بقیه موارد هست.
> حتی نیاز به VM هم نداره ،
> اصلا پیشنهاد نمیشه.


البته.یاد این نبودم.
ولی توی VM خیلی سخته.که فکر میکنم باعث بشه ترکیبش کار رو مشکل کنه.


البته همه اینها در صورتیه که کار رو با یک if ه خشک و خالی تموم نکنید که با یک تغییر ه jz و jnz بتونن برنامتون رو کرک کنن.

----------


## queenmitra

به نظر من هم بهتره به فکر امنیت برنامتون باشید تا گرفتن دزد! خوشبختانه روشهای مختلفی برای ایجاد امنیت در نرم افزارها وجود داره از جمله همین قفل سخت افزاری که دوستان اشاره کردند ظاهرا هم از روشهای دیگه مطمئن تره.

----------


## Nima NT

> به نظر من هم بهتره به فکر امنیت برنامتون باشید تا گرفتن دزد! خوشبختانه روشهای مختلفی برای ایجاد امنیت در نرم افزارها وجود داره از جمله همین قفل سخت افزاری که دوستان اشاره کردند ظاهرا هم از روشهای دیگه مطمئن تره.


 قفل سخت افزاری هم بستگی داره به استفاده از اون وگرنه تمامی حسابداری های رافع ، سکه و ... از قفل سخت افزاری استفاده کردن و ساده کرک شدن.

----------


## queenmitra

قطعا همین طوره جناب نیما اگر قفل سخت افزاری درست استفاده نشه کارایی و امنیت مناسبی نخواهد داشت همون طور که نرمافزارهایی که نام بردید هنوز هم در نسخه های جدیدشون از قفل سخت افزاری استفاده میکنند اما ظاهرا متوجه شدند اشکال از کجا بوده و روش استفادشونو تغییر دادند

----------

