PDA

View Full Version : مشکل با طراحی قفل نرم افزاری



gholami.vahid
جمعه 06 شهریور 1394, 11:48 صبح
سلام دوستان
من دوتا قفل نرم افزاری طراحی کردم که یکیش داخل سی شارپ با wmi هست و یکیش داخل سی پلاس پلاس با cpuid .
هدف گرفتن یک id سخت افزاری است . یا از cpu یا رم یا بایاس یا کارت گرافیک
دوستانی که از روش دیگه ای استفاده میکنند ممنون میشوم راهنماییم کنید . یا حداقل بگید که کدوم یک از دو روش بالا درست قطعات رو شناسایی میکنند .

134682

veniz2008
جمعه 06 شهریور 1394, 13:46 عصر
سلام.
معمولا واسه قفل نرم افزاری بصورت همزمان از مقادیر "سریال هارد دیسک"، "سریال CPU" و "سریال مادربورد" استفاده می کنند چون روی بعضی از سیستم ها ممکنه یکی یا دو تا از مقادیر رو نتونی بدست بیاری ولی معمولا به ندرت پیش میاد سیستمی باشه که هر 3 مقدار رو در اختیار نذاره. بدست آوردن حداقل یکی از این ها کافی هست تا بتونی باهاش کد فعالسازی تولید کنی.
در بدست آوردن هر کدوم از این کدها دقت کنید. حالاتی رو که ممکنه واستون ابهام ایجاد کنه یا کد صحیح رو بدست نیارید ذکر میکنم:
واسه سریال هارد دیسک : زمانیکه یک هارد اکسترنال یا یک فلش دیسک به کامپیوتر وصل باشه، در این حالت طبیعی هست که کدهای مربوطه 3 سریال متفاوت رو برگردونه که شما باید سریال صحیح (سریال هارد دیسک سیستم که نرم افزار روش نصب میشه رو بدست بیارید).
سریال CPU : معمولا وقتی نرم افزار روی ماشین مجازی مثل VMWare یا VirtualBox نصب میشه دیگه به سریال CPU دسترسی ندارید.
سریال مادربورد : بعضی از مادربوردها سریال خودشون رو بسادگی در اختیار قرار نمی دن مثلا (حداقل) بعضی از مادربوردهای گیگابایت بدین صورت هستند.
ولی همونطوری که گفتم معمولا روی یک سیستم در هر حالتی که نرم افزار نصب بشه حداقل به یکی از 3 کد بالا دسترسی خواهید داشت که برای تولید کد فعالسازی کفایت میکنه.
در ادامه روند بدست آوردن هر 3 کد رو بصورت کامل توضیح میدم تا سایر دوستانی هم که نیاز دارند بتونن از این مطلب استفاده کنند.
برای این کار لازم است که ابتدا از طریق پوشه Reference اقدام به اضافه کردن System.Management کنیم. در گام بعدی فضای نام using System.Management; را به پروژه اضافه می کنیم.
سریال هارد دیسک :
برای دریافت سریال هارد دیسک از کد زیر استفاده می کنیم (کد در ویندوزهای 32 و 64 بیتی تست شده است).
در کد زیر علاوه بر سریال هارد دیسک قادر به تشخیص نوع هارد دیسک ( IDE و ...) و مدل هارددیسک خواهید بود که بصورت کامنت در کد زیر مشخص شده اند. همچنین برای جلوگیری از بروز خطا هنگام تشخیص درایوهای مجازی از یک شرط با مخالف بودن سریال با null استفاده کرده ایم.
این نکته رو مد نظر داشته باشید در صورتیکه فلش دیسک به سیستم وصل باشد، این وسیله هم بعنوان یک وسیله ذخیره سازی تشخیص داده می شود که بعضی از اونها شماره سریال نخواهند داشت و بصورت رشته خالی خواهد بود و بعضی شماره سریال را نشان نمی دهند. بعنوان مثال معمولا فلش های Transcend سریال را نمایش نمی دهند و فلش های HP سریال را نمایش می دهند.
تا جاییکه من تست کردم و اطلاع دارم، معمولا اولین سریالی که برگشت داده میشه بعنوان سریال هارد دیسک اصلی سیستم می باشد به همین خاطر در کد زیر بعد از خوندن اولین سریال، از دستور break استفاده شده تا از حلقه بیاد بیرون و بقیه سریال ها بررسی نشه.
در ادامه کدهای لازم برای بدست آوردن سریال های هارد دیسک، cpu و مادربورد رو قرار میدم که امیدوارم براتون مفید باشه.


// Get HardDisk Code
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
foreach (ManagementObject wmi_HD in searcher.Get())
{
// wmi_HD["Model"].ToString();
// wmi_HD["InterfaceType"].ToString();
if (wmi_HD["SerialNumber"] != null)
{
TxtHardDisk.Text = wmi_HD["SerialNumber"].ToString().Trim();
break;
}
}

// Get Cpu Code
searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Processor");
foreach (ManagementObject cpu in searcher.Get())
{
TxtCpu.Text = cpu["ProcessorID"].ToString().Trim();
}

// Get MainBoard Code
searcher = new ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard");
foreach (ManagementObject main in searcher.Get())
{
TxtMotherBoard.Text = main["SerialNumber"].ToString().Trim();
}
موفق باشید.

gholami.vahid
جمعه 06 شهریور 1394, 14:14 عصر
سلام.
معمولا واسه قفل نرم افزاری بصورت همزمان از مقادیر "سریال هارد دیسک"، "سریال CPU" و "سریال مادربورد" استفاده می کنند چون روی بعضی از سیستم ها ممکنه یکی یا دو تا از مقادیر رو نتونی بدست بیاری ولی معمولا به ندرت پیش میاد سیستمی باشه که هر 3 مقدار رو در اختیار نذاره. بدست آوردن حداقل یکی از این ها کافی هست تا بتونی باهاش کد فعالسازی تولید کنی.
در بدست آوردن هر کدوم از این کدها دقت کنید. حالاتی رو که ممکنه واستون ابهام ایجاد کنه یا کد صحیح رو بدست نیارید ذکر میکنم:
واسه سریال هارد دیسک : زمانیکه یک هارد اکسترنال یا یک فلش دیسک به کامپیوتر وصل باشه، در این حالت طبیعی هست که کدهای مربوطه 3 سریال متفاوت رو برگردونه که شما باید سریال صحیح (سریال هارد دیسک سیستم که نرم افزار روش نصب میشه رو بدست بیارید).
سریال CPU : معمولا وقتی نرم افزار روی ماشین مجازی مثل VMWare یا VirtualBox نصب میشه دیگه به سریال CPU دسترسی ندارید.
سریال مادربورد : بعضی از مادربوردها سریال خودشون رو بسادگی در اختیار قرار نمی دن مثلا (حداقل) بعضی از مادربوردهای گیگابایت بدین صورت هستند.
ولی همونطوری که گفتم معمولا روی یک سیستم در هر حالتی که نرم افزار نصب بشه حداقل به یکی از 3 کد بالا دسترسی خواهید داشت که برای تولید کد فعالسازی کفایت میکنه.
در ادامه روند بدست آوردن هر 3 کد رو بصورت کامل توضیح میدم تا سایر دوستانی هم که نیاز دارند بتونن از این مطلب استفاده کنند.
برای این کار لازم است که ابتدا از طریق پوشه Reference اقدام به اضافه کردن System.Management کنیم. در گام بعدی فضای نام using System.Management; را به پروژه اضافه می کنیم.
سریال هارد دیسک :
برای دریافت سریال هارد دیسک از کد زیر استفاده می کنیم (کد در ویندوزهای 32 و 64 بیتی تست شده است).
در کد زیر علاوه بر سریال هارد دیسک قادر به تشخیص نوع هارد دیسک ( IDE و ...) و مدل هارددیسک خواهید بود که بصورت کامنت در کد زیر مشخص شده اند. همچنین برای جلوگیری از بروز خطا هنگام تشخیص درایوهای مجازی از یک شرط با مخالف بودن سریال با null استفاده کرده ایم.
این نکته رو مد نظر داشته باشید در صورتیکه فلش دیسک به سیستم وصل باشد، این وسیله هم بعنوان یک وسیله ذخیره سازی تشخیص داده می شود که بعضی از اونها شماره سریال نخواهند داشت و بصورت رشته خالی خواهد بود و بعضی شماره سریال را نشان نمی دهند.Transcend سریال را نمایش می دهند و فلش های HP سریال را نمایش می دهند. بعنوان مثال معمولا فلش های
تا جاییکه من تست کردم و اطلاع دارم، معمولا اولین سریالی که برگشت داده میشه بعنوان سریال هارد دیسک اصلی سیستم می باشد به همین خاطر در کد زیر بعد از خوندن اولین سریال، از دستور break استفاده شده تا از حلقه بیاد بیرون و بقیه سریال ها بررسی نشه.
در ادامه کدهای لازم برای بدست آوردن سریال های هارد دیسک، cpu و مادربورد رو قرار میدم که امیدوارم براتون مفید باشه.


// Get HardDisk Code
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
foreach (ManagementObject wmi_HD in searcher.Get())
{
// wmi_HD["Model"].ToString();
// wmi_HD["InterfaceType"].ToString();
if (wmi_HD["SerialNumber"] != null)
{
TxtHardDisk.Text = wmi_HD["SerialNumber"].ToString().Trim();
break;
}
}

// Get Cpu Code
searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Processor");
foreach (ManagementObject cpu in searcher.Get())
{
TxtCpu.Text = cpu["ProcessorID"].ToString().Trim();
}

// Get MainBoard Code
searcher = new ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard");
foreach (ManagementObject main in searcher.Get())
{
TxtMotherBoard.Text = main["SerialNumber"].ToString().Trim();
}
موفق باشید.

با تشکر از شما دوست عزیز
پاسخ کامل و جامع بود .
یک سوال بر فرض مثال اگر ما توانستیم هر سه مقدار به دست بیاوریم به طوری که دو پارامتر از 3 پارامتر بالا درست باشند و پارامتر سوم یک مقدار مجازی باشد که سیستم به اشتباه استخراج کرده باشد و با تعویض سیستم این مقدار هم تغییر کند در این صورت اگر ما از هر سه پارامتر در انتخاب کد استفاده کنیم به مشکل نمیخوریم ؟
سوال دیگر این که ممنون میشوم اگر راهنمایی بفرمایید که چطور مشخص کنیم که برنامه در ماشین مجازی اجرا نشود .
این کد رو دارم که برای سی پلاس پلاس است :
bool isGuestOSVM() {
unsigned int cpuInfo[4];
__cpuid((int*)cpuInfo,1);
return ((cpuInfo[2] >> 31) & 1) == 1;
}

veniz2008
جمعه 06 شهریور 1394, 18:24 عصر
یک سوال بر فرض مثال اگر ما توانستیم هر سه مقدار به دست بیاوریم به طوری که دو پارامتر از 3 پارامتر بالا درست باشند و پارامتر سوم یک مقدار مجازی باشد که سیستم به اشتباه استخراج کرده باشد و با تعویض سیستم این مقدار هم تغییر کند در این صورت اگر ما از هر سه پارامتر در انتخاب کد استفاده کنیم به مشکل نمیخوریم ؟
کلا یکی از اصلی ترین مشکلات قفل نرم افزاری همین مقادیر هست.
مشکل از 2 تا چیز ناچیز میشه. یکی اشتباه برنامه نویس و دیگری وجدان انسان ها.
ممکنه به قول شما اشتباه از سمت من برنامه نویس در استخراج صحیح پارامترها باشه و با تعویض ویندوز یا هر دلیل دیگه ای پارامترها دستخوش تغییر بشن.
و البته ممکنه مشکل از وجدان انسان ها باشه. این روزها که بخاطر 50 هزار تومن میشه انسان های خودفروخته رو به وفور دید، آدم های زیادی پیدا خواهند شد که به شما خواهند گفت که سیستم قبلی سوخته (وجدان خودش سوخته) و ما یک سیستم جدید گرفتیم و ازتون کد فعالسازی جدید درخواست میکنن.
اگر فرض رو بر این بگیریم که کد من برنامه نویس در تشخیص پارامترها اشتباه بوده بالاخره بقیه پارامترها صحیح خواهند بود(همه پارامترها که عوض نمیشن) و میتونید بدون مشکل کد فعالسازی جدید رو تحویل بدید. ولی اگه همه پارامترها عوض بشه اون موقع الله اعلم.
همه چیز به نگرش شما برمیگرده که چطور میخواید با این مسائل برخورد کنید.
قفل سخت افزاری این مشکل رو نداره.

سوال دیگر این که ممنون میشوم اگر راهنمایی بفرمایید که چطور مشخص کنیم که برنامه در ماشین مجازی اجرا نشود .
این کد رو دارم که برای سی پلاس پلاس است :
bool isGuestOSVM() {
unsigned int cpuInfo[4];
__cpuid((int*)cpuInfo,1);
return ((cpuInfo[2] >> 31) & 1) == 1;
}
متاسفانه در این زمینه اطلاعاتی ندارم که بتونم کمک کنم.
موفق باشید.

gholami.vahid
جمعه 06 شهریور 1394, 18:33 عصر
کلا یکی از اصلی ترین مشکلات قفل نرم افزاری همین مقادیر هست.
مشکل از 2 تا چیز ناچیز میشه. یکی اشتباه برنامه نویس و دیگری وجدان انسان ها.
ممکنه به قول شما اشتباه از سمت من برنامه نویس در استخراج صحیح پارامترها باشه و با تعویض ویندوز یا هر دلیل دیگه ای پارامترها دستخوش تغییر بشن.
و البته ممکنه مشکل از وجدان انسان ها باشه. این روزها که بخاطر 50 هزار تومن میشه انسان های خودفروخته رو به وفور دید، آدم های زیادی پیدا خواهند شد که به شما خواهند گفت که سیستم قبلی سوخته (وجدان خودش سوخته) و ما یک سیستم جدید گرفتیم و ازتون کد فعالسازی جدید درخواست میکنن.
اگر فرض رو بر این بگیریم که کد من برنامه نویس در تشخیص پارامترها اشتباه بوده بالاخره بقیه پارامترها صحیح خواهند بود(همه پارامترها که عوض نمیشن) و میتونید بدون مشکل کد فعالسازی جدید رو تحویل بدید. ولی اگه همه پارامترها عوض بشه اون موقع الله اعلم.
همه چیز به نگرش شما برمیگرده که چطور میخواید با این مسائل برخورد کنید.
قفل سخت افزاری این مشکل رو نداره.

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

پس شما میفرمایید که با همین سه پارامتر یه کاریش بکنم .فقط شما اگه از این سه پارامتر در پروژه ها استفاده کردید ممنون میشم بگید با چه زبانی این ها رو نوشتید . مثلا میخوام این فایل که شما دادید رو تبدیل به dll کنم بعد با زبان سی پلاس پلاس یا جاوا یه فرم بسازم و ازش استفاده کنم . دلیلشم اینکه میترسم خیلی زود پروژه دات نت رو کرک کنند .

veniz2008
جمعه 06 شهریور 1394, 18:56 عصر
پس شما میفرمایید که با همین سه پارامتر یه کاریش بکنم .فقط شما اگه از این سه پارامتر در پروژه ها استفاده کردید ممنون میشم بگید با چه زبانی این ها رو نوشتید . مثلا میخوام این فایل که شما دادید رو تبدیل به dll کنم بعد با زبان سی پلاس پلاس یا جاوا یه فرم بسازم و ازش استفاده کنم . دلیلشم اینکه میترسم خیلی زود پروژه دات نت رو کرک کنند .
یه dll معمولی که محافظت نشه براحتی کدهاش قابل دسترس هست.
واقعیتش اینه که من برای تامین امنیت نرم افزارهام از روش های ترکیبی استفاده میکنم. بخشی از کدهام رو که به دات نت مربوط میشه با نرم افزارهای خاص محافظت میکنم و بخشی رو که مربوط به دیتابیس میشه (Stored Procedure) با قابلیت رمزگذاری خود SQL محافظت میکنم.
برای دات نت (محافظت از فایل exe و dll های نرم افزار) من از نرم افزار رایگان Confuser استفاده میکنم ( شخصا از این نرم افزار استفاده میکنم ولی به شما توصیه به استفاده یا عدم استفاده نمیکنم. خودتون باید تست کنید).
https://confuser.codeplex.com
موفق باشید.

Reza-HNA
شنبه 07 شهریور 1394, 12:09 عصر
برای اینکه برنامتون در ماشین مجازی اجرا نشه از پروتکتور Themida استفاده کنید .
همونطور که جناب veniz2008 (http://barnamenevis.org/member.php?155296-veniz2008) فرمودن از Confuser استفاده کنید همزمان از Themida هم استفاده کنید ترکیب خوبی میشه و گول زننده برای کرکر های مبتدیه ، ولی خب درسته یکسری کرکر رو با این کار از دور خارج میکنید ولی باز هم برنامتون کرک میشه.
امروزه تمامی پروتکتور ها و Confuser ها در .Net همگی قابلیت کرک شدن رو دارند البته تا چند ماه پیش آخرین نسخه همین Confuser کار خیلی سختی بود ولی الان باهاش درگیر بشی میشه آنپکش کرد.
تنها راهی که میتونید جلوی اکثر کرکر هارو بگیرید اینه که خودتون یک پروتکتور بنویسید :لبخند:
یادم رفت اینو بگم اگر نرم افزاری که نوشتید خیلی سنگینه بهتره از Confuser استفاده نکنید چون استفاده از رم و CPU رو بالا میبره و روی بعضی سیستم ها دچار مشکل میشید.
موفق باشید.

gholami.vahid
شنبه 07 شهریور 1394, 12:11 عصر
برای اینکه برنامتون در ماشین مجازی اجرا نشه از پروتکتور Themida استفاده کنید .
همونطور که جناب veniz2008 (http://barnamenevis.org/member.php?155296-veniz2008) فرمودن از Confuser استفاده کنید همزمان از Themida هم استفاده کنید ترکیب خوبی میشه و گول زننده برای کرکر های مبتدیه ، ولی خب درسته یکسری کرکر رو با این کار از دور خارج میکنید ولی باز هم برنامتون کرک میشه.
امروزه تمامی پروتکتور ها و Confuser ها در .Net همگی قابلیت کرک شدن رو دارند البته تا چند ماه پیش آخرین نسخه همین Confuser کار خیلی سختی بود ولی الان باهاش درگیر بشی میشه آنپکش کرد.
تنها راهی که میتونید جلوی اکثر کرکر هارو بگیرید اینه که خودتون یک پروتکتور بنویسید :لبخند:
یادم رفت اینو بگم اگر نرم افزاری که نوشتید خیلی سنگینه بهتره از Confuser استفاده نکنید چون استفاده از رم و CPU رو بالا میبره و روی بعضی سیستم ها دچار مشکل میشید.
موفق باشید.

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

Reza-HNA
شنبه 07 شهریور 1394, 12:32 عصر
سلام ممنون
اگه بتونم کد سی پلاس پلاس بزنم چی بازم نیاز به پروتکتور داره ؟

اره ، کل برنامتون رو با C++‎‎‎ یا هر زبان دیگه ای غیر از جاوا و دات نت بنویسید + پروتکتور مناسب ، احتمال کرک شدنش خیلی پایین میاد.
در کل هر کاری کنید یک کرکر با تجربه میتونه برنامتون رو کرک کنه ، این پکر ها و پروتکت کردن برنامه فقط تعداد کرکر هایی که میتونن برنامتون رو کرک کنن کم میکنه .
ولی کرکر ها یه جمله دارن " برنامه ای کرک نمیشه که نوشته نشده باشه" :لبخند:
دیگه از DRM Denuvo که بهتر نداریم؟! سه ماه طول کشید کرکر های چینی کرکش کردن :گیج:

gholami.vahid
شنبه 07 شهریور 1394, 12:42 عصر
اره ، کل برنامتون رو با C++‎‎‎‎ یا هر زبان دیگه ای غیر از جاوا و دات نت بنویسید + پروتکتور مناسب ، احتمال کرک شدنش خیلی پایین میاد.
در کل هر کاری کنید یک کرکر با تجربه میتونه برنامتون رو کرک کنه ، این پکر ها و پروتکت کردن برنامه فقط تعداد کرکر هایی که میتونن برنامتون رو کرک کنن کم میکنه .
ولی کرکر ها یه جمله دارن " برنامه ای کرک نمیشه که نوشته نشده باشه" :لبخند:
دیگه از DRM Denuvo که بهتر نداریم؟! سه ماه طول کشید کرکر های چینی کرکش کردن :گیج:

من کدهای cpu رو دارم که تو c++ نوشتم و میتونم id اونو در بیارم اما بقیه کدهاشو ندارم . البته گشتم ولی پیدا نکردم . به نظرت همچین کدی به نظرت هست که داخل c++ بتونم سریال هارد و مادر بورد رو پیدا کنم ؟

Reza-HNA
شنبه 07 شهریور 1394, 13:16 عصر
من کدهای cpu رو دارم که تو C++‎ نوشتم و میتونم id اونو در بیارم اما بقیه کدهاشو ندارم . البته گشتم ولی پیدا نکردم . به نظرت همچین کدی به نظرت هست که داخل C++‎ بتونم سریال هارد و مادر بورد رو پیدا کنم ؟

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

gholami.vahid
شنبه 07 شهریور 1394, 13:18 عصر
خب اگر دنبال این هستید که روی برنامتون یک سیستم قفل نرم افزاری راه اندازی کنید که دیگه نیاز به کد نویسی نداره!
پروتکتور Enigma خیلی راحت هم میاد برنامتون رو محافظت میکنه هم سیستم قفل نرم افزاری داره هم روی ویندوز مجازی اجرا نمیشه.
کافیه برنامتون رو باهاش پروکت کنید . روی هر سیستمی که اجرا بشه با توجه به سخت افزاری کد تولید میکنه مشتری کد رو بهتون میده شما هم با استفاده از کیجن Enigma که مختص خودتون هست کد رو تولید و به مشتری میدید.
سوالی بود باز در خدمتم.

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

Reza-HNA
شنبه 07 شهریور 1394, 17:08 عصر
واقعا ؟ یعنی میشه سریال هم به کاربر بدیم . امنیتش چطوره ؟

اگر برنامتون رو کامل با C++ نوشته باشید میتونم بگم امنیت خوبی داره چون یک مشکل برای کرکر ایجاد میکنه اونم داشتن اطلاعات صحیح هست ، یعنی لازمه کرکر یا خودش برنامه رو بخره یا اطلاعات درست رو از طرفی که داره بگیره .
در واقع برای کرک برنامه باید HWID ، Key و Name رو داشته باشه .

gholami.vahid
شنبه 07 شهریور 1394, 17:23 عصر
اگر برنامتون رو کامل با C++‎ نوشته باشید میتونم بگم امنیت خوبی داره چون یک مشکل برای کرکر ایجاد میکنه اونم داشتن اطلاعات صحیح هست ، یعنی لازمه کرکر یا خودش برنامه رو بخره یا اطلاعات درست رو از طرفی که داره بگیره .
در واقع برای کرک برنامه باید HWID ، Key و Name رو داشته باشه .

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

Reza-HNA
شنبه 07 شهریور 1394, 19:09 عصر
فقط یه سوال که پیش میاد اینکه حتما یه عیبی داره وگرنه همه شرکت ها از این جور برنامه ها استفاده میکردند و دیگه رو ساخت قفل نرم فزاری هزینه ای نمیکردند.

اخ ! ببخشید یادم رفته بود بله درست میگید ، متاسفانه یادم رفته بود چند وقت پیش روش پچ کردن Enigma اومد ، میشه HWID رو به دلخواه عوض کرد وقتی هم بشه این کارو کرد با داشتن نام و کی میشه روی هرسیستمی رجیستر کرد . :اشتباه: :|
خیلی صریح بگم روش قطعی نیست که بتونید نرم افزارتون رو در مقابل کرکر ها محافظت کنید ، باید باهاش کنار بیاید.
راهکار نهایی : خودتون قفل نرم افزاری بنویسید ، با Themida پروتکتش کنید 98 درصد کرکر ها با این کار کنار میرن :چشمک:
اصلا یه کار کنید قفل نرم افزاری رو که نوشتید رو برای تست داخل یه برنامه بزارید توی بخش کرک آشیانه بزارید (امیدوارم تبلیغ نشده باشه :لبخندساده:) اونجا دوستان امنیت برنامتون رو تست میکنن و راه حل بهتون میدن.
ولی آخر هم نفهمیدم شما با چه زبانی نرم افزارتون رو نوشتید؟!؟!:گیج:

gholami.vahid
شنبه 07 شهریور 1394, 20:28 عصر
اخ ! ببخشید یادم رفته بود بله درست میگید ، متاسفانه یادم رفته بود چند وقت پیش روش پچ کردن Enigma اومد ، میشه HWID رو به دلخواه عوض کرد وقتی هم بشه این کارو کرد با داشتن نام و کی میشه روی هرسیستمی رجیستر کرد . :اشتباه: :|
خیلی صریح بگم روش قطعی نیست که بتونید نرم افزارتون رو در مقابل کرکر ها محافظت کنید ، باید باهاش کنار بیاید.
راهکار نهایی : خودتون قفل نرم افزاری بنویسید ، با Themida پروتکتش کنید 98 درصد کرکر ها با این کار کنار میرن :چشمک:
اصلا یه کار کنید قفل نرم افزاری رو که نوشتید رو برای تست داخل یه برنامه بزارید توی بخش کرک آشیانه بزارید (امیدوارم تبلیغ نشده باشه :لبخندساده:) اونجا دوستان امنیت برنامتون رو تست میکنن و راه حل بهتون میدن.
ولی آخر هم نفهمیدم شما با چه زبانی نرم افزارتون رو نوشتید؟!؟!:گیج:

من با سی شارپ نوشتم و هر سه پارامتر cpu و هارد و سریال مادر بورد رو در میارم .رو زبان سی پلاس پلاس کار میکنم گفتم شاید کرک کردنش سخت تر باشه و اما هنوز کد هاشو پیدا نکردم جز cpuid . تو جاوا هم که شما فرمودید کرک میشه و من واسه اونم کدی پیدا نکردم . کلا موندم چیکار کنم

juza66
شنبه 07 شهریور 1394, 21:06 عصر
سلام

من اوایل خیلی پیشنهاد Confuser رو میدادم و تمامی نرم افزارهام رو با این برنامه براشون امنیت ایجاد می کردم..

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


بنظرم از دو نرم افزار Enigma VitrulBox و Enigma Protector برای محافظت از dll و exe تون استفاده کنید. (نظر شخصی منه و خیلی از کارم رو از این طریق براشون امنیت ایجاد کردم)

juza66
شنبه 07 شهریور 1394, 21:13 عصر
به قول دوستمون از نرم افزار Themida هم میشه استفاده کرد:
http://www.oreans.com/downloads.php

gholami.vahid
شنبه 07 شهریور 1394, 21:39 عصر
سلام

من اوایل خیلی پیشنهاد Confuser رو میدادم و تمامی نرم افزارهام رو با این برنامه براشون امنیت ایجاد می کردم..

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


بنظرم از دو نرم افزار Enigma VitrulBox و Enigma Protector برای محافظت از dll و exe تون استفاده کنید. (نظر شخصی منه و خیلی از کارم رو از این طریق براشون امنیت ایجاد کردم)

Enigma خودش از سخت افزار یه id میسازه درسته ؟ پس نیازی نیست من خودم این کارو بکنم یا نه فقط فایل ها رو پک میکنه .چون دوست قبلی گفت سریال هم میتونی برای کاربران با خود اون نرم ازفزار درست کنی و بدی

juza66
شنبه 07 شهریور 1394, 22:06 عصر
بله این نسخه Enigma Protector
134735

Reza-HNA
یک شنبه 08 شهریور 1394, 00:52 صبح
سلام

من اوایل خیلی پیشنهاد Confuser رو میدادم و تمامی نرم افزارهام رو با این برنامه براشون امنیت ایجاد می کردم..

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


بنظرم از دو نرم افزار Enigma VitrulBox و Enigma Protector برای محافظت از dll و exe تون استفاده کنید. (نظر شخصی منه و خیلی از کارم رو از این طریق براشون امنیت ایجاد کردم)

بله به نکته ظریفی اشاره کردید . چون کار Confuser غیر قابل خوندن کردن برنامه هست ، آنتی ویروس هم هر فایلی که نتونه بخونه رو ویروس در نظر میگیره!
Enigma VitrulBox و Enigma Protector هر دو خوب هستن ولی چه میشه کرد هردو آنپک میشن...


@ gholami.vahid : بالاخره یکی رو باید انتخاب کنید هیچ راه قطعی نیست ، Enigma رو فقط برای این پیشنهاد دادم چون خیلی درگیر قفل نرم افزاری شدید .
در ضمن شما که برنامه رو با #C نوشتید و قسمت قفل رو با ++C نوشتید ، بازم برای کرکر فرقی نمیکنه بلکم کار رو ساده میکنه.
بازم میگم شما به برنامه ساده بنویس (یه فرم خالی که فقط یه پیغام نشون بده) یه قفل نرم افزاری هم بزار روش با هر برنامه ای هم میخوای پروتکتش کن بعد بزار توی بخش مهندسی معکوس همین انجمن یا بزار توی بخش کرک آشیانه ، حالا من یا دوستان میان برنامتون رو از نظر امنیتی می سنجیم . به اصطلاح CrackMe بساز.

gholami.vahid
یک شنبه 08 شهریور 1394, 08:31 صبح
بله به نکته ظریفی اشاره کردید . چون کار Confuser غیر قابل خوندن کردن برنامه هست ، آنتی ویروس هم هر فایلی که نتونه بخونه رو ویروس در نظر میگیره!
Enigma VitrulBox و Enigma Protector هر دو خوب هستن ولی چه میشه کرد هردو آنپک میشن...


@ gholami.vahid : بالاخره یکی رو باید انتخاب کنید هیچ راه قطعی نیست ، Enigma رو فقط برای این پیشنهاد دادم چون خیلی درگیر قفل نرم افزاری شدید .
در ضمن شما که برنامه رو با #C نوشتید و قسمت قفل رو با ++C نوشتید ، بازم برای کرکر فرقی نمیکنه بلکم کار رو ساده میکنه.
بازم میگم شما به برنامه ساده بنویس (یه فرم خالی که فقط یه پیغام نشون بده) یه قفل نرم افزاری هم بزار روش با هر برنامه ای هم میخوای پروتکتش کن بعد بزار توی بخش مهندسی معکوس همین انجمن یا بزار توی بخش کرک آشیانه ، حالا من یا دوستان میان برنامتون رو از نظر امنیتی می سنجیم . به اصطلاح CrackMe بساز.

باشه ممنون از پاسخ
همین کارو میکنم
من فکر میکردم سی پلاس کرک نمیشه . زبان دیگه ای نیست تو این زمینه که برم سراغ اون . یا اگر هم باشه برای کرکر زبان برنامه نویسی مهمه یا نه .