PDA

View Full Version : امنیت در این سطح برای این برنامه مناسب است؟ + CrackMe



hamid.shekasteh
پنج شنبه 17 دی 1388, 08:26 صبح
سلام. من برنامه ای برای انجام امور حسابداری و خرید و فروش فروشگاه به صورت عمومی نوشتم.این برنامه به قیمت حدود 10000 تومان برای هر بسته قیمت خورده(که چیزی حدود 4-5 هزار تومان به برنامه نویس می رسد! ).
حالا من روی قفل برنامه ام کار می کنم برای شروع این فایل را گذاشته ام برای کرک می.به نظر شما این سطح از امنیت برای یک برنامه با این قیمت مناسب است یا خیر؟
در صورت درست بودن رمز فعال سازی پیام Ok… آن وسط صفحه ظاهر می شود در غیر اینصورت یا پیامی صادر نمی شود یا Incorrect… نمایش داده می شود.
امید وارم که این مبحث مفید و در راستای اهداف سایت باشد و در آخر ختم بخیر شود.یا حق

hamid.shekasteh
شنبه 19 دی 1388, 08:14 صبح
از دوستان و اساتید کسی نظری نداشت
از کاربران می خوام که سطح امنیتی از 1 تا 100 بدهند و بگید به نطر شما اگر برنامه من با همان قیمت 10000 تومان فروخته شد ، اصلا به کرک کردش می ارزه یا نه؟
از دوستان زیر پیشاپیش تشکر می کنم که برام وقت می گذارند:
JOKER , Mehran , Fh_Prg , Mima_Subzero,BackTrace, Nima NT, Debugger
راستی اگر کسی خواست از صحت عملکرد اطمینان حاصل کنه کد سریالش رو بده تا اکتیوشن کد درست رو براش بفرستم.با تشکر

CYCLOPS
شنبه 19 دی 1388, 08:42 صبح
دوست عزیز لطفا Activation Code این سریال رو بده تا منم یه نگاه بندازم ببینم چه خبره :
14745216

تا اینجا که دیدم از یه تایمر استفاده کردی (با interval=100)
:متفکر:

hamid.shekasteh
شنبه 19 دی 1388, 16:04 عصر
دوست عزیز لطفا Activation Code این سریال رو بده تا منم یه نگاه بندازم ببینم چه خبره :
14745216

تا اینجا که دیدم از یه تایمر استفاده کردی (با interval=100)
:متفکر:

این جواب می تونه به همه کاربران برای کرک کمک کنه.
Activation Code=9007260000
شانس شما چه شماره رندیه!
با تشکر از شما

FastCode
یک شنبه 20 دی 1388, 14:37 عصر
0.
چون من هر کار کردم نتونستم ازش رد نشم.

BackTrace
یک شنبه 20 دی 1388, 21:37 عصر
سلام جناب projeha. از اونجایی که از من هم نام برده بودین، برخودم وظیفه دونستم جواب بدم.
تنها اینو میتونم بگم که خوشبختانه/متاسفانه نتونستم کاری کنم:متفکر:. اصولا کار درمواردی که از Hashها و Cryptoها مثل MD5, Base64, ... استفاده شده سخته مخصوصا در جاهایی مثل برنامه شما که اومدین علاوه براینها همینجوری Object اینور و اونور انداختین.
امیدوارم دوستان به نتایج خوبی رسیده باشن.
معلومه شما برنامه نویس توانایی هستین.:تشویق:

Nima NT
یک شنبه 20 دی 1388, 21:58 عصر
من هم کراکر خوبی نیستم البته اگه اسمم رو بشه گذاشت کراکر.
ولی به نظر قفل جالبی میاد ، چون زیاد مباحث رو پیچوندین ، پیدا کردن راه درست و حسابی برای نوشتن keygen شاید براش کمی سخت باشه ولی نمیدونم آیا patch کردنش هم اینطوری هست یا خیر ، سعی کنید تو برنامه تجاری خودتون روال های فراخوانی رو تا میتونید زیاد کنید.

hamid.shekasteh
دوشنبه 21 دی 1388, 08:44 صبح
با تشکر از توجه همگی دوستان
این شکست نفسی نیست اما هنوز یه برنامه نویس خوب نیستم.
جناب نیما عزیز خیلی لطف دارن چون من خیلی از شیوه های به کار برده شده رو از توی پست های ایشون یاد گرفتم.من یه مواردی رو بگم که شاید باز هم کرک رو راحتتر کنه.
من از MD5,چند نوع انکریپت و توابع بازگشتی و توابع الکی که کار trace رو سخت میکنه استفاده کردم در ضمن با تایمر ها فقط یه سری کار الکی انجام می دم خیلی بهشون توجه نکنید.در ضمن بیشتر چک کردن ها دو یا چند بار انجام میشه.
اگر کرکری هست که من در بالا ذکر نکردم عذر می خوام که اسمشون رو نگفتم.
راستی در مورد احتمال شکسته شدن هم کسی چیزی نگفت.اگه نظری دارید ممنون میشم بگید خصوصا دوستانی که کار تجاری کرده اند.
مشخصات برنامه در صفحه زیر اومده:
http://www.barnamenevis.org/forum/showthread.php?p=885883#post885883

Nima NT
دوشنبه 21 دی 1388, 12:01 عصر
راستی در مورد احتمال شکسته شدن هم کسی چیزی نگفت.اگه نظری دارید ممنون میشم بگید خصوصا دوستانی که کار تجاری کرده اند.
نمیشه گفت که اصلا" شکسته نمیشه ، میتونم بهتون قول بدم که قفلی که 100% باشه نوشته نشده و نوشته نخواهد شد. فقط میتونید زمان / میزان سختی ؛ کرک شدن نرم افزارتون رو بیشتر کنید.

CYCLOPS
دوشنبه 21 دی 1388, 15:25 عصر
متاسفانه کرک شد. . .
خلاصه ای از چیزهایی که از فایلتون فهمیدم :
اسامی کنترل ها و متن اونا رو هم کد کردین (که این مدلی تا حالا ندیده بودم) و برای این کار یه کلاس دارید که فقط توش یه متد هست و یه عدد int به اون متد میفرستید و اون متد براتون یه رشته بر میگردونه
در هر حال اگر فایل ضمیمه اول رو دانلود کنید و اجرا کنید و فقط تا آخر Next کنید دو تا فایل متنی خروجی میگیرید اولی Other.txt که اسامی کنترل ها به طور خلاصه کلیه متن های توی برنامتون هست مثل کد به دست آوردن سریال سیستم و . . .
و فایل دوم serial And Activation.txt تمامی عدد های کد شده تو برنامتون هست
مرحله اول تا اینجا پیش رفتم ولی چون سریالی که گفتید تو فایل serial And Activation.txt نبود پس هنوز برنامتون کرک نشده بود
بعد از اون یه کلاس جالب دیگه تو کدهاتون دیدم که کلی متد داشت که همشون هم رشته برمیگردوندند دیدم خوبیت نداره همین طوری ولش کنم برای همین با چند تا متد اولش کلنجار رفتم و جواب داد
اگر فایل ضمیمه دوم رو اجرا کنید و تا آخر NEXT کنید سریال فعال سازی رو میتونید تو فایل Other.txt ببینید
شرمنده یه مقدار شلوغ کار کردم حوصله ی ساخت یه کیجن تر و تمیز نبود :بامزه:

نکته مهم اینکه من برای بیرون کشیدن رشته های برنامتون یه DLL کوچولو نوشتم (کدش رو همین پایین میبینید و تو ضمیمه ها هم هست) و به متدهاییتون که رشته بر میگردوندند ضمیمه کردم برای کرک فایلتون هم تماما از Reflector استفاده کردم واز همون کدهای Obfuscate شدتون استفاده کردم واگرنه کار راحت تر میشد در ضمن خوب بود اگر برنامتون رو با یه ابزاری پک میکردین تا حداقل کار سخت تر بشه



using System;
using System.Collections.Generic;
using System.Text;

namespace FirstLock_Patch_DLL
{
public class Class1
{
public void getString(string str)
{
try
{
int i = Convert.ToInt32(str);
System.IO.StreamWriter sw = System.IO.File.AppendText("serial And Activation.txt");
sw.WriteLine(str);
sw.Close();
}
catch
{
System.IO.StreamWriter sw = System.IO.File.AppendText("Other.txt");
sw.WriteLine(str);
sw.Close();
}
}
}
}

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

hamid.shekasteh
سه شنبه 22 دی 1388, 08:30 صبح
واقعا کارتون حرف نداشت آقای بابک حاج عظیم زنجانی
در مورد روش های امنیتی استفاده شده چشم حتما میگم.
اما چند سوال :
1- نقل قول:"اسامی کنترل ها و متن اونا رو هم کد کردین (که این مدلی تا حالا ندیده بودم)"
این کار مفید بود؟

2- برای اینکار چقدر وقت گذاشتید؟
3- چه راهکاری برای مقابله با این روشی که شما کرک کردید پیشنهاد می کنید.
4- از چه برنامه ای برای کد نویسی روی کد من استفاده کردید.

با تشکر

CYCLOPS
سه شنبه 22 دی 1388, 09:14 صبح
واقعا کارتون حرف نداشت آقای بابک حاج عظیم زنجانی


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



2- برای اینکار چقدر وقت گذاشتید؟


راستش چون این ترم تا حالا امتحانام رو خوب دادم دیروز خوشحال بودم حوصلم کشید برنامتون رو کرک کنم :بوس: واگرنه انصافا نسبت به قیمتش می ارزه (کارهای امنیتی شما هم نسبت به قیمت نرم افزار خوب بود) و من اگر لازم داشتم واقعا میخریدمش ؛ جدی میگم
بگذریم . . .
من کلا نیم ساعت رو فایل شما وقت گذاشتم خلاصه من تو زمینه کرک تازه کارم دیگه زودتر از این از پسش بر نمیومدم



1- نقل قول:"اسامی کنترل ها و متن اونا رو هم کد کردین (که این مدلی تا حالا ندیده بودم)"
این کار مفید بود؟


کد کردن اسم کنترل ها و متنشون جای بحث داره
مزیتش اینه که بالاخره یه سپر امنیتی هست هر چند با توجه به کدهای زیر میشه فهمید چه خبره (فقط یادت رفته بود خصوصیات کنترل ها تو InitializeComponent(); قابل مشاهده است و اون سرنخ خوبی برام بود) :

this. .set_Name( .(1976468350));
this. .set_Text( .(1976468615));
من از دیدن این کدها فهمیدم چه خبره چون اول داشتم دنبال دکمه ثبت سریالتون میگشتم و از اون به این رسیدم
ولی یه عیب بزرگ داره من با دقت به فایلتون متوجه شدم که لود اولیه برنامتون خیلی کنده اونم در حالی که این فایل تازه تست هست و تعداد کنترل هاش مسلما از برنامه اصلی تون خیلی خیلی کمتره اگر این مکانیزم رو تو برنامه اصلی تون پیاده سازی کنید کاربرانتون حسابی از لود کند برنامتون شکایت میکنن
عیب دیگه اینکه اونجوری خیلی این موضوع به چشم میاد و کرکر زود متوجه حقه تون میشه
راه پیشنهادی من برای این موضوع اینکه :
برای اینکه هم این کدها زیاد تو چشم کرک نیاد و هم لود برنامتون سریع تر بشه فقط کنترل های مهمتون رو اینجوری محافظت کنین مثلا دکمه ثبت و تکست باکس سریال و . . . نه همه
اینجوری هم لود سریع تره و هم کرکر باید بین صدها خط کد نامفهموم دنبال اونا بگرده



4- از چه برنامه ای برای کد نویسی روی کد من استفاده کردید.

من با سی شارپ یه DLL نوشتم که سورسش تو پست قبلیم هست هیچ کار خاصی انجام نمیده فقط عدد ها رو تو فایل serial And Activation.txt مینویسه و رشته ها رو تو فایل Other.txt همین . . .
تو دو تا متد اول کلاستون که بهش مشکوک بودم فقط تابع اون DLL رو فراخوانی کردم یعنی این یه خط کد به فایلتون اضافه شده . . .

Class1.getString(str);هیچ کدی از برنامتون رو هم حذف نکردم یا تغییر ندادم فقط همین یه خط کد کارم رو راه انداخت . . .



3- چه راهکاری برای مقابله با این روشی که شما کرک کردید پیشنهاد می کنید.


در مورد راه های مقابله یه مقدار بالا که توضیح دادم فقط این نکته رو هم حتما انجام بده
فایلت رو حتما پک کن تا کرکر های تازه کار و بیکاری مثل من با ابزارهای ابتدایی مثل Reflector حتی نتونن بازش کنن چه برسه بخوان روش کار کنن

نکته مثبتی که تو فایلتون هست اینکه بعد از DeObfuscate کردن با ابزارهایی که من تست کردم فایلتون خراب میشه و آدم مجبوره با همون کدهای به هم ریخته کار کنه و این اعصاب و روان آدم رو بهم میریزه :عصبانی++:
با چه ابزاری فایلتون رو Obfuscate کردید ؟؟



در مورد روش های امنیتی استفاده شده چشم حتما میگم.


منتظرمااااا :چشمک:

موفق باشی دوست من :چشمک:

hamid.shekasteh
چهارشنبه 23 دی 1388, 08:25 صبح
من کلا نیم ساعت رو فایل شما وقت گذاشتم

منو به فکر واداشت.




من با سی شارپ یه DLL نوشتم که سورسش تو پست قبلیم هست


منظور من دوباره طرز دوباره کد نویسی روی یک کد دیگر است. (به عبارت دیگر من نمی دونم چه جوری یک فایل exe را باز کنم و یک کد بهش اضافه کنم) آیا از روش دامپ استفاده کردید؟




با چه ابزاری فایلتون رو Obfuscate کردید ؟؟

با همون ابزار رایگان معروف Eazfuscator.NET
اما فکر می کنم چیزی که باعث شد DeObfuscate درست جواب نده چیزه دیگریست که در قسمت الگوریم می گم.در مورد پک نکردن هم حق با شماست این قسمت عمدی بود.



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


خب در واقع من هم همینکار را کردم.فقط برای چند تا دکمه و ... فکر می کنم شما کد کردن هایی رو میگید که obfuscator انجام داده.


اما بریم سراغ کلیت الگوریتم:
ابتدا از تمام چیزهایی که لازم داشتم یه کلاس مشتق کردم.و یه سری Method,property,field که بعضا بیخود بودن هم بهشون اضافه کردم.مثلا کلاس btn که از کلاس Button گرفته شده بود. توی فرمم 4 تا پنل داشتم که فقط یکی دیده میشد چون بقیه خارج از محدوده فرم بودند.
من توی فرمم یه سری تایمر گذاشتم که کار trace رو سخت کنه.و فقط همدیگرو صدا میزدند.
از سه تا دکمه استفاده کردم که هر سه در زمان اجرا درست شدن اولی(Next) در فرم لود درست شده و رویداد کلیکش handle شد به یه متد و دکمه دوم(Next) ساخته شد و در اینجا بود که کد وارد شده کنترل میشد.همون کدی که شما یه خط بهش اضافه کردیو... بعد دکمه آخر (Finish) که کار خاصی برای امنیت نمی کرد و فقط خارج میشد.البته این وسط کار با متد ها و مقادیر الکی زیاد انجام میشد.و یه کار توی دو یا چند متد انجام میشد.

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

((btn)sender).Parent.Controls["pnlSerial"].Controls["txt1"].Text=serial;

Btn :همون کلاسی که از Button گرفتم.
pnlSerial:یکی از دو پنلی که در پنل اصلیم بودند.
txt1:یک تکست باکس که توش سریال ریخته میشد.

فکر می کنم چون دسترسی به کنترلها به صورت string بود DeObfuscate مشکل پیدا می کرد.

من متن روی دکمه ها و لیبل هایی که خطا می دادند رو انکریپت کردم و اگر دکمه ای با نام Finish توی برنامه بود کار مهمی نمیکرد و مثل این کار بازم بود که از توضیحش میگذرم.چون همشون از یه روش پیروی می کردند.

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

یه سری چیزای دیگه هم بود مثل: در مقایسه ها شرط ها را تو در تو کردم.یه کار ساده رو با یه تابع بازگشتی می نوشتم و پیچش می دادم.در مقایسه ها به جای مقایسه صریح دو عبارت Hash شده اونها رو مقایسه می کردم.

اگه چیزی از قلم افتاده بود بگید.یا حق

CYCLOPS
چهارشنبه 23 دی 1388, 08:53 صبح
پس اینجور که معلومه خیلی پیچونده بودینش :متفکر:



منظور من دوباره طرز دوباره کد نویسی روی یک کد دیگر است. (به عبارت دیگر من نمی دونم چه جوری یک فایل exe را باز کنم و یک کد بهش اضافه کنم) آیا از روش دامپ استفاده کردید؟



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

نه همونطور که قبلا گفتم از Reflector استفاده کردم و با استفاده از اون کد مورد نظرم رو به فایلتون اضافه کردم

Securebit
چهارشنبه 23 دی 1388, 20:13 عصر
امشب وقت کردم تا این کرک می رو یک محکی بزنم.

مدت زمان برای کرک 15 الی 20 دقیقه.

درجه امنیت : 10/2

hamid.shekasteh
پنج شنبه 24 دی 1388, 08:31 صبح
ممنون که وقت گذاشتید چقدر طول کشید؟