PDA

View Full Version : با قفل tiny كسی کار کرده؟



بهمن بهار
شنبه 05 مرداد 1387, 09:12 صبح
سلام
با قفل Tiny دارم کار میکنم اما مشکل اینه که وقتی قفل را قفل را بیرون میکشند بعد از ورود به برنامه . باز هم برنامه کار میکند.
یه قسمتی داره که برای چک کردن اتوماتیک است اما برای شبکه است و Single ندارد
آن هم وقتی چک کردن اتوماتیک را فعال میکنیم درست کار نمیکند
ممنون

Valadi
شنبه 05 مرداد 1387, 09:59 صبح
شما یک تایمر یا در فرمها دوباره قفل چک کنه

بهمن بهار
شنبه 05 مرداد 1387, 10:05 صبح
اینطوری خیلی سرعت کم میشه

Valadi
شنبه 05 مرداد 1387, 10:36 صبح
یک کاری هم می تونی انجام بده در بخش مهم برنامه تون (مثلا گزارش گیری آماری) قبل از ساخت گزارش قفل چک کنه

nouri2015
شنبه 05 مرداد 1387, 12:30 عصر
اگر چک اتوماتیک رو فعال کنید وقتی قفل رو برداری یک Event توی OCX Tiny فعال می شود که در هر دو حالت Single و شبکه کار می کند شما باید اون Event رو دست بگیرید.

دنیای دلفی
شنبه 05 مرداد 1387, 15:28 عصر
به جاي استفاده از تايمر از يك ترد استفاده كنيد در سرعت برنامه شما خللي ايجاد نمي شود .
در بخش امنيت نحوه ساختن و استفاده از ترد توضيح داده شده است .

nouri2015
یک شنبه 06 مرداد 1387, 08:13 صبح
شما یک تایمر یا در فرمها دوباره قفل چک کنه
با این کار امنیت نرم افزار شما پائین می آید.

omid_delphi2
یک شنبه 06 مرداد 1387, 10:35 صبح
استفاده از تامر بدترین روش در نوشتن کنترل قفل است
ضمنا من tiny را خیلی تست کرده ام به نظرم خیلی مطمئن نمیاید چون از ocx استفاده کرده و به نظر من خیلی راحت توسط هکر قابل دور زدن است
اگر دوستان در این زمینه تجاربی دارند بیان نمایند

nouri2015
یک شنبه 06 مرداد 1387, 12:20 عصر
باید ببینید OCX در چه محیطی کامپایل شده ، Tiny OCX در دلفی و وی بی وBCB کامپایل نشده در ضمن می تونید ocx رو در برنامه تون چک کنید که کلاسش replace نشده باشد (با چک CRC).

omid_delphi2
یک شنبه 06 مرداد 1387, 14:15 عصر
عزیز دل برادر اون هکر محترم خیلی راحت میتونه کنترل تغییر crc برنامه را دور بزنه

nouri2015
یک شنبه 06 مرداد 1387, 15:21 عصر
شما با Replace شدن کلاس OCX مشکل دارید یا با هک شدن Application خودتون؟
اول این رو مشخص کنید...

omid_delphi2
یک شنبه 06 مرداد 1387, 16:10 عصر
با هر دوتاش

دلفــي
پنج شنبه 21 آبان 1388, 09:03 صبح
سلام
با قفل Tiny دارم کار میکنم اما مشکل اینه که وقتی قفل را قفل را بیرون میکشند بعد از ورود به برنامه . باز هم برنامه کار میکند.
یه قسمتی داره که برای چک کردن اتوماتیک است اما برای شبکه است و Single ندارد
آن هم وقتی چک کردن اتوماتیک را فعال میکنیم درست کار نمیکند
ممنون

شما مي تونيد بخشي از داده هاي پركاربرد و اساسي برنامه تون رو در قسمت Data در درون خود Tiny قرار بديد مانند مسير پايگاه داده و مواردي از اين قبيل كه كاربرد هميشگي در برنامه شما دارند در اين صورت هم از يرنامه شما محافظت شده و هم با درآوردن سخت افزار Tiny برنامه كاآيي خود رو از دست مي دهد .

AmirSky
پنج شنبه 21 آبان 1388, 12:43 عصر
باسلام
دور زدن OCX توسط هکر خوب کار راحتیه . من هکری رو سراغ دارم که این کار رو به راحتی با برنامه من کرد. اما وقتی من اطلاعات خیلی ضروری رو توی قفل قرار دادم دیگه نتونست کاری بکنه. برنامه هک شده بود و اجرا شده بود اما کار نمی کرد.
می تونی در فرم های خیلی مهم برنامه اطلاعات مهم مثلا قسمتی از کارکتر های مهم رو درون قفل قرار بدی یا اعدادی که در حلقه ها استفاده میشن یا هر چی که خودتون صلاح می دونید .
با این کار بجای اینکه اطلاعات فرم ها ذخیره بشوند حلقه های بی نهایت بوجود می آیند و باید حلقه ها طوری طراحی بشوند که بدون آنها ذخیره اطلاعات معنی نداشته باشد.
یا می شه اسم پارامترهای Query ها رو در قفل ذخیره کرد.
اما هر کاری می کنی از چک نمودن چند باره قفل جلوگیری کن چون هم سرعت برنامه پایین میاد هم اینکه اصلا فایده نداره و برای هکر هم هک نمودن همچین برنامه ای کار آسونیه!

موفق باشی.

khorsandreza
پنج شنبه 21 آبان 1388, 17:52 عصر
من نيز با اين قفل ها کار کردم نزديک 300 نسخه از برنامه را در سطح کشور (ادارات دولتي) توزيع کرده ام تا چند نفر از دوستان که برروي شکستن قفل و دور زدن ocx تخصص دارند اذعان دارند اي نوع قفل ها قابل اطمينان است ( البته نسبت به قيمتش) اگر کسي ادعا دارد اين قفل ها ميشکند کار جندان سختي نيست جون در عالم صفر ويک هر چيزي امکان دارد ولي بيشتر اين حرف ها را بلوف ميدانم

alinikaein
شنبه 23 آبان 1388, 11:17 صبح
با سلام؛

حجم اطلاعاتي كه مي‌شه داخل قفل ذخيره كرد، چه مقدار هست (بايت)؟

دلفــي
شنبه 23 آبان 1388, 11:49 صبح
روشهای ایجاد امنیت بیشتر در قفل های Tiny :


استفاده از شناسه ویژه (Special ID) در قفل سخت افزاری
Special ID یک رشته کارکتری است که در بخشی از حافظه قفل نوشته میشود، با توجه به اینکه هر Special ID به طور انحصاری به شخص یا شرکت خریدار قفل اختصاص داده میشود بنابراین هیچگاه Special ID ثبت شده برای یک شرکت به شخص یا شرکت دیگری اختصاص نمییابد. و اگر شخصی درخواست یک Special ID که متعلق به شرکت دیگری است را داشته باشد باید مورد تایید آن شرکت قرار گیرد. قفلهایی که دارای Special ID باشند : <LI type=disc>Reset نمیشوند. اگر نرم افزاری با این نوع قفل ها، قفل گذاری شود و Special ID در کد نرم افزار چک شود آن نرم افزار با قفل هایی که دارای اطلاعات یکسان با قفلهای اصلی باشند اجرا نمیگردد. (قفلهایی که اطلاعات قفل دیگری را روی آنها قرار داده شود).Special ID یک رشته فقط خواندنی بوده که توسط کاربر قفل قابل تغییر نیست و فقط در شرکت سازنده قابل نوشتن روی قفل میباشد. بنابراین اگر شخصی به هر دلیلی از کلمه عبور یک قفل سخت افزاری (که دارای Special ID نباشد) مطلع باشد به طور مثال به راحتی میتواند با تهیه یک قفل جدید خام و قرار دادن کلمه عبور و اطلاعات قفل قبلی روی آن، نرم افزار قفل گذاری شده را با قفل جدید (کپی شده) اجرا کرده و استفاده کند. اما اگر قفل قبلی دارای Special ID باشد (با توجه به اینکه Special ID در کد نرم افزار چک شده باشد) نرم افزار قفل گذاری شده با قفل کپی شده اجرا نمیشود.

چک کردن قفل در درون کد نرم افزار بدون Timer
برای بالاتر رفتن امنیت نرم افزار سعی کنید از Timer Component برای چک کردن قفل استفاده نکنید. زیرا یافتن رویداد (Event) OnTimer برای یک Cracker کار بسیار ساده ای بوده، و قادر هستند آنها را به راحتی حذف کنند. پیشنهاد میشود برای انجام روند قفل گذاری در قسمتهای مختلف نرم افزار دستورات ارتباط با قفل تایپ شده و از Function یا Procedure استفاده نگردد. در صورتیکه متدی برای چک قفل نوشته میشود نام آن طوری انتخاب شود که Cracker را گمراه کند.
توجه : در صورتیکه میخواهید در روند قفل گذاری پیغام خاصی را نمایش دهید متن پیغام را طوری انتخاب نمایید که به هیچ عنوان نشاندهنده روند قفل گذاری نباشد.

چک کردن قفل به صورت تصادفی
میتوانید به جای استفاده از Timer از این روش استفاده نمایید، به این ترتیب که در لابه لای کدهای یک متد یک عدد تصادفی را تولید نموده (بین 1 تا 10) و اگر این عدد مساوی عدد مورد نظر شما بود چک قفل انجام شود. این عمل به این دلیل است که با هر بار اجرای متد قفل چک نشده و چک کردن قفل به صورت کاملا تصادفی انجام میگیرد و همچنین سرعت سیستم کاهش نمی یابد :


Function1 ()
{
… //function1 Instructions
If (GenerateRandom () = 7)
{
… //Checking the dongle
}
… //function1 Instructions
}


توجه داشته باشید که این روش باید در قسمتهای مختلف برنامه مورد استفاده قرار گیرد. برای مثال هنگام باز شدن فرمهای اصلی و کلیک کردن button ها.

ذخیره کردن داده های مهم نرم افزار در حافظه قفل

در اغلب نرم افزارها مقادیری (Database Connection String و Database Password) وجود دارد که برای نرم افزار بسیار مهم و حیاتی بوده و نرم افزار بدون دسترسی به آن مقدار قابل اجرا نخواهد بود. برای بالا بردن امنیت نرم افزار خود، پیشنهاد میگردد مقادیر مهم را در قفل ذخیره نموده و هنگام اجرای برنامه در زمان چک کردن قفل آن مقدار را از قفل خوانده و استفاده نمایید. در این حالت حتی اگر Cracker موفق شود روتین های چک قفل را از درون فایل اجرایی حذف نماید باز هم نرم افزار بدون آن مقدار قابل اجرا نخواهد بود.

چک کردن قفل درون یک Thread
این روش، روشی بسیار مفید در زمانیکه برنامه نویس بخواهد قفل سخت افزاری را به صورت مداوم چک کند بدون اینکه در کار User Interface نرم افزار خللی وارد شود. در این روش توصیه میشود برای امنیت بالاتر از دو یا چند Thread استفاده گردد و هر کدام از آنها با روشی متفاوت عملیات چک کردن قفل را در یک حلقه انجام دهد.

چک کردن مقدار CRC-32 یا MD5 برای DLL یا ActiveX

(CRC Cyclic Redundancy Checksum) چیست؟
معمول ترین آن CRC32 بوده که یک عدد 32 بیتی است و برای هر داده ای قابل محاسبه میباشد از فایل گرفته تا یک مقدار رشته ای یا حتی یک قسمت از حافظه. همانطور که می دانید داده ها به صورت رشته ای از بایتها قابل نمایش بوده که مقدار CRC هر بایت قابل محاسبه میباشد. الگوریتمهای مختلفی برای محاسبه CRC وجود دارد ولی نکته قابل توجه اینست که تمام آنها برای یک داده ثابت مقدار یکسانی را تولید میکنند. توجه داشته باشید که اگر برای یک داده مقدار CRC چند بار محاسبه شود مقادیر به دست آمده یکسان هستند و هر داده ای مقدار CRC مختص به خود را دارد به عبارت دیگر مقدار CRC هیچ دو داده ای با هم یکسان نیست. به طور معمول برای استفاده از قفل های سخت افزاری یا نرم افزاری برای ارتباط بین قفل و نرم افزار باید از DLL یا ActiveX استفاده نمود. به دلیل ماهیت خاص این نوع Object ها، آنها قابل جایگزین شدن بوده و با این کار میتوان اداره نرم افزار را در دست گرفت. پیشنهاد میشود در صورت امکان با استفاده از روشهای مختلف محاسبه CRC قبل از استفاده از متدهای یک DLL یا ActiveX مشخص نمایید که آیا این Object، Object اصلی است یا خیر؟

دلفــي
شنبه 23 آبان 1388, 11:57 صبح
با سلام؛

حجم اطلاعاتي كه مي‌شه داخل قفل ذخيره كرد، چه مقدار هست (بايت)؟

من یه نمونه که استفاده کردم تا 128 بایت ظرفیت داخلی داشت .

AbiriAmir
یک شنبه 24 آبان 1388, 15:45 عصر
خیلی نمیشه از AutoCheck استفاده کرد چون وقتی این خاصیت میتونه مقدار True رو بگیره که Initialize هم True باشه
ولی معمولا وقتی چک کردن قفلمون تموم میشه این خاصیت رو برابر False قرار میدیم و اتوماتیک AutoChecking Tiny هم False میشه

sinsin666
یک شنبه 24 آبان 1388, 20:12 عصر
با سلام ....
اگر هم شما اطلاعات حساس را روی قفل ذخیره کنین میشه کارایی کرد....
قوی تر از قفل امریکایی rainbow که نیست دوست عزیز.....
پس به این قفل های ایرانی اعتماد کردن ..........