PDA

View Full Version : CrackMe : lukaskain



lukaskain
جمعه 20 اردیبهشت 1392, 02:25 صبح
با سلام
دوست عزیزی سعی داشتند در آخرین تاپیک crackme به مباحث امنیت پی ببرند
اگر این فایل (http://uploadtak.com/images/j187_crackme.rar) توسط دوستان کرک شد که توضیحات از عزیزان، اگر نشد نکاتی در موردش عرض خواهم کرد
رمز ورود را وارد نمایید یک استرینگ تحویل می گیرید
موفق باشید

Raham
جمعه 20 اردیبهشت 1392, 04:34 صبح
با سلام


فایل آنپک شده: دانلود (http://www.mediafire.com/?wbpc7974yutvxia)





موفق باشیم

lukaskain
جمعه 20 اردیبهشت 1392, 11:05 صبح
سلام خدمت دوست بسیار عزیزم
هدف آنپک شدن نبود، رمز ورود و استرینگ حائز اهمیت می باشد. البته در شیوه برنامه نویسی رمز ورود را به استرینگ وابسته نکردم تا متوجه شوم به همین صورت چقدر پیچیدگی دارد، در صورت ایجاد وابستگی، با تغییر شرط هم به جواب نمی رسید!
باز هم از لطفتون ممنونم

Raham
جمعه 20 اردیبهشت 1392, 21:33 عصر
با سلام خدمت دوستان عزیزمون



رمز: 341896756341


رشته هدف : VMjo9HT8zI4uBWtvxdW7Ez0K2LgLn1



مکانیزم امنیتی فایل اجرایی:
AutoPlay MediaStudio + a protector (Maybe ACProtect) + Xenocode


نمونه سورس برنامه:

if String.ToNumber(Crypto.BlowfishDecryptString("6/oU2iKzjCNJ2YFecrfS1A==", "yugrbuyhe3xretbni86hhuy6eribyu6exmki7hurvb")) == String.ToNumber(Input.GetText("Input1"))-1 then
f1(a) موفق و سربلند باشیم

lukaskain
جمعه 20 اردیبهشت 1392, 21:57 عصر
بله درست هست، شما از طریق اعمال تغییر روی شرط عمل نکردید،با توجه به کدی که قرار دادین، احتمالاً مقدار استرینگ هش شده را بازیابی کردین، درسته؟
اگر رمز ورود و استرینگ وابسته می شد احتمال می دهم کار دشوار تری می شد، البته اگر با تغییر شرط پیش می رفتین، درسته؟
فقط نکته جالب این هست که از یک زبان غیر رایج و محیط برنامه نویسی غیر مرسوم استفاده کردم، برام جالبه که ابزار کرک اینقدر پیشرفت کرده است!
در مجموع اگر بخواهید ارزیابی نمایید از 100% چه امتیازی به این فایل می دهید؟

Raham
جمعه 20 اردیبهشت 1392, 22:06 عصر
فقط نکته جالب این هست که از یک زبان غیر رایج و محیط برنامه نویسی غیر مرسوم استفاده کردم، برام جالبه که ابزار کرک اینقدر پیشرفت کرده است!ابزار کرک منظورتون چیه؟! من صرفا از OllyDbg استفاده کردم!


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




فکر می کنم حدودا 2 از 10 مناسب باشه. ولی نا امید نشید. کار خوبی بود. حداقل تجربه جدیدی واسه من شد;)

موفق باشیم.

lukaskain
جمعه 20 اردیبهشت 1392, 23:49 عصر
دوست عزیز از وقتی که گذاشتین سپاسگزارم
هدف اصلی من همان طور که عرض کردم :
1- استفاده از یک زبان غیر رایج بود
2- عدم به کار گیری مقادیر و متغیر ها به طور مستقیم
در تکنیک اول شکست خوردم! در تکنیک دوم شکست خوردین!
جالبی کار شما در Decompiler بود که اصلاً احتمال نمی دادم! چون برنامه های اجرایی باینری به ندرت دیکامپایل می شوند.

بله منظور من هم olly بود.در حال حاضر قدرتمند ترین دیباگر Assembler Level و Application Mode می باشد. اما مطمئن نیستم که 0 تا 100 کار با olly شده باشد!
هیچ قفلی بدون کلید نیست، اگر بدون کلید هم باشد قابل شکستن است!

به نظر من 2 برای این فایل بسیار عالیست چون از هیچ تکنیکی استفاده نکردم! اما راهکار هایی که در فایل بعدیم انشاءالله فرصت کنم به کار می گیرم:
1- استفاده از Thread به جای حلقه مستقیم! و ایجاد وابستگی آن با فایل اصلی
2- استفاده مفید از Code Checksum - CRC Calculate و کنترل یک پارچگی برنامه
3- استفاده از روتین های آنتی دیباگ مانند به کار گیری کدهای نا معلوم و نامشخص، گیج کردن یا از کار انداختن دیباگر، کنترل پرچم های CPU، کشف دیباگر و توقف آن یا توقف روند اجرای برنامه (بستن راه نفوذ فایل مزبور)
4- استفاده از روتین های آنتی دامپ مانند جلوگیری از بازسازی فایل باینری از طریق Memory Image (بستن راه نفوذ فایل مزبور)
5- درهم ریزی ساختار قابل شناسایی باینری (بستن راه نفوذ فایل مزبور)
6- Data Coding مانند افزودن یک عدد به کدهای فایل، XOR کردن فایل و رمز نگاری فایل (بستن راه نفوذ فایل مزبور)
7- و نهایتاً یک تابع در تایمر می نویسم تا موارد زیر را در هر میلی ثانیه کنترل کند!:
• استفاده از مشخصات فردی دیباگر: نام پرسه، مشخصات ثبت شده در رجیستری، مولفه های هدر و ...
• بررسی حافظه مجازی اختصاص یافته به برنامه و تست وجود دیباگر (Hook آدرس یا Hook آدرس توابع دیباگ ویندوز و بررسی وجود پوینتر به آنها یا عدم وجود آن)
• بررسی پردازنده (مخصوص روتین های Ring0)

یکی دیگه از اهدافم که برای اولین بار CrackMe تاپیک کردم اشاره به تاپیک مقایسه فایل های dll و exe هست، 80 درصد مواردی که در بالا عرض کردم در فایل dll قابل اجرا و پیاده سازی نیست. 1و2 تقریباً 3 و 4 و7

از هم فکری شما ممنون و سپاسگزارم

lukaskain
شنبه 21 اردیبهشت 1392, 07:33 صبح
فقط سوالی که باقیست این هست که فایل به احتمال خیلی زیاد Decompile نشده! از Dumper استفاده شده؟

lukaskain
یک شنبه 22 اردیبهشت 1392, 21:12 عصر
دوست عزیز هوش شما قابل تحسین هست، ولی خب باید بگم امتیاز دهی شما نسبت به امنیت این فایل کمی ضعیف! به عبارت دیگه شما فقط تونستید به احتمال زیاد memory Dump انجام بدین همین! نه دی کامپایل نه ریسورس نه هیچ چیز دیگر! لطفاً اگر غیر از این هست بفرمایید تا بر دانش ما نیز افزوده شود. قصد توهین و جسارت اصلاً ندارم فقط می خواهم از عملکرد شما مطلع شوم
پیشاپیش هم از درک بالای شما سپاسگزارم

Raham
یک شنبه 22 اردیبهشت 1392, 21:43 عصر
با سلام خدمت دوستان


دوست عزیز - زبان مورد استفاده شما از نوع اسکریپتی هستش - مثل JAVAScript (از نظر اسکریپتی بودن و بحث کامپایل این مثال و زدم) نتیجه اخلاقی اینکه اصلا هیچگونه کامپایل یا تبدیلی انجام نمیده که من بخوام مثلا ضدشو بزنم - بحث Decompile و هم خودتون پیش کشیدین- من گفتم Decompile کردم؟

AutoPlayMedia Studio فقط زحمت کشیده بود Encrypt کرده بود. که گذاشتم رمزگشایی کنه و استفاده کنم.



به عبارت دیگه شما فقط تونستید به احتمال زیاد memory Dump انجام بدین همین! نه دی کامپایل نه ریسورس نه هیچ چیز دیگر!دوست عزیزم - وقتی زبان مورد استفاده Compiler نیست- من چیو دقیقا باید Decompile کنم؟!!
ریسورس؟ من الان دقیقا چه نیازیه و چرا باید ریسورس انجام بدم؟! شما بفرمایید.


شما فرمودین رمز و دربیار - پیداش کردم. همین





موفق و سلامت باشیم
یا علی

lukaskain
یک شنبه 22 اردیبهشت 1392, 23:02 عصر
ابزار کرک منظورتون چیه؟! من صرفا از OllyDbg استفاده کردم!


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




فکر می کنم حدودا 2 از 10 مناسب باشه. ولی نا امید نشید. کار خوبی بود. حداقل تجربه جدیدی واسه من شد;)

موفق باشیم.

از پاسخ شما بی نهایت سپاسگزارم، دیکریپت با olly؟! و سوال آخر شما کد های انکریپت شده را روی حافظه گرفتین؟
درخصوص کامپایلر باید خدمتتون عرض کنم کامپایلرش Visual C Plus Plus هست
باز هم از وقتی که گذاشتین ممنون

Raham
یک شنبه 22 اردیبهشت 1392, 23:10 عصر
با سلام

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

اون که میگین Visual C++ هست. خود مفسر اون زبان اولیه هستش. الان هدف زبانیه که شما واسش نوشتین.

الان مثلا من کد JAVAScript می نویسم. اما مفسر اون می تونه C++ باشه. میتونه هر زبان دیگه ای هم باشه. مهم خود اون JAVScript هستش.



موفق و سربلند باشیم

lukaskain
یک شنبه 22 اردیبهشت 1392, 23:24 عصر
بله حق با شماست، فکر می کنید استفاده از روتین های آنتی دامپ موثر باشه؟

Raham
یک شنبه 22 اردیبهشت 1392, 23:40 عصر
با سلام


خیر تاثیری ندارد - تکنیک آنتی دامپ عموما بحث روی جلوگیری از دامپ کامل فایل اجرایی می باشد (به نحو مختلف پیاده سازی میشن. دستکاری هدر هم آنتی دامپه - Stolen Code هم آنتی دامپه و...)

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


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




موفق باشیم

lukaskain
یک شنبه 22 اردیبهشت 1392, 23:51 عصر
در زبان های مفسری طبق فرمایش شما دیس اسمبل هم بی معناست؟ چون اصلاً کامپایلی صورت نگرفته به زبان ماشین؟ درسته؟

Raham
دوشنبه 23 اردیبهشت 1392, 00:03 صبح
ببینید "منبع" دیس اسمبل نیازی نیست لزوما کد ماشین باشه. می تونه کد سطح میانه هم باشه. مثل دات نت - جاوا و ...
تو دیس اسمبل هدف رسیدن از سطح باینری به معادل متنی (Mnemonic) هستش.

مثلا تو همین دات نت - هر دو حالت رو داریم: هم دیس اسمبل هم دی کامپایل. که دیس اسمبلش واسه تبدیل کد های باینری به زبان میانه یا MSIL هستش. دی کامپایلش واسه تبدیل مجموعه MSIL ها به کد های زبان سطح بالا هستش (مثلا سی شارپ)

lukaskain
دوشنبه 23 اردیبهشت 1392, 00:17 صبح
تو این مورد خاص شما کار خاصی نمی تونید انجام بدین. چون نحوه کار مفسر دست شما نیست. مثلا شما می تونید کاری کنید فایل جاوا اسکریپت رو وقتی با نوت پد باز می کنی مشخص نباشه کد هاش؟ اینم همینه.


بله متوجه فرمایش شما هستم، این را از این باب عرض می کنم که مفسر یک دستورالعمل (instruction) یا یک خط (line) را در واحد زمان می خواند و بعد از تبدیل کردن آن به کد ماشین (machine code) بر روی حافظه آن را اجرا می کند.
درواقع این فایل حاوی کد اصلی برنامه هست.
1- درسته؟
2- آیا این کد ها هم قابلیت دیس اسمبل دارند؟ که ظاهراً می فرمایید دارند
3- اگر انکریپت صورت نمی گرفت کدها مستقیماً در حافظه قابل دسترس بود؟

Raham
دوشنبه 23 اردیبهشت 1392, 00:31 صبح
مفسر ها عموما کد رو تبدیل به سطح ماشین نمی کنند...بلکه خودشون به جای پردازنده زحمت اجرای کد رو می کشند. (مبحث JIT مثل DotNet مقداری متفاوت هستش). مثل زبان های اسکریپتی.

1.بله
2.

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

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

lukaskain
دوشنبه 23 اردیبهشت 1392, 00:32 صبح
موفق و پیروز باشید