PDA

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



vahidth
جمعه 15 دی 1391, 18:51 عصر
سلام دوستان
من کلی سرچ کردم درباره قفل نرم افزاری همشون خوب بودن و بعضی هاشون هم به راحتی قابل کرک بودن یکی از دوستان نظرش این بود


نقل قول: ساخت قفل براي نرم افزار

شما باید با یک dll به نام hardwareinfo اگه اشتباه نکرده باشم اطلاعت سخت افزاری مربوط به کامپیوتر مقصد رو بگیری و به عنوان request code به کاربر نشون بدی. این کد می تونه سریال نامبر هارد یا cpu باشه که منطقآ یونیک س. حالا باید با یه الگوریتم اونو به سریال نامبر تبدیل کنی. این الگوریتمو داخل فرم register برنامه بذاری. بعد عین همون الگوریتم رو داخل یه برنامه دیگه که فقط دست خودت باید باشه پیاده کنی که به ازای هر request code یه سریال نامبر بده. حالا مشتری برنامه رو اجرا می کنه. request code رو می بینه و برنامه اون serial number رو بر اساس اون request code ساخته ولی نشون کاربر نمیده. کاربر زنگ می زنه یا تماس می گیره به هر طریقی به شما و request code رو میده و شما با برنامه ای که دارید serial number رو بهش میدید. اگه سریالی که شما میدید با اونی که برنامه محاسبه کرده یکی بود برنامه register میشه. این دوستم یه سایت معرفی کردن که از اونجا یک فایل exe دانلود کردم این سایت
این سایت (http://www.soft.tahionic.com/download-hdd_id/index.html)
اما نمیدونم چطوری از این فایل exeو چگونه در سی شارپ ازون استفاده کنم؟
آیا این روش امنیتش بالا هست یا نه؟
جستجو کردم که باید این کد رو بنویسم ولی اصلا نمیدونم چطوری استفاده کنم راهنمایی کنید دوستان
using System; using System.Management; using System.Management.Instrumentation; namespace ConsoleApplication1 { class Class1 { [STAThread] static void Main(string[] args) { ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select Name from Win32_CDROMDrive"); foreach(ManagementObject cdrom in searcher.Get()) { Console.WriteLine("Name: {0}\n", cdrom.GetPropertyValue("Name")); } } } }

Borland.C
جمعه 15 دی 1391, 19:02 عصر
این یک روش معمول که اکثر مواقع ازش استفاده میشه البته کرک هم میشه کافیه برعکس عمل کنی
اما روش خوبیه
باید دید ارزش نرم افزار چقدره اصلا ارزش کرک داره؟!!
بعدش در اختیار چه افرادی قرار میگیره؟اصلا نیاز به برنامه تا چه حده؟در حدی هست که کرکش احساس نیاز بشه؟

Borland.C
جمعه 15 دی 1391, 19:07 عصر
راستی dll دانلود نشد!
فقط تونستم فایل اجرایی رو دانلود کنم.اگه شما dll رو دانلود کردید لطفا بذارید تا یک نگاهی بهش بندازیم.حتما مفید هم هست

danialafshari
جمعه 15 دی 1391, 19:21 عصر
سلام
به دلایل امنیتی میگن سعی بشه برای قفل از dll استفاده نشه
و اگر توصیه ی من رو میشنوید از کد cpu استفاده کنید در تاپیک دیگری هم بحث کردم به دلیله اینکه هم کدش منحصر به فرده و خرابی cpu هم نسبت به قطعات دیگر کمتره پس کد cpu از نظر من بهتره
اینم تابع برای بدست آوردن کد cpu:
public string GetCPUId()
{
string cpuInfo = String.Empty;
//create an instance of the Managemnet class with the
//Win32_Processor class
ManagementClass mgmt = new ManagementClass("Win32_Processor");
//create a ManagementObjectCollection to loop through
ManagementObjectCollection objCol = mgmt.GetInstances();
//start our loop for all processors found
foreach (ManagementObject obj in objCol)
{
if (cpuInfo == String.Empty)
{
// only return cpuInfo from first CPU
cpuInfo = obj.Properties["ProcessorId"].Value.ToString();
}
}
return cpuInfo;
}
موفق باشید

vahidth
جمعه 15 دی 1391, 19:24 عصر
ممنون داداش ولی میشه بگی چطوری میتونم قفل نرم افزاری بسازم لطفا دقیق بگو چون در این باره هیچی نمیدونم ایا این روشی که میگی امنیتش زیاده یا نه؟

راستی dll دانلود نشد!
فقط تونستم فایل اجرایی رو دانلود کنم.اگه شما dll رو دانلود کردید لطفا بذارید تا یک نگاهی بهش بندازیم.حتما مفید هم هست اینم از dll داداش
دانلود dll (http://uploadtak.com/images/j1948_dll.rar)

danialafshari
جمعه 15 دی 1391, 19:36 عصر
سلام
هیچ روشی امنیت نداره
محصولات قول نرم افزاری دنیا Microsoft کرک شدن دیگه حسابش رو بکش....
شما تنها کاری که می تونی بکنی اینه که این کد cpu رو پیچیده تر کنی و یک سری الگوریتم ریاضی روش خالی کنی خیلی دقت کن برای برنامه خودم خیلی وقت گذاشتم که نتیجه نهایی اگر مقدارش زیاد شد ارور نده مثلا اگر int16 بزاری 99999999999999999999 مسلما این کد رو ارور میده و برای اعمال ریاضی هم باید int باشه و بعد از هر مرحله به string تبدیل کنی(تجربه بود)
خلاصه کاری که باید بکنی اینه که کرکر رو خسته کنی تا بیخیال بشه ولی به معنی باز نشدن نیست....
بعدش هم یک نسخه server میسازی و یک قسمت کد ساز که درونش کد محصول تولید میکنه اونم با یک الگوریتم و یک فرم هم برای کیجن که کد محصول و سیستم رو قاطی میکنه و یک کد فعال سازی میده و از این می تونی برای محدودیت فروش کد به مشتری هم استفاده کنی مثلا هر مشتری 3 کد بیشتر دریافت نکنه
موفق باشی

vahidth
جمعه 15 دی 1391, 19:40 عصر
ممنون ازت ولی داداش نگفتی بلاخره چطوری استفاده کنم در این باره هیچی نمیدونم در حد 0 کلیومترهستم
این کدی رو که نوشتی چطوری استفاده کنم این فقط اطلاعات cpu رو میگیره رو بس

danialafshari
جمعه 15 دی 1391, 19:42 عصر
ممنون ازت ولی داداش نگفتی بلاخره چطوری استفاده کنم در این باره هیچی نمیدونم در حد 0 کلیومترهستم
این کدی رو که نوشتی چطوری استفاده کنم این فقط اطلاعات cpu رو میگیره رو بس

مثلا چی بگم؟
توضیحات واضح و روشن بود

vahidth
جمعه 15 دی 1391, 19:46 عصر
میخوام بدونم در سی شارپ چگونه استفاده کنم یک فرم ساختم یه تکست رو روش انداختم و یه دکمه که کاربر کد رو داد و روش کلیک کرد اگه کد درست بود نرم افزار به اصطلاح خودم ریجیستر بشه

danialafshari
جمعه 15 دی 1391, 19:57 عصر
2 تا تکست باکس. یکی برای نمایش کد سیستم که برنامه بهش میده و یکی برای وارد کردن کد فعال سازی که باید تماس بگیره و بهش بدی
باید تابع کد Cpu رو در یک متغیر بریزید و یک عملیاتی ریاضی روش انجام بدید و اون رو به عنوان کد سیستم به کاربر نشون بدی و بعد یک پروژه دیگه ایجاد می کنی که keygen هست سپس در پروژه keygen این کد رو که از کاربر گرفتی اونجا هم یک سری عملیات ریاضی انجام میدی و یک کد فعال سازی بهش میدی

حل شد؟

vahidth
جمعه 15 دی 1391, 20:08 عصر
داداش خودت که یه متغییر ار نوع string تعریف کردی تو این کد
public string GetCPUId()
{
string cpuInfo = String.Empty;
//create an instance of the Managemnet class with the
//Win32_Processor class
ManagementClass mgmt = new ManagementClass("Win32_Processor");
//create a ManagementObjectCollection to loop through
ManagementObjectCollection objCol = mgmt.GetInstances();
//start our loop for all processors found
foreach (ManagementObject obj in objCol)
{
if (cpuInfo == String.Empty)
{
// only return cpuInfo from first CPU
cpuInfo = obj.Properties["ProcessorId"].Value.ToString();
}
}
return cpuInfo;
}


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

vahidth
جمعه 15 دی 1391, 22:24 عصر
از دوستان یکی منو کمک کنه

vahidth
جمعه 15 دی 1391, 23:15 عصر
دوستان چطوری میتونم در پروژه این کدی رو که دوستمون نوشتم رو ازش استفاده کنم من تا تکست باکس رو فرم گذاشتم حالا باید چیکار کنم

danialafshari
جمعه 15 دی 1391, 23:46 عصر
دوستان چطوری میتونم در پروژه این کدی رو که دوستمون نوشتم رو ازش استفاده کنم من تا تکست باکس رو فرم گذاشتم حالا باید چیکار کنم

سلام دوست عزیز
به نظر من اول تمرکز رو روی ساخت تکه کدها و برنامه های کوچک و تسلط بر بانک اطلاعاتی بزارید و یک دفترچه تلفن درست کنید برای یادگیری Add-Delete-Update. برای کسی که یک ماه شروع کرده این برنامه ها خیلی زود است شخصا در یک ماه اول تمرکزم روی if,For,... بود با اینکه vb6 هم کار کرده بودم! بر فرض مثال جواب این رو هم گرفتی بعدش می خوای چکار کنی؟ مراحل بعدی سختر است و نیاز به تجزیه و تحلیل دارد. قدرت تحلیل رو با نرم افزارهای کوچک بالا ببرید خیلی زودتر کارهایتان پیش می رود. قبل از دویدن باید قدم زدن را آموخت
موفق باشید

vahidth
شنبه 16 دی 1391, 08:37 صبح
دارم همین کارو میکنم اما خوب باید این برنامه رو هم یاد گرفت وقتی کدی نوشته میشه خودم حدود 2 بار اون کد رو مینویسم و نجزیه و تحلیلش میکنم
از ذوستان یکی راهنمایی کنه با کد

vahidth
شنبه 16 دی 1391, 13:29 عصر
یعنی کسینیست منو راهنمایی کنه

Shikar2006
یک شنبه 01 بهمن 1391, 08:24 صبح
سلام
به دلایل امنیتی میگن سعی بشه برای قفل از dll استفاده نشه
و اگر توصیه ی من رو میشنوید از کد cpu استفاده کنید در تاپیک دیگری هم بحث کردم به دلیله اینکه هم کدش منحصر به فرده و خرابی cpu هم نسبت به قطعات دیگر کمتره پس کد cpu از نظر من بهتره

سلام
خدمت این دوست عزیر عرض کنم که کد cpu تا زمانی که شرکت های چینی اقدام به ساخت اون نکرده بودند منحصر به فرد بوده ولی الان خود بنده حدود 20 الی 30 کامپیوتر رو دیده ام که کدهای cpu آنها یکی بوده.پس نمیتوان روی منحصر به فرد بودن کد CPU زیاد حساب کرد.

aradrobo
جمعه 04 اسفند 1391, 11:16 صبح
سریال سی پی یو رو بدست بیار . در یک معادله قرار بده که توابه سینوس و انتگرال توش باشه و یک خروجی بگیر از سریال جدید و اونو نمایش بده . اینجوری کسی نمی تونه معادله رو حدس بزنه .

rezarko
جمعه 04 اسفند 1391, 11:40 صبح
سریال سی پی یو رو بدست بیار . در یک معادله قرار بده که توابه سینوس و انتگرال توش باشه و یک خروجی بگیر از سریال جدید و اونو نمایش بده . اینجوری کسی نمی تونه معادله رو حدس بزنه .


سریال سی پس یو متشکل از اعداد و حروفه. چه طور روش عملیات ریاضی انجام بدیم؟

hessam2003
جمعه 04 اسفند 1391, 12:01 عصر
سلام.
شما باید برای انجام عملیات عددی و یا رشته ای ابتدا باید آن ها را به نوع داده مورد نظر تبدیل کنی.
مثل:
;int i
;string str
;(str=convert.intostring(i

rezarko
جمعه 04 اسفند 1391, 14:42 عصر
سلام.
شما باید برای انجام عملیات عددی و یا رشته ای ابتدا باید آن ها را به نوع داده مورد نظر تبدیل کنی.
مثل:
;int i
;string str
;(str=convert.intostring(i


خوب چه طور مثلا B45C رو در 7 ضرب کنم؟؟؟؟؟

danialafshari
جمعه 04 اسفند 1391, 15:29 عصر
سلام


خوب چه طور مثلا B45C رو در 7 ضرب کنم؟؟؟؟؟

دوست عزیز یک تابع درست کن که کاراکتر ها رو یکی یکی جدا کنه و در یک آرایه بزاره بعد جایگزین کنه مثلا :

a=1
b=2
3=4
h=7
وسلام

موفق باشی

rezarko
جمعه 04 اسفند 1391, 16:00 عصر
لطفا یه نمونه بزارید

danialafshari
جمعه 04 اسفند 1391, 16:04 عصر
تابع رو باید خودتون بسازید

FastCode
شنبه 21 اردیبهشت 1392, 22:31 عصر
وای خدای من.
سریال CPU که گزاشتید در مبنای ۱۶ هست.
باید اول به مبنای ۱۰ تبدیل کنید.
راهنمای instruction ه CPUID ه intel رو مطالعه کنید که بفهمید این سریال از کجا اومده.

mehrdad1991h
یک شنبه 22 اردیبهشت 1392, 00:07 صبح
وای خدای من.
سریال CPU که گزاشتید در مبنای ۱۶ هست.
باید اول به مبنای ۱۰ تبدیل کنید.
راهنمای instruction ه CPUID ه intel رو مطالعه کنید که بفهمید این سریال از کجا اومده.

به نظر من مهم نیست در مبنای چنده مهم اینه که روش یه سری تغییرات ایجاد بشه حالا الزاما لازم نیست به مبنای 10 برگرده !
موافق نیستید ؟

FastCode
یک شنبه 22 اردیبهشت 1392, 00:09 صبح
به نظر من مهم نیست در مبنای چنده مهم اینه که روش یه سری تغییرات ایجاد بشه حالا الزاما لازم نیست به مبنای 10 برگرده !
موافق نیستید ؟
خب شما میتونید با نظر خودتون کد بنویسید.

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

اگر یک جست و جوی ساده در مورد اون instruction انجام میدادید متوجه میشدید که من خیلی چیزها رو توضیح ندادم و گزاشتم که خودتون بخونید مثل کوچک شدن سریال برای حفظ حریم خصوصی و روش توزیع سریال ها توسط اینتل در مناطق مختلف جغرافیایی برای جلوگیری از خطا در لایسنس نرمافزارها و اینکه چند بیت موثر داره و چطوری به EAX مقدار میدیم و ....

fazelit
شنبه 09 اسفند 1393, 08:51 صبح
سلام داداش
من از این کد استفاده کردم ولی آی دی که میده منحصر به فرد نیست
این آی دیم هستش
BFEBFBFF000206A7
توی گوگل بزنی برای خیلی ها هم همینه ولی چی استفاده کنم منحصر به فرد باشه؟

سلام
به دلایل امنیتی میگن سعی بشه برای قفل از dll استفاده نشه
و اگر توصیه ی من رو میشنوید از کد cpu استفاده کنید در تاپیک دیگری هم بحث کردم به دلیله اینکه هم کدش منحصر به فرده و خرابی cpu هم نسبت به قطعات دیگر کمتره پس کد cpu از نظر من بهتره
اینم تابع برای بدست آوردن کد cpu:
public string GetCPUId()
{
string cpuInfo = String.Empty;
//create an instance of the Managemnet class with the
//Win32_Processor class
ManagementClass mgmt = new ManagementClass("Win32_Processor");
//create a ManagementObjectCollection to loop through
ManagementObjectCollection objCol = mgmt.GetInstances();
//start our loop for all processors found
foreach (ManagementObject obj in objCol)
{
if (cpuInfo == String.Empty)
{
// only return cpuInfo from first CPU
cpuInfo = obj.Properties["ProcessorId"].Value.ToString();
}
}
return cpuInfo;
}
موفق باشید

mrali.jalali
پنج شنبه 05 فروردین 1395, 04:22 صبح
سلام
من برنامم تحت شبکه ست . به این صورت که فایل های برنامه روی سرور است و به شتنراک گذاشتم و بقیه برنامه رو از روی شبکه اجرا میکنن .
اگر بخوام قفل نرم افزاری بر اساس شماره cpu بسازم (البته شماره cpu سرور یا جایی که sql روی آن نصبه) چون نمیخوام برای هر کلاینت کد فعال سازی بدم اگر راهنمایی کنید ممنون میشم

rahmatipoor
یک شنبه 22 فروردین 1395, 18:58 عصر
سلام
کد سی پی یوی سرور رو توی دیتابیس ذخیره کن
توی کلاینت اول کد سی پی یوی سرور رو از توی دیتابیس بخون بعد عملیات چک کردن فعالسازی رو با اون کدی که از روی سرور خوندی انجام بده نه کد سی پی یوی کلاینت

rahmatipoor
یک شنبه 22 فروردین 1395, 19:02 عصر
در ضمن در مورد سی پی یو هم بگم که من همین مشکل رو خودم دارم که توی ویندوزهای مختلف توی یک سیستم واحد کدهای مختلف میده که مشکل سازه
مثلا طرف کد فعالسازی گرفته ویندوزش 32 بیتی بوده بعدش میاد ویندوز 64 بیتی نصب میکنه کد فعالسازی عوض میشه و کد قبلی کار نمیکنه

FastCode
پنج شنبه 26 فروردین 1395, 02:56 صبح
cpu SN منحصر به فرد نیست/12 bit enteropy داره.

mahziar
پنج شنبه 26 فروردین 1395, 05:08 صبح
http://barnamenevis.org/showthread.php?179829-%D9%82%D9%81%D9%84-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1%DB%8C-%D8%A8%D8%A7-%D8%A7%D9%85%D9%86%DB%8C%D8%AA-%D9%85%D8%AA%D9%88%D8%B3%D8%B7-%D8%A8%D9%87-%D8%A8%D8%A7%D9%84%D8%A7-%D9%88%D8%B1%DA%98%D9%86-2&highlight=%D9%82%D9%81%D9%84+%D9%86%D8%B1%D9%85+%D 8%A7%D9%81%D8%B2%D8%A7%D8%B1
این نمونه رو هم نگاه کن
من قبلا ساختم با استفاده از مشخصات سخت افزاری!
ببین بکارت میاد یا نه !

ژیار رحیمی
پنج شنبه 26 فروردین 1395, 05:33 صبح
Generating Unique Key (Finger Print) for a Computer for Licensing Purposes (http://www.codeproject.com/Articles/28678/Generating-Unique-Key-Finger-Print-for-a-Computer)

k1csharpdeveloper
جمعه 27 فروردین 1395, 19:42 عصر
سلام
هیچ روشی امنیت نداره
محصولات قول نرم افزاری دنیا Microsoft کرک شدن دیگه حسابش رو بکش....
شما تنها کاری که می تونی بکنی اینه که این کد cpu رو پیچیده تر کنی و یک سری الگوریتم ریاضی روش خالی کنی خیلی دقت کن برای برنامه خودم خیلی وقت گذاشتم که نتیجه نهایی اگر مقدارش زیاد شد ارور نده مثلا اگر int16 بزاری 99999999999999999999 مسلما این کد رو ارور میده و برای اعمال ریاضی هم باید int باشه و بعد از هر مرحله به string تبدیل کنی(تجربه بود)
خلاصه کاری که باید بکنی اینه که کرکر رو خسته کنی تا بیخیال بشه ولی به معنی باز نشدن نیست....
بعدش هم یک نسخه server میسازی و یک قسمت کد ساز که درونش کد محصول تولید میکنه اونم با یک الگوریتم و یک فرم هم برای کیجن که کد محصول و سیستم رو قاطی میکنه و یک کد فعال سازی میده و از این می تونی برای محدودیت فروش کد به مشتری هم استفاده کنی مثلا هر مشتری 3 کد بیشتر دریافت نکنه
موفق باشی


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

rahmatipoor
شنبه 28 فروردین 1395, 09:59 صبح
Generating Unique Key (Finger Print) for a Computer for Licensing Purposes (http://www.codeproject.com/Articles/28678/Generating-Unique-Key-Finger-Print-for-a-Computer)

آقای رحیمی تشکر از شما
ولی این کد رو من قبلا استفاده کردم توی بعضی حالات کدی که میده عوض میشه ، مثلا بین ویندوز 32 بیت و 64 بیت کد مختلف میده
نظرات پایین صفحه رو هم بخونید کاربرها همین رو گفتن

FastCode
شنبه 28 فروردین 1395, 17:06 عصر
قبلا
یک امکانی توی سایت بود که میشد به پست ها امتیاز منفی بدی. یعنی محتواش غلطه. اگر هنوز بود فکر میکنم روشهایی که دارین به هم آموزش میدین تا منهای سی صد چهارصد میرفت

rahmatipoor
یک شنبه 29 فروردین 1395, 09:29 صبح
قبلا
یک امکانی توی سایت بود که میشد به پست ها امتیاز منفی بدی. یعنی محتواش غلطه. اگر هنوز بود فکر میکنم روشهایی که دارین به هم آموزش میدین تا منهای سی صد چهارصد میرفت

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