PDA

View Full Version : دادن کد فعال سازی برنامه



mbr485
دوشنبه 08 مهر 1387, 08:02 صبح
با سلام
می خواستم دوستان راهنمایی کنند اگر من بخواهم برنامه خود را در حالت دمو ارائه بدهم و برای فعال سازی برنامه بعد از تماس تلفنی مشتری کد فعال سازی به آن اختصاص دهم باید چه کاری را انجام دهم
با تشکر

amin_alexi
دوشنبه 08 مهر 1387, 08:49 صبح
سلام
تو سايت زياد در اين موارد بحث شده !
يكي كه رايجه !
گرفتن يك سري مشخصات سيستم كاربر (مثلا شماره سريال Hard يا CPU) و توليد كد به ازاي اون مشخصات !
اين براي فعال سازي برنامه
حالا براي حالت Demo بايد با توجه به كد فعال سازي كه به كاربر ميدي يك كدي بدي كه كه خودت بدوني اين كد ، كد توليد شده براي Demo و با توجه به كد فعال سازي يك سري از امكانات رو غير فعال كني !
البته روش زياده ...

Nima NT
دوشنبه 08 مهر 1387, 17:57 عصر
غیر فعال کردن بعضی قسمت های برنامه ریسک بزرگی محسوب میشه.
تجربه میگه اگه میخوای نسخه دمو ارائه بدی ، بهتره بری سراغ حذف کردن یک سری امکانات از برنامه.

amin_alexi
دوشنبه 08 مهر 1387, 19:50 عصر
غیر فعال کردن بعضی قسمت های برنامه ریسک بزرگی محسوب میشه.
میشه بگین چرا ؟
ولی

بهتره بری سراغ حذف کردن یک سری امکانات از برنامه.
اشکال نداره ؟!

manvaputra
سه شنبه 09 مهر 1387, 00:32 صبح
غیر فعال کردن بعضی قسمت های برنامه ریسک بزرگی محسوب میشه.
منم موافقم خوب فرض کن یه بنده خدایی که توی این زمینه ها حرفه اییه به هر ترتیبی بدونه مکانیزم فعال سازی بخش هایی که غیر فعال کردی چیه؟ اونوقت راحت فعالشون می کنه !

Nima NT
سه شنبه 09 مهر 1387, 15:30 عصر
نه اصلا" اشکالی نداره ، مکانیزم برنامه های تریال از سال 2007 به بعد کم کم به این سو متمایل شدن ، شما با این کار نمایی از برنامه رو به مشتری دادید ولی هیچ مشکلی در مورد کرک شدن اون ندارید.
با یه کم دقت متوجه میشی که نصف برنامه های خارجی که ما از نسخه کرک شده اونها استفاده میکنیم در واقع نسخه تریال هستن که با نصب کرک به رحمت ایزدی پیوند داده میشن !!

soheil_ce
سه شنبه 09 مهر 1387, 15:49 عصر
منم با شما موافقم نیما جان
ولی خب اگه بعضی امکانات رو حذف کنیم که دیگه روش فعال سازی معنی پیدا نمی کنه ( سؤال این بنده خدا )

Nima NT
سه شنبه 09 مهر 1387, 16:44 عصر
فعال سازی نباید با نسخه دمو قاطی بشه ، یعنی یه نسخه ارائه کنه ( دمو ) که امکاناتی از اون حذف شده و یه نسخه ارائه کنه ( به همراه قفل تلفنی ) که اون رو هم باید حسابی روی امنیتش کار کنه.

soheil_ce
سه شنبه 09 مهر 1387, 17:01 عصر
فکر نمی کنم فرقی بکنه خوب همین کارای امنیتی رو روی دمو که قابل فعال سازی هست انجام میده
چون بهر حال داره یه نسخه کامل ( همون که باید فعال بشه ) رو در اختیار کاربر میزاره .

as13851365
سه شنبه 09 مهر 1387, 20:30 عصر
فکر نمی کنم فرقی بکنه خوب همین کارای امنیتی رو روی دمو که قابل فعال سازی هست انجام میده
چون بهر حال داره یه نسخه کامل ( همون که باید فعال بشه ) رو در اختیار کاربر میزاره .

این هم حرفی است ولی پیشنهاد آقا نیما هم خیلی خوبه این جوری حداقل فایل اصلی برنامه در دست هر کسی نمی افته تا کرکش کنه !

دنیای دلفی
سه شنبه 09 مهر 1387, 20:55 عصر
نه دوستان هميشه اينطور نيست شما مي توني كاري كني كه هم كدها باشند هم كد اكتيو بدي و تا وقتي كد اكتيو هم ندادي كسي نمي تونه كرك كنه . چون سوالتو تو بخش دلفي پرسيدي پس بهتر دنبال كامپوننتي بگردي به نام SecureCode با استفاده از اين كامپوننت شما مي توانيد بخشي از كدهايي را در حالت Trial هستند و نبايد اجرا شوند را كد كني و فقط به وسيله Active Code اون كدها باز مي شوند اينجوري اگر برنامه شما مجهز به يك سيستم حفاظتي خوبي باشه مثلا (روم سياه دارم تبليغ مي كند Hot Lock) مي توني از 90 درصد كركرها در امان باشي .

soheil_ce
سه شنبه 09 مهر 1387, 21:51 عصر
این هم حرفی است ولی پیشنهاد آقا نیما هم خیلی خوبه این جوری حداقل فایل اصلی برنامه در دست هر کسی نمی افته تا کرکش کنه !


ببین عزیزم آقا نیما می گه 2 تا ورژن بدیم یکی دمو یکی فعال شونده پس در هر صورت ما داریم همه کدهامونو در اختیار ملت میزاریم .
فقط یکیش محدوده و دیگری نامحدود .
اونی که محدوده همین جوری کار می کنه ولی او یکی کد اکتیو شدن می خواد .
خوب اگه کسی بخواد کرک کنه نمیاد دمو رو کرک کنه که میره اون یکی رو کرک می کنه و بدون کد فعال سازی ازش استفاده می کنه .

Armin060
سه شنبه 09 مهر 1387, 23:27 عصر
چرا از لايسنس استفاده نميكنيد؟:متعجب: راستی اونی كه گفتيد شماره سريال هارد رو برداره، چه شكلی ميخوايد ذخيرش كنيد؟:متعجب:

e_q_sun
چهارشنبه 10 مهر 1387, 01:09 صبح
تمام صحبتهایی که شده درسته اما به نظر من کسی که توی زمینه کرک کار کرده باشه میتونه هر برنامه ای رو کرک کنه منتهی با این تفاوت که زمانی رو که میخواد صرف کنه فرق میکنه.
در جواب این دوستمون
با سلام
می خواستم دوستان راهنمایی کنند اگر من بخواهم برنامه خود را در حالت دمو ارائه بدهم و برای فعال سازی برنامه بعد از تماس تلفنی مشتری کد فعال سازی به آن اختصاص دهم باید چه کاری را انجام دهم
با تشکر باید عرض کنم که به نظر من شما بهتره از شماره سریال های موجود سخت افزار سیستم(CPU , HARD)استفاده کنی.من خودم این کارو کردم ،جواب هم داده.

mbr485
پنج شنبه 11 مهر 1387, 15:30 عصر
با تشكر از دوستان
من خودم هنوز جواب سوال خود را نگرفته ام
چون من مي خواهم با يك تماس تلفني از طرف مشتري كد فعال سازي را به او داده و برنامه از حالت دمو خارج شود .
حال بايد اين اطلاعات را در بانك ذخيره كنم يا در برنامه و چگونه ؟

hadisalahi2
پنج شنبه 11 مهر 1387, 16:17 عصر
دوست عزیز من به شما پیشنهادمیکنم که از این روش استفاده نکنید، دلیلش هم اینه که پیغامهای شما هنگامی که برنامه رو داخل Debuger باز کنید به همون صورت دیده میشه و کسی هم که اسمبلی یه کمی بلد باشه ، راحت با یه Jump میتونه قسمت چک کردن کد اکتیو رو دور بزنه. مسلما برای این کهر شما احتیاج به بانک اطلاعاتی نداری ، و با یک فرمول و الگوریتم ساده میتونی کد اکتیو رو بدست بیاری و با کد داده شده از طرف کاربر مقایسه کنی.
ولی من به شما پیشنهاد میکنم که به جای این کار اگه نرم افزارت ارزشمنده از قفل سخت افزاری استفاده کنی.
یا حق

e_q_sun
پنج شنبه 11 مهر 1387, 17:38 عصر
با تشكر از دوستان
من خودم هنوز جواب سوال خود را نگرفته ام
چون من مي خواهم با يك تماس تلفني از طرف مشتري كد فعال سازي را به او داده و برنامه از حالت دمو خارج شود .
حال بايد اين اطلاعات را در بانك ذخيره كنم يا در برنامه و چگونه ؟
این بنده خدا یه سوال پرسید ما هم ،همه جور جواب بهش دادیم به جز جوابی که خودش میخواست:قهقهه::قهقهه::لبخند:
آقای mbr485 دوستان با این جور جواب ها میخوان کاری کنن که شما بهترین روش رو برای رسیدن به هدفت انتخاب کنی.
من روشی رو که خودم کار کردم توی پست قبلی نوشتم که البته خوددم هم میدونم سر بسته گفتم
راه هایی که دوستان پیشنهاد کردن راههای خوبی هستن ولی چون شما میخواین با تماس تلفنی کد رو بدین من راهی رو که خودم کار کردم واست مینویسم.
من توی برنامه ای که نوشتم یه سری از امکانات رو مخفی یا غیر فعال کردم.بعد با کد نویسی این مراحل رو انجام میدم.
1)سریال هارد سیستم رو به دست مییارم
2)یه سری عملیات ریاضی(من در آوردی:لبخند:) روی اون کد انجام میدم

به همراه برنامه ای که به مشتری دادم2 فایل هم هست که یکی شماره سریال هارد رو به مشتری نشون میده،طرف اونو یه جوری به دست من میرسونه(SMSو...)منم یه برنامه توی سیستم خودم دارم که همون عملیات ریاضی رو انجام میده.حالا کدی رو که من به دست آوردم بهش میدم.
اون هم با استفاده از فایل دوم کد جدید رو در قسمتی از رجیستری سیو میکنه.
برنامه هم موقع اجرا کد درون رجیستری رو با کدی که خودش ساخته چک میکنه،اگه درست بود که برنامه کامل اجرا میشه،اما اگه اشتباه باشه ...
خودم هم میدونم اگه کسی اسمبلی بلد باشه یا کرک کار کرده باشه خیلی راحت میتونه این برنامه رو باز کنه.من یه مبتدی هستم باید خیلی کار کنم تا بتونم یاد بگیرم چه کار کنم که حداقل ،برنامه هامو هر کسی نتونه کرک کنه

mbr485
سه شنبه 23 مهر 1387, 16:22 عصر
با سلام
خواهش مي كنم يك نفر يك مثال در اين مورد براي من بزنه ؟
خواهش مي كنم ؟

Nima NT
سه شنبه 23 مهر 1387, 16:36 عصر
میتونی تو بانک ذخیره کنی ولی اون موقع باید به پسورد خفن واسه بانک خودت قراربدی .

اصغر (پآچ)
چهارشنبه 24 مهر 1387, 19:52 عصر
سلام دوست من

من فکر می کنم اگه از یه قفل سخت افزاری مثل توکن (Token) استفاده کنی خیلی امنیت بالا میره البته باید از یه قفل سخت افزاری مطمئن استفاده کنی

موفق و موید باشی

Pr0grammer
یک شنبه 28 مهر 1387, 15:53 عصر
امیدوارم این مقاله به دردتون بخوره! :متفکر:
http://barnamenevis.org/forum/showthread.php?p=619819

حمیدرضاصادقیان
دوشنبه 29 مهر 1387, 11:50 صبح
سلام.یکی از مواردی که خیلی خوب و جالبه و میتونی ازش استفاده کنی استفاده از Compiler Directive ها هستش.با استفاده از این امکانات شما میتونی برنامه ات رو جوری کامپایل کنی که قسمتهایی که مربوط به نسخه اصلی هستند اصلا کامپایل نشوند ولی داخل exe هست و مشکلی هم برات پیش نمیاره و فکر نمیکنم بشه کرکش کرد.

Pr0grammer
دوشنبه 29 مهر 1387, 13:37 عصر
یکی از مواردی که خیلی خوب و جالبه و میتونی ازش استفاده کنی استفاده از Compiler Directive ها هستشاین مباحث قبلاً زیاد بحث شده، من قصد ندارم زیاد کشش بدم!
اما این روشی که شما پیشنهاد دادید هم جالبه! ممنون، میشه بفرمائید این Compiler Directiveرو از کجا می تونم بدست بیارم؟!
راستی مقاله ای که گذاشتم! بد بود؟! :متفکر: آخه این همه دانلود شد اما چندان تشکر نشد! :ناراحت:منظورم این نیست که تشکر بزارید، فقط فکر می کنم خوب نبوده که کسی این کارو نکرده!:اشتباه: لطفاً اگه هر نقصی داره خواهشاً بفرمائید. مرسی از همه

V60
دوشنبه 29 مهر 1387, 15:56 عصر
سلام صاحب تاپیک
جواب شما ، (البته نه جواب امنیت نرم افزار )

شما سریال هارد را می خونید (سرچ کن پیدا می کنی)
بعد توی نرم افزارت می نویسی اگر سریال هارد 10 بود حرف b اگر 20 بود حرف c و قص الی هذا ( البته منظورم این نیست که بشینی یکی یکی معادل این ها را بنویسی بلکه منظورم اینه که یک فرمولی در بیاری بر فرض سریال هارد ضربدر 10 بعد 5 تقسیم بر 2 ) این فرمول را هم توی نرم افزارت می ذاری هم یک نسخه اش را خودت داری وقتی مشتری زنگ زد گفت سریال هاردم 10 است تو می زنی تو نرم افزارت و جواب که b هست را بهش می دی و این b را یکجایی توی دیتابیست ذخیره می کنی تا برای دفعات بعدی داشته باشی و هی نخواهد کد فعال سازی را وارد کنه.
گرفتی ؟!؟!؟!؟

حمیدرضاصادقیان
سه شنبه 30 مهر 1387, 07:44 صبح
سلام.ببینید در Compiler Directive ها به طور مثال به کد زیر توجه کنید:


{$ifef Trial}
showmessage('trial');
{$Else}
Showmessage('Original');
{$endif}

حالا در اینجا اگر در منوی projects-properties-directive شما directive trial رو تعریف کنی بعد برنامه رو کامپایل کنی فقط خط اول کامپایل میشه و در سورس قرار میگیره و دستور دوم مثل کامنت میمونه. بعد اگر بدون Trial برنامه رو کامپایل کنید فقط خط دوم کامپایل میشه و خط اول به عنوان کامنت محسوب میشه.

zman123456
سه شنبه 30 مهر 1387, 08:15 صبح
با سلام خدمت اساتید بزرگ
من در مورد سریال در آوردن از سیستم مشتری مشکلی ندارم.برای خودم یه جوری یه سریال درآوردم.ترکیبی از سریال هاست.
حالا مشکل بعدی نحوه فعال سازی است.
یکی از دوستان گفتن تو بانک و یکی دیگه تو رجیستری.ولی بانک که اگه درست نبندی که با enterprise باز میشه و رجیستری هم که monitor داره.
کسی هست که روش های ترکیبی استفاده کرده باشه.
من خودم به نظرم استفاده موازی از رجیستری و یک فایل encrypt شده است.
حالا کسی هست که روی این روش کارکرده باشه؟
بعد حالا فکر کنیم که این کار رو هم کردیم.چه روشی برای فعال سازی نرم افزار پیشنهاد میکنید؟
مثل حق دسترسی دادن عمل کنم یا روش به خصوص خودشو داره؟
با تشکر

V60
سه شنبه 30 مهر 1387, 12:08 عصر
سلام زمان
من گفتم بریز توی بانکت منظورم این نبود که یک فیلدی را از صفر به یک تبدیل کن ! منظورم این بود که دقیقا همان کدی را که به عنوان فعال ساز به کاربر می دی و کاربر یک بار می زند را توی دیتابیست بریز . وقتی دفعه بد برنامه ات اجرا می شه دوباره سریال هارد را بخونه اگر توی اون فیلدی که توی دیتابیست هست کد درسته فعال سازی بود که هیچ برنامه اجرا می شه اگر نبود پیغام بده به همین راحتی اصلا به کلید توی ریجستری هم نیازی نیست خیلی هم امنه اگر کسی هم کد را ببینه به هیچ دردش نمی خوره چون عملا فقط با همان سریال کامپیوتر کار می کنه.
حالا با چه کدی سریال هارد را می گیری ؟ با چه کدی سریال سی پی یو؟ که برای همه کامپیترها هم جواب بده.

Mahmood_M
سه شنبه 30 مهر 1387, 22:12 عصر
اگه 0 باشه برنامه اجرا نشه و فقط فرم فعال سازی نشون داده بشه! اما اگه 1 بود یعنی برنامه رو فعال کرده!
یعنی اگه یکی بیاد اون کلید رو مقدارش رو 1 کنه دیگه همه چیز حل میشه !! ؟

برای ایجاد امنیت در برنامه کارهای بیشتری انجام بشه ، فقط ساخت یک شماره سریال با سریال هارد ( یا ... ) و ذخیره اون اصلا امن نیست ...
بهتره در کنار برنامه نویسی یک مطالعه در مورد مهندسی معکوس هم داشته باشیم ، اینطوری تصمیمات بهتری برای ایجاد امنیت در برنامه گرفته میشه ...

موفق باشی ...

Pr0grammer
سه شنبه 30 مهر 1387, 22:19 عصر
بهتره در کنار برنامه نویسی یک مطالعه در مورد مهندسی معکوس هم داشته باشیم ، اینطوری تصمیمات بهتری برای ایجاد امنیت در برنامه گرفته میشه ...


در مورد مهندسی معکوس می دونم عزیز....
خب شما یه راهی پیشنهاد کن که امن باشه؟! :متفکر:

Pr0grammer
سه شنبه 30 مهر 1387, 22:21 عصر
یعنی اگه یکی بیاد اون کلید رو مقدارش رو 1 کنه دیگه همه چیز حل میشه !! ؟

کسی که مهندسی معکوس بلده به نظرت، می یاد به من و شما پروژه سفارش بده؟! یعنی خودش نمی تونه بنویسه؟!

Mahmood_M
سه شنبه 30 مهر 1387, 22:29 عصر
کسی که مهندسی معکوس بلده به نظرت، می یاد به من و شما پروژه سفارش بده؟! یعنی خودش نمی تونه بنویسه؟!
مفهوم حرفت چیه ؟!!
من میگم من برنامه نویس بهتره که برم روی مهندسی معکوس هم مطالعه کنم تا کمی با روشهای نفوذ به نرم افزار آشنا بشم ، در این صورت می تونم برنامه خودم رو با روشهای بهینه تری ایمن کنم ...
درضمن ، اگه منظورت اینه که اگه یکی کلید رجیستری رو تغییر بده مهندسی معکوس کرده ، باید بگم که داری اشتباه می کنی و ...

درضمن ک.ر.ک کردن نیاز نداره که تو حتما برنامه نویس باشی ، آشنایی کمی با Assembly و نرم افزارهای مربوط به مهندسی معکوس و آشنایی کمی با ساختار برنامه ها یک ک.ر.ک.ر رو به هدفش میرسونه ...

درضمن ( 2 ) همه پروژه ها که شفارسی نیستن ، نرم افزارهای عمومی هم نیاز دارن که امنیت خوبی داشته باشن ...

پ.ن : البته مهندسی معکوس دقیقا ربطی به ک.ر.ک و فعالیتهای مثل اون نداره ، و موضوع دیگه ای هست ...

موفق باشی ...

Pr0grammer
سه شنبه 30 مهر 1387, 22:35 عصر
مفهوم حرفت چیه ؟!!
من میگم من برنامه نویس بهتره که برم روی مهندسی معکوس هم مطالعه کنم تا کمی با روشهای نفوذ به نرم افزار آشنا بشم ، در این صورت می تونم برنامه خودم رو با روشهای بهینه تری ایمن کنم ...
درضمن ، اگه منظورت اینه که اگه یکی کلید رجیستری رو تغییر بده مهندسی معکوس کرده ، باید بگم که داری اشتباه می کنی و ...

درضمن ک.ر.ک کردن نیاز نداره که تو حتما برنامه نویس باشی ، آشنایی کمی با Assembly و نرم افزارهای مربوط به مهندسی معکوس و آشنایی کمی با ساختار برنامه ها یک ک.ر.ک.ر رو به هدفش میرسونه ...

درضمن ( 2 ) همه پروژه ها که شفارسی نیستن ، نرم افزارهای عمومی هم نیاز دارن که امنیت خوبی داشته باشن ...

موفق باشی ...

مرسی...
میشه یه راه حلی خودت پیشنهاد کنی؟! :متفکر: خب، اگه رجیستری کار صحیحی نیست، پس یه راهی باید باشه دیگه!
کلاً نظرت درباره گرفتن شماره هارد دیسک و کد فعال سازی تلفنی چیه؟!

saed2006
سه شنبه 30 مهر 1387, 22:50 عصر
دوست عزیز جناب mahmod به نظر من شما راه حل خودتون رو ارائه کنید خیلی بهتر از اینه که ایراد های... بگیرین
دوست گرامی شما چه راه حلی پیشنهاد میکنید

Mahmood_M
سه شنبه 30 مهر 1387, 22:57 عصر
مرسی...
میشه یه راه حلی خودت پیشنهاد کنی؟! خب، اگه رجیستری کار صحیحی نیست، پس یه راهی باید باشه دیگه!
کلاً نظرت درباره گرفتن شماره هارد دیسک و کد فعال سازی تلفنی چیه؟!
رجیستری به تنهایی مکان امنی نیست ، مگر اینکه اطلاعاتت رو به صورت یک رشته کد شده ذخیره کنی ، اما اکثر Encode ها روشهای زیادی برای Decode دارن ( یعنی میشه رشته اصلی رو بدست آورد )
اما گرفتن سریال هارد الآن شاید رایج ترین کار باشه ( البته بیشتر برای شرکتهای ایرانی ) ، موضوع مهم اینه که سریال ساخته شده چطور نگهداری بشه ، به نظر من باید ابتدا سعی بشه که سریال ساخته شده در دسترسی نباشه ، مثلا استفاده مستقیم از متن سریال ساخته شده در کدهای برنامه اصلا کار درستی نیست ! ، فرض کن کد زیر رو توی برنامه نوشتی :

if Serial = '1234' then
...
فرض کن با کد بالا چک می کنی که شماره سریال برنامه اگه 1234 بود برنامه بالا بیاد ، حالا این 1234 یک رشته هست که توی سورس برنامت وجود داره و با برنامه هایی مثل OllyDBG میشه به راحتی اون رو پیدا کرد ( البته این کار برای یک ک.ر.ک.ر راحته ، حتی اگه تازه کار باشه ) ، اگه کسی با دستورات Assembly آشنا باشه می تونه سورس برنامه رو دستکاری کنه و با یه Jmp از روی این شرطی که گذاشتی بپره ...

درواقع رشته ای که به عنوان سریال در برنامه هست ، به ک.ر.ک.ر کمک می کنه که شرط مربوط به سریالت رو پیدا کنه ...
البته کسی این کار رو نخواهد کرد ( استفاده از متن سریال برنامه در سورس ) ولی کدهای اینچنینی خطرناک هستن ...

من اطلاعات زیادی در مورد امنیت نرم افزار و روشهای نفوذ به اون ندارم ، بهتره توی گوگل دنبال راه حلهای این مشکل بگردی ...
اما همیشه معتقد بودم که اگه از روشهای ابتکاری جدید استفاده بشه و از روشهای متداول استفاده نشه بهتر هست ، همچنین بهتره از ترکیب چند روش استفاده بشه ...
سایت زیر هم می تونه مفید باشه :
http://www.salarsoft.somee.com/magaleh/m_lock_making.htm

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

موفق باشی ...

vcldeveloper
چهارشنبه 01 آبان 1387, 07:17 صبح
یکی از مواردی که خیلی خوب و جالبه و میتونی ازش استفاده کنی استفاده از Compiler Directive ها هستش.با استفاده از این امکانات شما میتونی برنامه ات رو جوری کامپایل کنی که قسمتهایی که مربوط به نسخه اصلی هستند اصلا کامپایل نشوند ولی داخل exe هست و مشکلی هم برات پیش نمیاره و فکر نمیکنم بشه کرکش کرد.وقتی از Compiler Directive استفاده می کنید، یعنی دارید به کامپایلر میگید چی را کامپایل کنه، و چی را کامپایل نکنه. وقتی چیزی کامپایل نمیشه، یعنی اصلا در EXE وجود نداره، نه اینکه در EXE هست، ولی اجرا نمیشه! علتی هم که از این روش استفاده می کنند این هست که؛ اگر کدی در EXE موجود باشه، ولی محدود شده باشه، بالاخره یکی پیدا میشه که بتونه محدودیت اون رو برداره و برنامه را با قابلیت کامل ارائه کنه، ولی اگر اون قابلیت اصلا کامپایل نشده باشه، چیزی در EXE نیست که بخواد کرک بشه. البته کاربرد Compiler Directive ها صرفا مربوط به امنیت نرم افزار نیست، و در سورس کدها از آنها به منظورهای مختلفی استفاده می شود.

حمیدرضاصادقیان
چهارشنبه 01 آبان 1387, 07:27 صبح
وقتی از Compiler Directive استفاده می کنید، یعنی دارید به کامپایلر میگید چی را کامپایل کنه، و چی را کامپایل نکنه. وقتی چیزی کامپایل نمیشه، یعنی اصلا در EXE وجود نداره، نه اینکه در EXE هست، ولی اجرا نمیشه! علتی هم که از این روش استفاده می کنند این هست که؛ اگر کدی در EXE موجود باشه، ولی محدود شده باشه، بالاخره یکی پیدا میشه که بتونه محدودیت اون رو برداره و برنامه را با قابلیت کامل ارائه کنه، ولی اگر اون قابلیت اصلا کامپایل نشده باشه، چیزی در EXE نیست که بخواد کرک بشه. البته کاربرد Compiler Directive ها صرفا مربوط به امنیت نرم افزار نیست، و در سورس کدها از آنها به منظورهای مختلفی استفاده می شود.
سلام.حق با شماست.منظور من هم دقیقا همین بود.اشتباه تایپی شد.حوصله اصلاحش نبود:بامزه:

zman123456
چهارشنبه 01 آبان 1387, 09:48 صبح
رجیستری به تنهایی مکان امنی نیست ، مگر اینکه اطلاعاتت رو به صورت یک رشته کد شده ذخیره کنی ، اما اکثر Encode ها روشهای زیادی برای Decode دارن ( یعنی میشه رشته اصلی رو بدست آورد )
اما گرفتن سریال هارد الآن شاید رایج ترین کار باشه ( البته بیشتر برای شرکتهای ایرانی ) ، موضوع مهم اینه که سریال ساخته شده چطور نگهداری بشه ، به نظر من باید ابتدا سعی بشه که سریال ساخته شده در دسترسی نباشه ، مثلا استفاده مستقیم از متن سریال ساخته شده در کدهای برنامه اصلا کار درستی نیست ! ، فرض کن کد زیر رو توی برنامه نوشتی :

if Serial = '1234' then
...
فرض کن با کد بالا چک می کنی که شماره سریال برنامه اگه 1234 بود برنامه بالا بیاد ، حالا این 1234 یک رشته هست که توی سورس برنامت وجود داره و با برنامه هایی مثل OllyDBG میشه به راحتی اون رو پیدا کرد ( البته این کار برای یک ک.ر.ک.ر راحته ، حتی اگه تازه کار باشه ) ، اگه کسی با دستورات Assembly آشنا باشه می تونه سورس برنامه رو دستکاری کنه و با یه Jmp از روی این شرطی که گذاشتی بپره ...

درواقع رشته ای که به عنوان سریال در برنامه هست ، به ک.ر.ک.ر کمک می کنه که شرط مربوط به سریالت رو پیدا کنه ...
البته کسی این کار رو نخواهد کرد ( استفاده از متن سریال برنامه در سورس ) ولی کدهای اینچنینی خطرناک هستن ...

من اطلاعات زیادی در مورد امنیت نرم افزار و روشهای نفوذ به اون ندارم ، بهتره توی گوگل دنبال راه حلهای این مشکل بگردی ...
اما همیشه معتقد بودم که اگه از روشهای ابتکاری جدید استفاده بشه و از روشهای متداول استفاده نشه بهتر هست ، همچنین بهتره از ترکیب چند روش استفاده بشه ...
سایت زیر هم می تونه مفید باشه :
http://www.salarsoft.somee.com/magaleh/m_lock_making.htm

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

موفق باشی ...
از همه دوستان که اظهار نظر کردن ممنون.اگه میشه این بحث رو ادامه بدیم تا به یه جای خوبش برسه.
همونطور که تو پست قبلی هم گفتم به نظرم میاد که ترکیبی از روشها مثلا کلیدهایی در رجیستری و فایل کنار exe به صورت Encrypt شده و حتی بانک میتونه کمی کار رو برای ک.ر.ک.ر ها سخت کنه.
حالا بیاییم روی این روش ترکیبی بررسی انجام بدیم.
با تشکر

Pr0grammer
چهارشنبه 01 آبان 1387, 10:45 صبح
حالا بیاییم روی این روش ترکیبی بررسی انجام بدیم.
به نظر من هم اگه بشه این بحث رو ادامه داد تا به یه روش مناسب برسی، این طوری خیلی خوب میشه!

به نظر خوده من، روشی که در مقاله و عکسی که در پست 27 گذاشتم خوبه اما نه به تنهایی!!! و این مهم رو به کمک آقا محمود و بقیه دوستان متوجه شدم! نظر آقای صادقیان هم خیلی خوب بود؟! لطفاً کسایی که چیزی یا نکته ای به نظرشون میرسه یا Sample ای دارند، دریغ نکنند تا به یه نتیجه خوب برسیم! (البته شاید)
این بحث ها زیاد توی سایت شده اما اکثراً به نتیجه خاصی نرسیده! حداقل این یکی برسه!

از همه ممنونم.

yalameh
دوشنبه 06 آبان 1387, 14:23 عصر
دوستانی که تجربه کاری دارند لطفا راهنمائی کنند . موضوع خیلی جالبیه .

yalameh
دوشنبه 06 آبان 1387, 14:58 عصر
لینک زیر مطالب مفیدی را ذکر کرده ، می تونید مطالعه کنید :

http://www.scalabium.com/articles/protection.htm

qazwsx
یک شنبه 12 آبان 1387, 15:53 عصر
آقا یه سوال داشتم حالا ما یه قفل درست کردیم و دادیم بیرون خوب یه برنامه رو میخرن بعد رو سیستم نصب میکنن و زنگ میزنن کد میدن و یه کد فعال سازی نیگیرن خوب حالا اگ اون برنامه رو رو یه سیستم دیگه نصب کنن با همون کد فعال میشه خوب این یعنی قفل هیچی دیگه

Pr0grammer
یک شنبه 12 آبان 1387, 16:10 عصر
آقا یه سوال داشتم حالا ما یه قفل درست کردیم و دادیم بیرون خوب یه برنامه رو میخرن بعد رو سیستم نصب میکنن و زنگ میزنن کد میدن و یه کد فعال سازی نیگیرن خوب حالا اگ اون برنامه رو رو یه سیستم دیگه نصب کنن با همون کد فعال میشه خوب این یعنی قفل هیچی دیگه

نه! این طور نیست! چون شماه سریال هارد هر PC با PC دیگه فرق می کنه! در نتیجه کد فعال سازی اولیه هم در یه PC با PC دیگه فرق خواهد کرد، و در مجموع کد فعال سازی هم در هر سیستم فرق می کنه! :لبخند:

بهتره این تاپیک رو نگاه کنید : http://barnamenevis.org/forum/showthread.php?t=128216

موفق باشید

MOJTABAATEFEH
چهارشنبه 17 اسفند 1390, 22:29 عصر
ذخیره در بانک در نرم افزارهای تحت شبکه محدودیت ایجاد میکنه چون دیگه به راحتی نمیتونید کلاینت اضافه کنید

AliReza Vafakhah
چهارشنبه 17 اسفند 1390, 23:57 عصر
امدم این تاپیک رو باز کردم و دیدم شما دوست عزیزMOJTABAATEFEH (http://barnamenevis.org/member.php?47660-MOJTABAATEFEH) تاپیک را بعد از 3 سال بالا آوردید ! اونهم بدون سوال و هیچی !!!