PDA

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



zman123456
پنج شنبه 02 آبان 1387, 11:08 صبح
با سلام
این مطلب ادارمه "کد فعال سازی سیستم" می باشد که به علت وجود دو موضوع در یک موضوع حذف شد.
مطلب این بود:
سوال:
کد فعال سازی بر اساس کد هارد یا cpu یا هر چیز دیگه ای و حتی ترکیبی از سریال ها ساخته شده و حالا می خواهیم نرم افزار را فعال کنیم.نحوه فعال سازی به چه صورت انجام بگیره؟
اساتید هر کدام مطلبی رو فرمودند:
1- ثبت در رجیستری تا کاربر احتیاج به وارد کردن هر دفعه نداشته باشه.
- به علت وجود نرم افزارهای Monitoring رجیستری از امنیت پایینی برخوردار است.
2- ثبت در بانک تا کاربر احتیاج به وارد کردن هر دفعه نداشته باشه.
- با پیدا کردن جدول مربوطه و با استفاده از نرم افزار Profile این هم از امنیت بالایی برخوردار نیست.
3- کد کردن کد فعال سازی و استفاده از یکی روشهای فوق.
- باز بد نیست ولی می تونیم روش بیشتر کار کنیم.

نظر بنده و ارائه پیشنهاد و راهکار جهت بیان یک مطلب راهبردی:
بهتره از ترکیب روشها استفاده بشه.مثلا کد فعال سازی بعد از Encrypt شدن در رجیستری و فایل کدگذای شده و ... قرار بگیره.
حالا به هر روشی میشه اینها رو با هم ادغام کرد.یعنی منظور من این نیست که همین کد فعال سازی رو هم تو رجیستری بریزیم هم تو فایل هم تو بانک.
یعنی یه بلایی سرش بیاریم و بعد چند قسمتش کنیم و بعد بریزیمش اینجاها.

حالا لطفا نظر بدید.
با تشکر

Pr0grammer
پنج شنبه 02 آبان 1387, 11:21 صبح
نظر من این بود :


http://arianevisan.persiangig.ir/other/actvpro.jpg

* البته من در این مثال به دلخواه فرمول رو تعیین کردم، شما می تونید کاراکتر های ثابت رو تغییر بدید و جای بقیه کاراکتر ها رو به دلخواه خودتون عوض کنید!

* فرمول محاسبه کد فعال سازی نهایی رو خودتون و به دلخواه تعیین می کنید. و واسه محاسبه کد نهیی هر سیستم می تونید یه برنامه بنویسید ه این کار رو انجام بده....

من کلاً برای این روشم یه مثلا با VB و یه مثال با Delphi دارم، اگه کسی خواست بگه تا براش بزارم!


* البته دقت کنید که فرمولی که برای بدست آوردن کد قفلتون تعیین می کنید، خیلی مهمه و مواظب باشید فراموش نکیند! مثلاً اگه بخوام بر اساس فرمول بالا برنامه ای که نوشتم رو، روی یه سیستم دیگه با شماره سریال S08EJ1NL764387 اجرا کنم ، کد نهایی فعال سازیش میشه: A0J-EQS-NLR-714 و اگه غیر از این باشه اشتباهه!


این روش رو میشه به این شکل استفاده کرد :


http://arianevisan.persiangig.ir/other/actform.jpg


اما !!!!!!!!!!!
حالا این سوال مطرح میشه که برنامه موقع اجرا از کجا تشخیص بده که برنامه فعال شده یا نه!؟
* استفاده از رجیستری برای این کار بعیده! مثلاً اگه بخوایم یه مقدار Tru و False یا یک مقدار 0 و 1 بزاریم و موقع اجرا چک کنیم)
* ذخیره و چک کردن توی بانک و Table هم اصلاً حرفشو نزن :لبخند: !!!

لطفاً دوستان هم همکاری کنند. :چشمک:

Pr0grammer
جمعه 03 آبان 1387, 13:37 عصر
معلوم نیست چرا کسی همکاری نمی کنه :افسرده:

خب من برای این سوالم که گفته بود :


حالا این سوال مطرح میشه که برنامه موقع اجرا از کجا تشخیص بده که برنامه فعال شده یا نه!؟

یه راه حلی پیدا کردم! دوستان و اساتید خواهشاً کیفیتش رو ارزیابی کنند (چند روز دیگه باید پروژه رو تحویل بدم:اشتباه:) :

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

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

یعنی اگه یکی بیاد اون کلید رو مقدارش رو 1 کنه دیگه همه چیز حل میشه !! ؟
راستم می گفت! اما حالا اگه یه String Value بسازیم با یه مقدار 7 یا 8 کارکتری که مثلاً این طوری باشه : 10011011 (این دیگه بستگی به خودتون داره که چند کارکتری باشه یا ترکیبش چی باشه) مثلاً من اینو گذاشتم واسه وقتی که برنامه فعال نشده، و بعد از فعال سازی دوباره یه مقدار دلخواه واسش تعیین می کنم مثل : 11010110 !!!! :لبخند:
موقع اجرای برنامه اول چک می کنم که مقدار اون String Value چی هست؟! اگه همونی بود که من واسه فعال کردن برنامه تعیین کردم که بره مرحله بعد (مرحله سخت افزاری) اگه نه که خب مسلماً باید فرم فعال سازی نرم افزاری (عکس بالا- پست من) نشون داده بشه!

به نظرم خیلی مشکله یکی پیدا بکنه که من توی رجیستری برای فعال سازی برنامه ام مقدار 11010110 رو تعیین کردم! :گیج:

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


نظرتون چیه ؟! :متفکر:

Pr0grammer
جمعه 03 آبان 1387, 16:58 عصر
دوستان در این تاپیک (http://barnamenevis.org/forum/showthread.php?t=719) ، Delphi Assistant گفته :


همونطور که میدونی کدهای هر زبانی مانند Delphi و Visual C پس از کامپایل تبدیل به کد باینری میشه. فرض کن تو یه برنامه‌نویس مظلوم و من هم یک Cracker ظالم. فرض کن تو برنامه‌ات قفل رو اینجوری چک کرده باشی:
کد:

If hardlock.connection=true then
// run rest of code
else
// do something needed to prevent illegal useخوب این کد تو برنامه شما تبدیل میشه به چیزی مانند (کد زیر بصورت هگز نمایش داده شده است) :
کد:
00 84 62 75 27 04 95 99
خوب حالا تنها کاری که بنده باید انجام بدم اینه که debugger رو اجرا کرده و با چند تا F8 زدن برسم به اون محل فوق. بعد رو اون شرط If شما که اکنون تبدیل به یک Jump ساده شده یک redirect کوچولو میذارم. کل این فرآیند برای من در مجموع 5 دقیقه هم وقت نمیگیره. اما نتیجه: قفل بی قفل. و اینجا مقصر کیه؟ جنابعالی !!!!!!!!!!
اما چرا جنابعالی حقته که قفلت شکسته بشه؟ چون احتمال شکسته شدن قفل تو برنامه‌ات رو در نظر نگرفته‌ای.این فقط یه سرچشمه اتفاقی بود که ممکنه برات بیفته و باید بگم ساده‌ترییییییییییییین روش ممکن هم بود!!!!!!!!!
پس حالا باید چکار کرد؟ اگه میدونی که هیچ. اگه نمیدونی بگو تا بگمپس، کلاً راهی که من دارم می رم اشتباهه!؟ :گریه:

zman123456
یک شنبه 05 آبان 1387, 13:08 عصر
رضا جان
کلا در سورس برنامه هر چیزی رو به صورت string بخوای چک کنید با debug کردن میشه ازش سر در آورد.
باید یه روشی استفاده بشه که با یک رشته ثابت مقایسه نشه تا حداقل کار برای ک.ر.ک.ر ها سخت بشه.
در مورد قفل سخت افزاری هم:
یه دوستی دارم میگه "نرم افزارتو بیار تا 10 دقیقه ای بازش کنم"
حالا اون چیزی که ایشون میگن.
یه کمی رو قفل های سخت افزاری کار کردم دیدم خب یه چیزی مثل رم دارم که شما باید به سازنده بگید که فلان کد رو توش بریزه.حالا از درصد سوختن قفل ها بگذریم این یه چیزی مثل همون رشته شما میشه.
البته من زیاد روی قفل های سخت افزاری کار نکردم.ولی اگر میشه باید ترکیبی عمل بشه.
روش شما که میگید اول نرم افزاری بعد سخت افزاری باز خوب نیست.اینها رو هم زمان چک کنید بهتره.
من دارم باز فکر میکنم.نتیجه رو مینویسم.

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

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

ice007
سه شنبه 07 آبان 1387, 09:04 صبح
لطفا اگر میشه کد مربوط به دست اوردن سزیال هارد رو قرار بدید ما هم استفاده کنیم (ایا در ویستا تست شده اند؟). من هم دارم روی این موضوع کار می کنم ولی مشکلی که داردم اینه که کدهای مربوط به بدست اوردن سریال هارد در ویستا کار نمی کنند و سریال بقیه قطعات هم تا جایی که من تست کردم یونیک نیستند . اگر پیشنهادی دارید لطفا ارائه کنید، خوشحال میشم کمکتون کنم

Pr0grammer
یک شنبه 12 آبان 1387, 16:13 عصر
لطفا اگر میشه کد مربوط به دست اوردن سزیال هارد رو قرار بدید ما هم استفاده کنیم (ایا در ویستا تست شده اند؟). من هم دارم روی این موضوع کار می کنم ولی مشکلی که داردم اینه که کدهای مربوط به بدست اوردن سریال هارد در ویستا کار نمی کنند و سریال بقیه قطعات هم تا جایی که من تست کردم یونیک نیستند . اگر پیشنهادی دارید لطفا ارائه کنید، خوشحال میشم کمکتون کنم

بهتر بود سوالتون رو در یه تاپیک دیگه مطرح می کردید! این طوری زودتر به نتیجه می رسیدید!