PDA

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



hadisalahi2
دوشنبه 25 خرداد 1394, 09:28 صبح
سلام به همگی
من یک نرم افزار نوشتم که قبلا با قفل سخت افزاری بود
حالا میخوام تبدلیش کنم به کد فعال سازی

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

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

ممنون میشم اگه پیشنهاد یا راهکاری دارید بنده رو از اون محروم نفرمایید
یا حق

یوسف زالی
دوشنبه 25 خرداد 1394, 10:12 صبح
سلام.
بستگی داره چقدر برات security اهمیت داره.
مثلا می شه سریال هارد یا MAC رو ازش بگیریم (یا با وب سرویس، ایمیل، یا حتی تلفنی) و بر اساس اون یک فایل DLL کوچیک برا اساس چیزی که گرفتیم کد کرده و تولید کنیم و بهش بدیم بذاره کنار برنامش.
این فایل به درد کسی نخواهد خورد و کار قفل سخت افزاری رو خواهد کرد. قابل کرک هم نیست چون محتوای کدینگش با هر کس دیگه فرق می کنه.نمی شه نداشتش چون بخشی از کد برنامه داخلشه.
البته راه برای کرک داره اما باید برنامه اصلی شما کرک بشه تا سریال هارد یا MAC رو به اشتباه همیشه یک رشته خاص در بیاره. پس روی این سریال یونیک باید خیلی دقت کنید.

hadisalahi2
دوشنبه 25 خرداد 1394, 10:21 صبح
بستگی داره چقدر برات security اهمیت داره.
اهمیت داره وگرنه قفل نمیساختیم براش :لبخند:



MAC رو ازش بگیریم
این کد چیه؟ هارد رو میدونم اما این کد چیه؟



ر اساس اون یک فایل DLL کوچیک برا اساس چیزی که گرفتیم کد کرده و تولید کنیم و بهش بدیم بذاره کنار برنامش.

این روش رو اصلا کار نکردم
امکانش هست در مورد یک کمی توضیح بدی؟

یوسف زالی
دوشنبه 25 خرداد 1394, 10:55 صبح
MAC آدرس کارت شبکه هست و به طور خیلی خیلی قابل اعتمادی یونیکه.
روش رو توضیح دادم،
فرض کن برنامه رو از من گرفتی، با باز شدنش برنامه می گرده دنبال یک DLL کنارش، اگر نباشه یا درست ساخته شده نباشه ارور می ده.
به سایت من میای، کد هایی رو که لازم دارم می دی (این کار می تونه از درون خود برنامه انجام بشه) وب سرویس فایلی رو که لازم داری بر اساس کدهایی که بهش دادیم تولید می کنه بهت می ده.
داخل این فایل مثلا ده خط کد لود شدن برنامه هست، مثلا کانکشن استرینگ هست یا هر چیز ضروری دیگه که برنامه بدون اون ران نمی شه ..

hadisalahi2
دوشنبه 25 خرداد 1394, 11:20 صبح
MAC آدرس کارت شبکه هست و به طور خیلی خیلی قابل اعتمادی یونیکه.

اگه به فرض سیستم مقصد کارت شبکه نداشت یا درایورش نصب نبود آیا باز هم سریال Mac رو برمیگردونه؟

یوسف زالی
دوشنبه 25 خرداد 1394, 11:54 صبح
فکر می کنم قبلا یک مورد دیده باشم که خروجی خالی داده بود. مطمئن نیستم.
سریال هارد رو می شه fake کرد. خلاصه از چیزایی استفاده کنید که یونیکه. مثلا ترکیبی از سریال هارد، سی پی یو یا ..
اصلا به dll های ویندوزی دلتون رو خوش نکنید که مثلا تایم استامپ اون ها رو بگیرید، یه بار بلای اون سرم اومده.

hadisalahi2
دوشنبه 25 خرداد 1394, 12:37 عصر
یک تیکه کد به درد بخور از گرفتن سریال هارد و CPu داری؟
توی اینترنت زیاده
اما نمیدونم کدومش بهترین و مطمئن ترینه
اگه یک کد تست شده داری ممنون میشم بهم برسونی

Mahmood_M
دوشنبه 25 خرداد 1394, 21:25 عصر
مهمترین مسئله در این مورد ، نحوه بررسی قفله
یعنی شما از هر روشی برای تولید یک کد یکتا استفاده کنید ، نهایتا باید در برنامه وجود یا صحت یا ... اون رو چک کنید ، اگر روش ساده ای برای این کار داشته باشید ، برای کرک کردن برنامه نیازی به دسترسی به کد یا فایل یا شبیه سازی خاصی نیست و به راحتی میشه از شرط بررسی صحت قفل پرید !
چند نکته خیلی اهمیت داره :
1. از روشهای شناخته شده استفاده نکنید
2. هیچ وقت کد تولید شده رو مستقیما درون خود برنامه و یا فایل DLL یا ... قرار ندید
3. فرآیند چک کردن قفل باید در چندین قسمت برنامه انجام بشه
4. فرآیند چک کردن قفل باید به قسمتهای کلیدی برنامه گره بخوره ، مثلا فرض کنید تابعی داریم که صحت قفل رو بررسی می کنه ، میشه این تابع رو دور زد و از روش پرید اما اگر مثلا فعال سازی بانک اطلاعاتی شما در همین تابع انجام بشه ، پریدن از این تابع عملا نرم افزار رو بی استفاده می کنه
5. از ترکیب چند روش استفاده کنید
6. وابسته به سیستم عامل نباشید
و ...

بهترین راه راهیه که خودتون با کمی خلاقیت بهش برسید

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

majidmajid0098
دوشنبه 25 خرداد 1394, 21:46 عصر
نظر من اینه شما تا صبح بشین قفلو پیچیده تر کن !

اون کسی که میخواد بشکنه میشکنه خیلیم سخت نیست !

شما نرم افزارت از بزرگترین های دنیا که نیمتونه امنیت بالاتری داشته باشه ( چون اونا خیلی سابقه بسیاری دارن و تجربه زیاد .... و بهترین راه هارو میزنن واسه خودشون )

همه کرک شدن !!

حتی ما افرادیو میشناسیم و با چشامون دیدیم که قفل سخت افزاریو میشکنن اما ذکر کنم خیلی طول میکشه و بسیار وقت بر هست ... ( چه برسه بقیه :D )


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



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

ببینین یه مثال :

مثل صفحات غیر پویا میمونه ( مثلا صفحات html ) که توسط کلاینت اجرا میشه ! یعنی کل موارد مورد نیازش پیش کاربر هستش !

یعنی کاربر کامل به همه جاش دسترسی داره !

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


ولی خوشبختانه کشورمون از برنامه نویس های داخلی به خوبی حمابت میکنه ( ایول به ایرانمون :d )

ولی خوب کرکر ها اگر خبر داشته باشین حتی برنامه های ایرانیو کرک میکنن منتها پخشش نمیکن و پریوت میمونه بی خودشون ...



من همه اینارو بابت اطلاع رسانی گفتم .

اگر پر حرفی کردم معذرت و اینکه خلاصه : هرچی پیچیده تر کنی کرکر رو خسته میکنی ولی یه مشت کنه هستن ول کن نیستن :d

Mahmood_M
دوشنبه 25 خرداد 1394, 22:09 عصر
شما نرم افزارت از بزرگترین های دنیا که نیمتونه امنیت بالاتری داشته باشه ( چون اونا خیلی سابقه بسیاری دارن و تجربه زیاد .... و بهترین راه هارو میزنن واسه خودشون )
لزوما این نرم افزارها امن ترین قفل ها رو ندارند ، چه بسا قفل امنی هم ندارند !
شرکت های بزرگ به بازار هدفشون نگاه می کنند
اولا این که قانون با بحث کرک نرم افزارهای بزرگ در کشورشون مقابله می کنه
دوم اینکه فرهنگ و توان اقتصادی مناسب برای استفاده از نرم افزارهای بزرگ در همون کشورها وجود داره
سوم اینکه اصولا پشتیبانی از نرم افزار در کشورهایی که مردم جامعه شون زیاد با نرم افزار سر و کله می زنن اهمیت زیادی داره که مردم رو به خرید نسخه ی کامل ترغیب می کنه
همین چند مورد نرم افزارهای بزرگ رو به سود مورد نظرشون می رسونه ، در کنار این موارد سعی می کنن قفل ایمنی هم داشته باشن
...

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

ببینین یه مثال :

مثل صفحات غیر پویا میمونه ( مثلا صفحات html ) که توسط کلاینت اجرا میشه ! یعنی کل موارد مورد نیازش پیش کاربر هستش !

یعنی کاربر کامل به همه جاش دسترسی داره !

صفحه ی HTML با یک Native Application در این مورد خیلی فرق داره !
میشه قسمتهای مهم قفل رو از کاربر مخفی کرد یا همونطور که گفتم ، با عملیات ها و دستورات Fake ، کار رو سخت کرد
...
یک نرم افزار به هر حال کرک خواهد شد ، اما آقای X اگر کرکر بسیار با تجربه ای هم باشه وقتش رو برای نرم افزاری که 100 تا مشتری داره و قفل محکمی هم داره ، تلف نمی کنه ، مگر اینکه توجیح اقتصادی گنده ای داشته باشه

یوسف زالی
دوشنبه 25 خرداد 1394, 23:28 عصر
نهایتا باید در برنامه وجود یا صحت یا ... اون رو چک کنید

اشتباهه.
در روشی که گفتم این اتفاق نمی افته. در حقیقت اصلا چک کردنی در کار نیست. مهم ترین قسمت در روش من اینه که جلوی ساخت سریال fake گرفته بشه.
هر قفلی به ذات خود شکننده هست. هر دری که روش قفل گذاشتن با کلیدی باز خواهد شد، خواه کلید خودش باشه یا یک کلید قلابی بهش بخورونن. وگرنه به جاش دیوار می ساختن، حالا شما در خونتون رو قفل نمی کنید؟

بحث رو به حاشیه نبرید لطفا.
یک کد دارم که ازش استفاده کردم، شاید بهترین نباشه اما برای من در زمان خودش خوب جواب داده بود.



function GetDriveInfo(Drive: Char): string;
var
VolumeLabel, FileSystem: Array[0..$FF] of Char;
SerialNumber, DW, SysFlags: DWord;
DriveLetter: Char;
begin
GetVolumeInformation(PChar(Drive + ':\'),
VolumeLabel,
SizeOf(VolumeLabel),
@SerialNumber,
DW,
SysFlags,
FileSystem,
SizeOf(FileSystem));
Result := IntToHex(SerialNumber, 8);
end;




سریال هارد نیست، سریال درایوه.

majidmajid0098
دوشنبه 25 خرداد 1394, 23:30 عصر
سلام .

خوب کسی که روی امنیتش کار نمیکنه اولا چون میدونه هر حال کرک خواهد شد چون برنامه کاربردی ای هست ! ( خودتونم ذکر کردید به هر حال کرک میشه )

همون طور که ذکر کردم برنماه نویس فقط میتونه وقت کشی کنه ولی نمیتونه جلو کار رو بگیره !


و اینکه صفحه ی HTML با یک Native Application در این مورد خیلی فرق داره ! :::

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

بالاخره تو سیستم اجرا و ... میشه !

یعنی همون " اقای X به قول شما " دستش بازه که کارش رو پیش ببره !

dark-man
سه شنبه 26 خرداد 1394, 09:31 صبح
سلام به همگی
من یک نرم افزار نوشتم که قبلا با قفل سخت افزاری بود
حالا میخوام تبدلیش کنم به کد فعال سازی

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

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

ممنون میشم اگه پیشنهاد یا راهکاری دارید بنده رو از اون محروم نفرمایید
یا حق

سلام
من هم با همین موضوع دست و پنجه نرم کردم و الان هم درگیر همین موضوع هستم، در نهایت به نتیجه مشخصی نرسیدم و برای همین روش کار رو عوض کردم، به قول دوستان بالاخره کرک میشه، دیر و زود داره سوخت و سوز نداره مگر اینکه واقعا برنامه ارزش کرک کردن نداشته باشه .
روش من که البته خودم هم از تجربه سایر دوستان استفاده کردم اینه :
من یه کد 6 رقمی روی سیستم کاربر تولید می کنم بر اساس وضعیت cpu، کاربر موقع خرید اون کد رو باید به من بده تا در دیتابیس ذخیره کنم بعد از پرداخت من یه کد فعال ساز بهش میدم یا یک فایل لایسنس که الان فایل هست، توی اون فایل یه سری اطلاعات رو به صورت hash شده قرار میدم و اگر تغییری بده برنامه اجرا نمیشه . حالا یکی میاد کرک می کنه و خب استفاده می کنه ولی یه جا نیاز داره برنامه کرک شده رو بروزرسانی کنه یا پشتیبانی بگیره یا هر نوع خدمات دیگه ای، وقتی با من تماس میگیره اول بررسی می کنم اطلاعاتی که به من میده توی دیتابیس من روی سایتم هست یا نه، مثل اسم و تلفن و اون کد 6 رقمی، اگه اطلاعاتی که داد صحیح بود که خدمات دریافت می کنه، اگر هم صحیح نبود که خب معلوم میشه یه ریگی در کفشش هست .
البته همین روش هم اشکالاتی داره که شاید از دید من پنهان مونده، گرچه برنامه تا الان بارها کرک شده و keygen هم براش هست ولی برای من مهم وجود اطلاعات خریدار هست، حالا 100 تا keygen و کرک هم تولید بشه مهم نیست .

Mahmood_M
سه شنبه 26 خرداد 1394, 18:52 عصر
اشتباهه.
در روشی که گفتم این اتفاق نمی افته. در حقیقت اصلا چک کردنی در کار نیست. مهم ترین قسمت در روش من اینه که جلوی ساخت سریال fake گرفته بشه.
هر قفلی به ذات خود شکننده هست. هر دری که روش قفل گذاشتن با کلیدی باز خواهد شد، خواه کلید خودش باشه یا یک کلید قلابی بهش بخورونن. وگرنه به جاش دیوار می ساختن، حالا شما در خونتون رو قفل نمی کنید؟
بحث اصلی اینجاست که در بسیاری از موارد نیاز به داشتن قفل و کلید و شبیه سازی اون نیست ، از روی دیوار میشه پرید !
میشه بفرمایید چطور امکان داره بنده یک مکانیزم برای ساخت و نگهداری یک کد یا قفل یا هر چیزی مثل این ایجاد کنم و در هنگام شروع و یا در هنگام کار با برنامه صحت رعایت این مکانیزم یا صحت کد یا صحت وجود یک چیزی به نام قفل یا کلید رو بررسی نکنم ؟!؟
در اکثر روشهای کرک سعی بر اینه که دستور بررسی قفل مقدار مثبتی برگردونه و اصلا نیازی به کد ، نحوه ساختش ، الگوریتمش و ... نیست
مگر اینکه این دستورات رو به بدنه ی اصلی برنامه و قسمتهای مهم اون گره بزنیم


بحث رو به حاشیه نبرید لطفا.
؟!؟


ما مثال زدیم که کل سورس مثلا در اختیار کاربر هست ایا در نرم افزارات سورس از هوا میاد پایین ؟؟
در این مورد ، سورس در اختیار کاربر نیست

یوسف زالی
سه شنبه 26 خرداد 1394, 23:51 عصر
در مورد به حاشیه رفتن بحث، شخص مورد اشاره شما نبودید.
مکانیسم هایی وجود داره که بدون jump شرطی رو چک می کنند. مکانیسم های قفلی هم وجود داره که اصلا شرطی رو چک نمی کنند. در حقیقت خود بدنه دستورات کد می شوند و با کلیدی دی کد می شوند و اجرا می شوند، حالا اگر از قسمت دی کد کردن jump بزنیم یا به هر طریقی ret کنیم، بخشی از بدنه برنامه رو از دست خواهیم داد.
این مورد رو که یک چیزی چک بشه کلا بگذارید کنار.
مثل این می مونه که من به شما بگم @32$4%^&^GFFFd7_-=
شما باید این چیزی که گفتم رو اجرا کنی
این چیز هم می تونه هر کد critical ی باشه
بدون اجرای اون هم برنامه لود نمی شه و ناقصه، مثلا این کد یک پوینتر به یک تابع API هست یا هر چیز دیگه.
برای این که بفهمید چی می گم باید اون رو دی کد کنید. با کلیدی که مثلا سریال هارد شماست.
حالا چطور می شه این رو کرک کرد؟ قبل از این که این رشته تولید بشه باید سریال fake تولید کنید.
نحوه کرک کردن این سری کد ها اصلا آسون نیست، به خصوص وقتی ترکیب بشه با obfuscator های اسمبلی و شرط های بدون jump در بایت کد.

pbm_soy
چهارشنبه 27 خرداد 1394, 03:20 صبح
خوب بود مدیر بخش عزیز

در پست اولتون گفته بودید به API های ویندوز و غیره اعتماد نکنید منم موافق هستم ولی ای کاش چند تا کار یا کد یا منبع معرفی میکردید که بشه از آنها استفاده کرد به عنوان مثال در کد شما که اطلاعات پیک درایو (پارتیشن) را میدهد که هم میتواند با فرمت شدن چند مورد از آنها تغییر کنند (مانند label و سریال نامبر) البته این موارد بصورت دستی و بدون فرمت کردن هم قابل تغییر است

مثالی میزدید یا منابعی معرفی میکردید که بتوان با آن سریال سخت افزاری هارد دیسک را گرفت و یا سریال مادربرد و یا حتی ورژن و نوع بایوس و یا MAC address کارت شبکه و غیره ......
چون در اولین مرحله ساخت قفل استفاده از یک فاکتور یا معیار ثابت و منحصربفرد است به عنوان مثال اگر بیائیم از سریال نامبر یک درایو استفاده کنیم و قفل را با بهترین و ایده الترین الگوریتم درست کنیم بازهم ضعف دارد چون معیار اولیه که همه چیز براساس آن کار خواهد کرد ضعیف است و قفل شکن میاد یک نمونه شبیه آنرا درست میکند مثلا label درایو را مانند درایوی که قفل از آن استفاده میکند تغییر میدهد و یا سریال نامبر درایو خودش را مانند سریال نامبر درایوی که قفل بروی آن کار میکند تغییر میدهد(با نرم افزارهای DiskEditor)
ولی تغییر دادن سریال نامبرهای سخت افزاری امکان پذیر نیست و یا اینکه دشوار است

hadisalahi2
چهارشنبه 27 خرداد 1394, 09:31 صبح
من اکثر کدهایی که توی اینترنت هست رو گرفتم و تست کردم
متاسفانه هر کدومشون توی یک نوع ویندوز یا سیستم لنگش داره و اطلاعات درست رو بر نمیگردونه

مخصوصا در مورد قطعات سخت افزاری مثل CPu و Main

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

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

اما بازم این راه مطمئن و ایمنی نیست

معمولا کدهای چک فایل رو هم در لابه لای کدهایی میزارم که بدون اونها برنامه اجرا نمیشه.

و برنامه رو هم با یک پکر ، فشرده میکنم

اما سوال اینجاست که اصولا میخوام بدونم نگهداری اطلاعات اکتیو برنامه در کجا ، امن ترین حالت رو داره؟

یوسف زالی
چهارشنبه 27 خرداد 1394, 09:51 صبح
اصولا هیچ جا. مگر این که برنامه شما ابری باشه یا بخشی از اون روی سرور های شما نگه داری بشه.

hadisalahi2
چهارشنبه 27 خرداد 1394, 10:00 صبح
یوسف جان میشه در مورد این روشی که گفتی یک کم بیشتر توضیح بدی و اینکه برای پیاده سازیش باید از کجا و چطور شروع کنیم ؟

یوسف زالی
چهارشنبه 27 خرداد 1394, 10:42 صبح
کدوم روش؟ روش کدینگ؟

hadisalahi2
چهارشنبه 27 خرداد 1394, 11:11 صبح
مکانیسم هایی وجود داره که بدون jump شرطی رو چک می کنند. مکانیسم های قفلی هم وجود داره که اصلا شرطی رو چک نمی کنند. در حقیقت خود بدنه دستورات کد می شوند و با کلیدی دی کد می شوند و اجرا می شوند، حالا اگر از قسمت دی کد کردن jump بزنیم یا به هر طریقی ret کنیم، بخشی از بدنه برنامه رو از دست خواهیم داد.


در مورد این روش لطفا

یوسف زالی
چهارشنبه 27 خرداد 1394, 11:35 صبح
سعی می کنم این آخر هفته نمونه کدی بنویسم برات. اگر تونستم همینجا می گذارم.

arash_ebrahimi_nk
چهارشنبه 27 خرداد 1394, 14:40 عصر
در مورد به حاشیه رفتن بحث، شخص مورد اشاره شما نبودید.
مکانیسم هایی وجود داره که بدون jump شرطی رو چک می کنند. مکانیسم های قفلی هم وجود داره که اصلا شرطی رو چک نمی کنند. در حقیقت خود بدنه دستورات کد می شوند و با کلیدی دی کد می شوند و اجرا می شوند، حالا اگر از قسمت دی کد کردن jump بزنیم یا به هر طریقی ret کنیم، بخشی از بدنه برنامه رو از دست خواهیم داد.
این مورد رو که یک چیزی چک بشه کلا بگذارید کنار.
مثل این می مونه که من به شما بگم @32$4%^&^GFFFd7_-=
شما باید این چیزی که گفتم رو اجرا کنی
این چیز هم می تونه هر کد critical ی باشه
بدون اجرای اون هم برنامه لود نمی شه و ناقصه، مثلا این کد یک پوینتر به یک تابع API هست یا هر چیز دیگه.
برای این که بفهمید چی می گم باید اون رو دی کد کنید. با کلیدی که مثلا سریال هارد شماست.
حالا چطور می شه این رو کرک کرد؟ قبل از این که این رشته تولید بشه باید سریال fake تولید کنید.
نحوه کرک کردن این سری کد ها اصلا آسون نیست، به خصوص وقتی ترکیب بشه با obfuscator های اسمبلی و شرط های بدون jump در بایت کد.

یه crack_me دقیقا به همین روشی که فرمودید گذاشته بودم توی بخش امنیت که البته برای خیلی ها کار سخت میشه اما crack_me من هم توسط یکی دوستان کرک شد و تاپیکش هم هنوز هست.
در هر صورت راه واسه کرک کردن چنین مسائلی هست و دوستانی هستند که واقعا برنامه نویسن و فهم اسمبلی دارن و تک تک کدهای اسمبلی رو (حتی وقتی توی رم دی کریپت میشه با اینکه مبهم سازی شده) خط به خط بررسی میکنند یعنی چنین حوصله هایی دارند!
ولی خب روشی که گفتین یکی از بهترین روش هاست و فکر نکنم همه برنامه نویس های این انجمن بتونن چنین قفلی رو بدرستی پیاده سازی بکنن چون این تئوری رو من هم داشتم و با توجه به سواد برنامه نویسی خوب (+انگلیسی خوب +سواد اسمبلی +سواد Api +تجربه برنامه نویسی سیستمی ویندوز) چهار ماه طول کشید تا بتونم توی برنامه خودم تا حدی عملی ش بکنم.
یکی دو تا تاپیک آموزشی کوچیک هم توی بخش امنیت نرم افزار قرار دادم اگه دوستان علاقه مند هستند میتونن برن نگاه کنند.

موفق باشید.

hadisalahi2
پنج شنبه 28 خرداد 1394, 09:23 صبح
یکی دو تا تاپیک آموزشی کوچیک هم توی بخش امنیت نرم افزار قرار دادم اگه دوستان علاقه مند هستند میتونن برن نگاه کنند.


ممنون میشم اگه لینک بدی



سعی می کنم این آخر هفته نمونه کدی بنویسم برات. اگر تونستم همینجا می گذارم.
ممنون داداش
منتظریم

arash_ebrahimi_nk
پنج شنبه 28 خرداد 1394, 11:55 صبح
یه تاپیک این هست

http://barnamenevis.org/showthread.php?401778-%D9%85%D8%A8%D9%87%D9%85-%D8%B3%D8%A7%D8%B2%DB%8C-%DB%8C%D8%A7-%D9%BE%DB%8C%DA%86%DB%8C%D8%AF%D9%87-%DA%A9%D8%B1%D8%AF%D9%86-%DA%A9%D9%8F%D8%AF%D9%87%D8%A7%DB%8C-%D8%A8%D8%A7%DB%8C%D9%86%D8%B1%DB%8C

که توش چند تا مطلب هست...

-----

این تاپیک هم توش crack_me من هست در طی مراحل پیشرفتش که چند تا پست آخر جالبه نگاه کنید

http://barnamenevis.org/showthread.php?399826-CrackMe-ARASH-V-10

---

این رو هم ببینید شاید ایده ای داشت براتون

http://barnamenevis.org/showthread.php?390070-%D8%AC%D9%84%D9%88%DA%AF%DB%8C%D8%B1%DB%8C-%D8%A7%D8%B2-%D8%AA%D8%BA%DB%8C%DB%8C%D8%B1-%D9%85%D8%AA%D8%BA%DB%8C%D8%B1-%D8%AA%D9%88%D8%B3%D8%B7-%DA%A9%D8%B1%DA%A9%D8%B1%D9%87%D8%A7%D8%9F

یوسف زالی
پنج شنبه 28 خرداد 1394, 12:20 عصر
ببین، شما این مراحل رو طی می کنید:

برنامه مشتری می گرده دنبال یک فایل به نام مثلا 1 با فرمت txt که در اون اطلاعات کانکشن به دیتابیسه (مثلا)
این فایل یا نیست یا فرمتش غلطه
به سرور شما یک درخواست می ده و سریالش رو براتون می فرسته (سریال هارد، یا هر چیز یکتای دیگه)
سرور شما بر اساس سریال هارد فایلی رو درست می کنه و براش می فرسته
نمونه این فایل رو گذاشتم
برنامه در اجرای بعدی این فایل رو می خونه و به عنوان کلید همون سریالی رو که برای سرور شما ارسال کرده بوده به برای دیکد کردن اون فایل استفاده می کنه
و از محتویاتش لذت می بره.

نکات:
1- به جای کانکشن استرینگ می تونید از هر چیز لازم دیگه ای استفاده کنید. در صورت ترکیب با هیدرا می تونید از اسکریپت های دلفی در برنامه هم استفاده کنید و بخشی از برنامه تون رو در اونها بگنجونید
2- سیستم کد کردنی که در این مثال زدم خیلی خیلی ماسته! از یک سیستم درست درمون استفاده کنید
3- عبارت "this is a serial of my system" در این مثال همون سریال یکتای شماست
4- اصولا سعی کنید کدینگ شما متقارن نباشه، در مثال من کدینگ متقارنه، سعی کنید سالت کنید، کاراکتر های خروجی رو مدیریت کنید و حتی الامکان اونها رو به فرم hex ذخیره کنید
5- فرمت فایل من در این مثال txt هست، ابدا از این فرمت استفاده نکنید، این فقط برای مثال بود. می تونید از فرمت های dll استفاده کنید و این کدینگ رو در یکی از API هاش بریزید. حسن این کار اینه که در تابع مربوطه می تونید چیزهای دیگه ای رو تست کنید، مخصوصا کلید یونیک سیستمش رو و یا اینکه به سرورتون ایمیلی بزنید یا ...
6- همون طور که در این مثال می بینید عدم وجود اون فایل یعنی عدم اتصال به دی بی، از کدهایی استفاده کنید که بودنش براتون حیاتی باشه. این فایل هم فقط به درد همون سیستم می خوره.
7- این روش هم کرک پذیره، مثلا دقیقا بعد از دی کد شدن، سعی کنید از روشهای دیگه ای هم کنارش استفاده کنید، مثلا ترکیب تایم سیستم، با دی کدینگ که هر بار یک چیز جدید به شما بده، و شما بصورت موردی از اجزایی از دی کد استفاده کنید، این کار شدنیه، روش فکر کنید
8- روش بیان شده وحی منزل نیست و من هم ادعایی ندارم، دوستانی که روشهای بهتری دارند بیان کنند ما هم استفاده می کنیم.

من از همین روش برای آپدیت نرم افزاری که با جاوا روی اندروید نوشتم استفاده کردم و به خوبی جواب داده.
متشکرم!

hadisalahi2
جمعه 29 خرداد 1394, 10:57 صبح
2- سیستم کد کردنی که در این مثال زدم خیلی خیلی ماسته! از یک سیستم درست درمون استفاده کنید

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



3- عبارت "this is a serial of my system" در این مثال همون سریال یکتای شماست


به نظرت یونیک ترین کد سیستم چیه؟
اون ولوم درایو بعد از تغییر ویندوز قائدتا تغییر میکنه درسته؟



5- فرمت فایل من در این مثال txt هست، ابدا از این فرمت استفاده نکنید، این فقط برای مثال بود. می تونید از فرمت های dll استفاده کنید و این کدینگ رو در یکی از API هاش بریزید. حسن این کار اینه که در تابع مربوطه می تونید چیزهای دیگه ای رو تست کنید، مخصوصا کلید یونیک سیستمش رو و یا اینکه به سرورتون ایمیلی بزنید یا ...

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



7- این روش هم کرک پذیره، مثلا دقیقا بعد از دی کد شدن، سعی کنید از روشهای دیگه ای هم کنارش استفاده کنید، مثلا ترکیب تایم سیستم، با دی کدینگ که هر بار یک چیز جدید به شما بده، و شما بصورت موردی از اجزایی از دی کد استفاده کنید، این کار شدنیه، روش فکر کنید


این که کاملا درسته
هدف فقط پیچیده تر کردن یک کمی از کدهاست و شاید خسته شدن کرکر :لبخند::لبخند:

یوسف زالی
جمعه 29 خرداد 1394, 13:23 عصر
یونیک ترینش MAC هست.
سریال ولوم تغییر پذیره. حتی نرم افزاری

hadisalahi2
شنبه 30 خرداد 1394, 09:55 صبح
یک کد تر و تمیز داری برای گرفتن این سریال؟
یک کد گرفتم در ظاهر Mac رو برمیگردون ، اما هر بار که برنامه رو اجرا میکردم میدیدم سریال تغییر میکنه
بعد از کلی این در و اون در دیدم هر سری یک کد MAC برمیگردونه

اگه زحمتی نیست تست شده اگه داری یه لینک بده

golbafan
جمعه 05 تیر 1394, 20:37 عصر
MAC آدرس کارت شبکه هست و به طور خیلی خیلی قابل اعتمادی یونیکه

سلام!
مک آدرس قابل تغییره براحتی...
کافیه جستجو کنید change mac adress
در گوگل البته

https://technitium.com/tmac/

idehrayan
پنج شنبه 18 تیر 1394, 18:43 عصر
سلام
من تو این روشها (البته به جز روشها حرفه ای که اساتید پیشنهاد دادن ) روشهایی ساده تری مثل استفاده از سریال هارد دیسک و... رو دیده و استفاده کردم و متوجه شدم یکسری مشکلات داره (مثلا با فرمت کردن درایو کد ایجاد شده تغییر میکنه یا ایجاد کد تکراری در سیستم های متفاوت و یا ایجاد کد متفاوت در یک سیستم و...)
بعد از دیدن این مطلب به ذهنم رسید با توجه به اینکه ظرفیت درایو تازمانی که هارد مجددا پارتیشن بندی نشه ظرفیت درایوها ثابت خواهد ماند . آیا میشه در برنامه های کوچیک از ظرفیت درایو c بعنوان کد پایه ایجاد قفل استفاده استفاده کرد؟ (البته بهتره با یه چیز دیگه ای مثل تاریخ ساخت فایل ترکیب بشه)
کد زیر ظرفیت درایو رو بر حسب بایت بدست میاره

lbl1.Caption:=IntToStr(DiskSize(0));

یوسف زالی
جمعه 19 تیر 1394, 04:00 صبح
متاسفانه اون هم قابل دور زدنه

pezhvakco
شنبه 20 تیر 1394, 09:50 صبح
مک آدرس قابل تغییره براحتی...
کافیه جستجو کنید change mac adress
این برنامه تا هنگامی که ویندوز ری استارت نشه درست کار میکنه .

سریال هارد دیسک

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

ظرفیت درایو c بعنوان کد پایه ایجاد قفل استفاده استفاده کرد
کار پر درد سری است (کاربر به هر دلیلی میگه پارتیشن بندی رو دست کاری زده و ...)
را برای دور زدنش راحت تر از روش های دیگه است .