PDA

View Full Version : گفتگو: قفل نرم افزاری یا سخت افزاری



mahmood_s
یک شنبه 23 آبان 1389, 09:03 صبح
با سلام خدمت دوستان

راستش به نظر خودم دیدم جای یک مرجع کامل در مورد ساخت قفل های نرم افزاری و سخت افزاری در این انجمن کمه . به همین دلیل این تاپیک رو شروع کردم تا با کمک هم , هم سطح اطلاعاتی مون بالا بره و همه دوستانی که در این مورد سوالی دارند یه سری به اینجا بزنن

mahmood_s
یک شنبه 23 آبان 1389, 09:11 صبح
اول از همه جلوگیری از نفوذ غیره ممکنه ولی سرعت نفوذ و کرک رو کم میکنه و برنامه ما مدت بیشتری تو بازار می مونه


و حال

کدام بهتر و مطمئن تر است ؟ قفل سخت افزاری یا نرم افزاری


مطمئنا مثل دیگر سوالات این سوال هم جواب کلیشه ای خود را دارد .

هر روش مزایا و معایب خواست خود را دارد .

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

پس حال چه باید کرد ؟!

خوب از حالا به بعد دوستان باید بیاین وسط میدون

هر کی هر نظری داره هر چند غیره ممکن بگه تا اساتید روش بحث کنن تا روش های امن بدست بیاد

ضمنا مثالهای عملی هم در راه است

mahmood_s
یک شنبه 23 آبان 1389, 09:16 صبح
اولین روش نرم افزاری :

1- بدست آوردن سریال قطعات سخت افزاری ( سعی کنید کمتر از کامپوننت استفاده کنید )
2- ایجاد فایل در سیستم کاربر
3-تولید کدهای تصادفی
4-کد و دیکد کردن اطلاعات با الگوریتم های منحصر به فرد
.
.
.

vbhamed
یک شنبه 23 آبان 1389, 11:00 صبح
سلام

به نظر من تركيب سخت افزاري و نرم افزاري
به اضافه روشهايي كه براي پروتكت كردن فايل اجرايي و جلوگيري از دي پروتكت موجوده

mahmood_s
یک شنبه 23 آبان 1389, 11:56 صبح
سلام

به نظر من تركيب سخت افزاري و نرم افزاري
به اضافه روشهايي كه براي پروتكت كردن فايل اجرايي و جلوگيري از دي پروتكت موجوده


ممنون از حسن توجه تون

می خوایم با عملی کردن این تاپیک به پربار تر بودنش کمک کنیم

kooroush
یک شنبه 23 آبان 1389, 18:13 عصر
قفل هایی نرم افزاری که کد هارد یا سی پی یو رو می خونه و اون رو تو یک الگوریتمی میزاره چه جوریه !!!پمنظورم قفل تلفنی هستش (قفلی که طرف تماس می گره یک کدی رو می خونه شما اون رو تبدیل می کنی به یک کد دیگه برای زرف ی خونی توی برنامه وارد میکنه برنامه واسه همیشه فعال می شه )
امنیت اینجور کدها چه جوریاست ؟؟

vahid_visualbasic
دوشنبه 24 آبان 1389, 22:46 عصر
اینروزها به خاطر تنوع هاردها کمتر دیدم برنامه ای سریال هارد رو بگیره اکثرا از سریال یکی از درایو های جاری استفاده می کنن که من هم خودم از همین روش استفاده میکنم که یکی از معایبش اینه که با فرمت کردن درایو مورد نظر سریال درایو هم عوض خواهد شد

ASKaffash
سه شنبه 25 آبان 1389, 08:13 صبح
سلام
در روش قفل تلفنی :
یک رشته که از ترکیب MainBoard و Hard و کارت شبکه و ... (میتواند مدل + تاریخ ساخت + سریال +...) باشد ایجاد شده و این رشته طولانی براساس اسکی / کد یونیک و .... با یک تابع ریاضی پیچیده (تابع پوششی نه یک به یک)
مثلا عددی long را ایجاد کرده و کاربر باید تلفنی این عدد را ارائه دهد فروشنده با یک تابع ریاضی پیچیده و پوششی دیگر عددی را براساس عدد اول به خریدار ارائه میدهد ونرم افزار باید همیشه برابری مقادیر محاسبه شده را با عدد ورودی مقایسه کرده و عکس العمل لازم را انجام دهد در این روشها مراقبت از الگوریتم و توابع ریاضی مورد استفاده بسیار مهم است

mahmood_s
سه شنبه 25 آبان 1389, 14:54 عصر
طبق گفته دوستان ميشه با بدست آوردن سريال قطعات سخت افزاري يك كد ايجاد كرد

ولي من علاوه بر روش بالا سعي مي كنم يك سري فايل هم در سيستم مشتري ايجاد كنم تا شايد تحمل نرم افزار رو در برابر كرك شدن كمي بالاتر ببرم

ASKaffash
یک شنبه 30 آبان 1389, 11:36 صبح
سلام
برای جلوگیری از Patch شدن یک Hash از EXE با یک الگوریتم پیچیده تهیه و کنار EXE قرار میدهیم و برنامه ابتدای اجرا مقدار hash را مقایسه کرده وعکس العمل مورد نیاز را انجام میدهد

scarce
دوشنبه 29 فروردین 1390, 22:18 عصر
سلام دوستان عزیز چرا تایپیک رو بیهوده رها می کنید.!!
برای من جالب بود روش هایی که ذکر کردید بعضی هاش بدردم خورد

من یه چند وقتی هست روی قفل گذاری روی برنامه کار می کنم

البته از هیچ پروتکتری استفاده نمی کنم

من سعی کردم بیشتر کد ها رو طوری طراحی کنم به نظر ساده بیاد ولی در باطن بسیار پیچیده است.

* قفل گذاری بر روی یک نرم افزار این نیست که یک الگوریتم طراحی کنیم ( مثل ترکیب کد سی پی یو و...- قفل تلفنی ) و بعد با چند دستور شرطی و پروتکتور ازش محافظت کنیم!!

1_ شما به عنوان یک برنامه نویس باید دستورهای چک کردن سریال را در چند ماژول متفاوت با روش های متفاوت کد نویسی کنید .

2_ هر چه تعداد این ماژول ها بیشتر باشد وقت کرکر بیشتر گرفته می شود و کرکر حوصلش سر میره

3_ به گفته یکی از دوستان عزیزم (که کرکر ماهری هم هست) : یک برنامه نویس باید حتی زمانی که کاربر ماوس رو تکان میده سریال رو چک کنه

4_ سعی کنید قبل از اینکه قفلی طراحی کنید کمی با نرم افزار های دیباگر به صورت متوسط کار کنید و ببینید چگونه کار می کنند

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

این یک بازی ناجوانمردانه هست چون دو طرف برابر نیستن یک برنامه نویس و یاشاید 1000 تا برنامه نویس در مقابل ؟ کرکر ؟

ولی یادتون باشه فقط کاری کنید که حوصله کرکر سر بره از کد های شرطی دروغین استفاده کنیدو..

aminghaderi
دوشنبه 26 دی 1390, 02:24 صبح
تاپیک خوبی هست ولی خود دوستان همون اول حرف جالبی زدند که می فرمایند قفل سخت افزاری رو خودما باید بنویسیم و اگر از بازار تهیه کنیم که دیگر قفل نیست؟!
خوب برای نرم افزار هم به همین صورت هست ، من نوعی که یه برنامه نویسی هستم که یه نرم افزار مثلا حساب داری دادم بازار و قفل خوبی هم بعد از چند ماه فکر کردن اعضا طراحی کردیم که نمی یام توی تالار برنامه نویس الگریتمش رو بگم چون امنیتش از بین می رود؟! (برای مثال عرض کردم والا بنده برنامه نویس وب هستم)
به نظر من بهترین قفل ، قفلی هست که جایی فاش نشود و فقط توسط یک نفر طراحی شود و بقیه تیم نرم افزاری اون رو چک کنند.

موفق باشید.

mrbm_2007
شنبه 29 بهمن 1390, 04:55 صبح
من یه سوالی دارم
وقتی از قفل سخت افزاری استفاده می شه ممکنه یکی بیاد برنامه رو کرک کنه و یه جوری کد مربوط به قفل رو حذف کنه اونوقت مزیت قفل سخت افزاری نسبت به نرم افزاری چیه؟ یعنی با کرک نرم افزاری قفل سخت افزاری کرک میشه!
در ضمن بهترین راه برای ساخت قفل مناسب شناخت درست راههای کرک کردنه
اگر کسی اطلاعاتی داره لطفا توضیح بده، کرکر ها معمولا چجوری یه برنامه رو کرک می کنن؟
- کد برنامه رو تغییر می دن (مثلا دی کمپایل کنن و تغییرات را اعمال کنن و بعد کمپایل کنن)؟
- توی مسیر های برنامه تغییر ایجاد می کنن ( مثلا شرط چک کردن قفل رو دور بزنن)؟
- فایل های جانبی رو جایگزین می کنن (مثلا یه dll برای بررسی قفل هست اونو دوباره خودشون بسازن و جایگزین کنن)؟
- فرآیند قفل گذاری رو کشف می کنن و همون رو تقلید می کنن (مثلا فایل ها یا اطلاعات درون ریجستری)؟
- کد مربوط به قفل رو پیدا می کنن و خودشون سریال نامبر تولید می کنن؟
و شاید هزاران راه دیگه

علیرضا حسن زاده
شنبه 29 بهمن 1390, 08:54 صبح
وقتی از قفل سخت افزاری استفاده می شه ممکنه یکی بیاد برنامه رو کرک کنه و یه جوری کد مربوط به قفل رو حذف کنه اونوقت مزیت قفل سخت افزاری نسبت به نرم افزاری چیه؟ یعنی با کرک نرم افزاری قفل سخت افزاری کرک میشه!
وقتی مقداری از کد برنامه یا هر اطلاعات دیگری در قفل باشه با حذف کد چک کردن قفل مشکل برنامه حل نمیشه و همچنان کار نخواهد کرد
موردی که فرمودین برای قفل های خیلی ساده هست الان دیگه اکثر قفل های سخت افزاری حافظه دارن و میشه اطلاعات مختلفی از کدهای برنامه گرفته تا یوزر& پسورد دیتابیس رو توش نگه داری کرد
البته منکر این هم نیستم که با استفاده از این روشها دیگه امکان کرک برنامه از بین بره و راه های زیادی از جمله شبیه سازی وجود داره اینارو فقز به خاطر مقایسه شما گفتم که تفاوت نحوه کار رو ببینیم

mrbm_2007
شنبه 29 بهمن 1390, 09:24 صبح
وقتی مقداری از کد برنامه یا هر اطلاعات دیگری در قفل باشه با حذف کد چک کردن قفل مشکل برنامه حل نمیشه و همچنان کار نخواهد کرد
موردی که فرمودین برای قفل های خیلی ساده هست الان دیگه اکثر قفل های سخت افزاری حافظه دارن و میشه اطلاعات مختلفی از کدهای برنامه گرفته تا یوزر& پسورد دیتابیس رو توش نگه داری کرد
البته منکر این هم نیستم که با استفاده از این روشها دیگه امکان کرک برنامه از بین بره و راه های زیادی از جمله شبیه سازی وجود داره اینارو فقز به خاطر مقایسه شما گفتم که تفاوت نحوه کار رو ببینیم

ممنون به نکته ی جالبی اشاره کردید
راستی در مورد روش های کرک کردن اطلاعی ندارید؟

Mousavmousab
سه شنبه 31 مرداد 1391, 14:43 عصر
سلام
دوستان هم اشاره کردند ولی من سعی می کنم شفاف تر بگم.
ما زمانی می تونیم یک قفل امن طراحی کنیم که واقعاٌ بدونیم برنامه های کرک که به کرکر کمک می کنند که برنامه های ما را دور بزنند ، چه اطلاعاتی را به دست کرکرها می دهند؟ باز اگر بخوام ساده تر بگم یعنی قبل از اینکه ما سعی در ساخت قفلی داشته باشیم ( چه سخت افزاری / چه نرم افزاری) باید بدونیم که اساس کار های برنامه کرکر چیست؟(به عبارتی کرکر باشیم) یک کرکر که بدون برنامه نمی تونن کار خاصی انجام بدن اونا توسط یک سری برنامه ها قفل ها را باز می کنند. اون موقع دیگه دستشون برای ما باز میشه و ما میزان امنیت قفل خودمون را بسته به قدرت برنامه نویسیمان بالا می بریم.
ما تا اطلاعاتی راجع به دشمنانمان نداشته باشیم نمی تونیم به اونا حمله کنیم و در نتیجه موفق نمیشیم. پس جمع اوری اطلاعات در مورد برنامه های کرکر اولین قدم در جلوگیری نابودی نرم افزار هایی است که با جان و دل می نویسیم. ضمناٌ یادمان نرود که در این آب و خاک ، خودمان باید از حق خودمان دفاع کنیم. به امید کسی یا شخصی و با اما و اگر گفتن ها چیزی حاصل نخواهد شد.

aryasoft2872
یک شنبه 24 دی 1391, 02:27 صبح
سلام دوستان عزیز چرا تایپیک رو بیهوده رها می کنید.!!
برای من جالب بود روش هایی که ذکر کردید بعضی هاش بدردم خورد

من یه چند وقتی هست روی قفل گذاری روی برنامه کار می کنم

البته از هیچ پروتکتری استفاده نمی کنم

من سعی کردم بیشتر کد ها رو طوری طراحی کنم به نظر ساده بیاد ولی در باطن بسیار پیچیده است.

* قفل گذاری بر روی یک نرم افزار این نیست که یک الگوریتم طراحی کنیم ( مثل ترکیب کد سی پی یو و...- قفل تلفنی ) و بعد با چند دستور شرطی و پروتکتور ازش محافظت کنیم!!

1_ شما به عنوان یک برنامه نویس باید دستورهای چک کردن سریال را در چند ماژول متفاوت با روش های متفاوت کد نویسی کنید .

2_ هر چه تعداد این ماژول ها بیشتر باشد وقت کرکر بیشتر گرفته می شود و کرکر حوصلش سر میره

3_ به گفته یکی از دوستان عزیزم (که کرکر ماهری هم هست) : یک برنامه نویس باید حتی زمانی که کاربر ماوس رو تکان میده سریال رو چک کنه

4_ سعی کنید قبل از اینکه قفلی طراحی کنید کمی با نرم افزار های دیباگر به صورت متوسط کار کنید و ببینید چگونه کار می کنند

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

این یک بازی ناجوانمردانه هست چون دو طرف برابر نیستن یک برنامه نویس و یاشاید 1000 تا برنامه نویس در مقابل ؟ کرکر ؟

ولی یادتون باشه فقط کاری کنید که حوصله کرکر سر بره از کد های شرطی دروغین استفاده کنیدو..

اینم ازون حرفاست دوست عزیز. همچین چیزی غیرممکنه که بتونی توی رویداد MouseMove قفل رو چک کنی.در این صورت باید فرایند چکتون یک چیزی در حدود 10 میلی ثانیه و حتی کمتر طول بکشه تا نرم افزار کند نشه که همچین چیزی غیر ممکنه. یک چک کامل قفل با استفاده از الگوریتمی مثل MD5 و رشته هایی به طول حدودا 20 کاراکتر در عمل چیزی در حدود 2 تا 3 ثانیه طول می کشه که یعنی 2000 میلی ثانیه و رسما شما تو نرم افزار جرات نمی کنی موسو تکون بدی.

در مجموع به نظر من کرکری که به کد دسترسی پیداکنه علی الخصوص توی دات نت خیلی راحت یک کیجن میسازه و حالا شما بیا در هر ثانیه 2000 بار چک کن وقتی کد معتبر باشه چک کردن فایده ای نداره.پچ کردن هم مال کرکرای آماتوره کرکر حرفه ای کیجن میسازه براش(منظورم نرم افزارهای داخلی که مبتنی بر کد اس ام اسی و اینجور موارد هستن وگرنه نرم افزارای با قفل های دیگه راه حل هم همون پچ کردنه)
بهترین راه به نظر من:
1-با ابزارهای obfuscation کد رو محافظت کنید.
2-توی بعضی رویدادهای خاص اتصال به اینترنت رو چک کنید و اگر وجود داشت با دیتابیس کدهای داخل سایتتون چک کنید اگر کد محدودیتش تموم شده بود یا به عنوان کدی که روی بسته نرم افزار ثبت بود شناخته نشد نرم افزار رو قفل کنید به هر شیوه ای که روی اون کامپیوتر کاربر دیگه نتونه استفاده کنه.
(مثلا شما برای یک نرم افزار الگوریتمتون رو طوری نوشتید که 30 میلیارد کد متفاوت میشه تولید کرد در حالی که شما هزار کد مورد نیازتونه.حالا کاربری اگر کیجن هم داشت و اومد کد ساخت ما اون کدساخته شده رو توی لیست اون هزار کد داخل سایتمون چک می کنیم و اگز وجود نداشت نرم افزار رو قفل می کنیم. اینجوری خیلی دست کرکر بسته میشه و شانسش کمه که بتونه کیجن چندان قابل استفاده ای تولید کنه.)

gholami146
سه شنبه 01 اسفند 1391, 21:36 عصر
با سلام
من این بخش از سایت رو تازه دیدم و خیلی خوشحال شدم
خوب دوستان برای شروع باید بگم که قفل های سخت افزاری به چندین نوع مختلف دسته بندی می شه یک دسته از ائنها دارای یک کد شناسایی منحصر به فرد هست که برنامه نویس وجود قطعه سخت افزاری رو بر روی سیستم چک میکنه و در صورتی که این قطعه موجود باشه شماره سریال اون رو دریافت و با شماره سریال خودش که در برنامه وجود داره چک میکنه
این روش دارای مزایا و معایبی هست مزایای اون راحتی استفاده از اون و هزینه نسبتا کمش هست و معایبش هم اینه که کاربر میتونه اون قسمتی از کد رو که توسط برنامه شماره سریال چک میشه رو دستکاری کنه و قفل رو از دور خارج کنه
روش بعدی روشی هست که قفل دارای یک حافظه به ظرفیت بسیار کم حدودا یک کیلوبایت هست و توسط برنامه مخصوص قفل قسمتی از اطلاعات فایل اجرایی رو کات کرده و در داخل حافظه قرار میده و برنامه پس از اجرای کدهای اولیه به دنبال ادرس قفل رفته و اطلاعات رو از اون خونده و سپس به روتین برنامه اصلی بر میگرده که میتونیم این روش رو مثل روش قفل نرم افزاری که بعضی از پکرها از اون استفاده میکنن در نظر بگیریم که بهش روش استولن بایت میگن (بایت دزدیده شده)
البته این روش هم قابل باز شدن هست ولی سخت تر ولی از معایب اون گرونی قفل هاست که باعث بالا بردن قیمت برنامه ها میشه

اگه به نظر من برنامه هاتون ارزشش رو داره برید و ازش بخرید بدک نیست

gholami146
سه شنبه 01 اسفند 1391, 21:39 عصر
خوب من هم تصمیم گرفتم از این به بعد در این انجمن پست بدم
و میخوام در پست های اینده خودم به آموزش مختصری از کرک نرم افزار ها بپردازم منتظر پست های بعدی من باشید
انشاء الله یک تاپیک آموزشی می زنم و در آون به آموزش کرک نرم افزار با مثال های خوب می پردازم
دوست دار شما غلامی
WWW.Multico.ir