ايران ويج

نسخه‌ی کامل: فراخوان بزرگ: برطرف کردن خطر نبود Copyright
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
سلام
از آقا سعید خیلی ممنونم

نقل قول: امین جان فقط 5 دقیقه وقت گرفت که  خیلی خوبه برنامه ای که شما نوشته اید در برابر برنامه ای که در ضمینه قفل نوشته بودم خیلی خیلی بهتر و کامل تره
اگه خواستید بگید تا نحوه شکستن قفل برنامتون رو بگم

چطور خیلی خوبه که تو 5 دقیقه رفت رو هوا؟!!  (شکلک ناله)

اگه میشه یکم در مورد این برنامه توضیح بده که چطور کار می کنه
با تشکر
من هم برنامه آقا امین رو دیدم، و هم کرک آقا سعید رو. هر دو خیلی جالب بودند.
امّا آقا سعید، فکر کنم اصلا برای کرک هیچ کاری(مثلا برنامه نویسی و دستکاری سورس و...) نکردی بلکه یه برنامه بوده که آدرس برنامه اصلی رو بهش میدادی و اون دکمه پتچ رو میزدی و کرک تحویلت میشده.
نقل قول: نکردی بلکه یه برنامه بوده که آدرس برنامه اصلی رو بهش میدادی و اون دکمه پتچ رو میزدی و کرک تحویلت میشده.
کم لطفی می فرمایید ! این طوری ها هم نبوده . البته من هم کامل متوجه نشدن آقا سعید چی کار کرده ، ولی همین قدر که فهمیدم براتون میگم :
ببینید ، برنامه آقا امین از بزرگ ترین مشکلاش اینه که سرنخ رو میده دست کرکر ! یعنی چی ؟ یعنی اینکه اگر رمز اشتباه باشه ، یه پیغام مبنی بر اشتباه بودن رمز میده که این کار باعث میشه که کرکر دقیقا متوجه بشه کجا محاسبات مربوط به چک کردن رمز صورت میگیره ! ( البته راه های دیگه ای هم برای پیدا کردن این محل وجود داره ، که این یکی از روش های ابتدایی اون هستش ) کلا اگر برنامه های بزرگ رو هم دیده باشی ، رمز درست نباشه اتفاقی نمی افته ، پیغامی نمایش داده نمیشه .
اشتباه دوم استفاده از = برای چک کردن درستی و نادرستی رمز هستش ! یعنی رمز اصلی رو تولید می کنه ، با رمز دریافتی از طرف کاربر مقایسه می کنه !
ببینید بچه ها ما باید کاری کنیم که رمز برنامه ما ، عضوی از هسته برنامه ما باشه ! یعنی برنامه ما به رمز وابسته باشه ! ( که البته آقا امین فکر کنم در مرحله دوم همین کار رو می خواسته انجام بده . )
این همون قسمت مقایسه هستش :
[تصویر:  1.JPG]
البته این عکس ( و عکس های پایین ) مربوط به برنامه کرک شده میشه ، که اگر دقت کنید ، روی خط پنجم آقا سعید یه jump ست کردن به آخر فایل . اگر بریم دنبالش ، اینجام میرسیم :
[تصویر:  2.JPG]
میبینید که رمز اصلی در آخر فایل محاسبه میشه و تو حافظه ریخته میشه و دوباره یه jump داریم به همون محل قبلی برنامه . ( تصویر یک )
همین طور که میاییم پایین ، به دلیل اینکه رمز وارد شده ما اشتباه هستش برنامه میخواد همون پیغام اشنباه بودن رو نشون بده که آقا سعید به جای نمایش اون پیغام دو تا NOP ناقابل گذاشتن و باز یه جامپ گذاشتن که میپره به آخر فایل ، اینطوری :
[تصویر:  3.JPG]
بعدی از اینکه جامپ صورت میگیره ، میریم آخر فایل ، یعنی اینجا :
[تصویر:  4.JPG]
تو این قسمت همون رمز محاسبه شده ( تصویر دوم ) به صورت یک MsgBox به نمایش در میاد .

حالا سوال من از آقا سعید تو همون تصویر دوم هست که رمز اصلی رو چطوری محاسبه می کنن .

Rolleyes
دوستان دیگه هم بیان جلو . ترس نداره به خدا .
سلام
خوب هستيد

mri_6889 نوشته است:من هم برنامه آقا امین رو دیدم، و هم کرک آقا سعید رو. هر دو خیلی جالب بودند.
امّا آقا سعید، فکر کنم اصلا برای کرک هیچ کاری(مثلا برنامه نویسی و دستکاری سورس و...) نکردی بلکه یه برنامه بوده که آدرس برنامه اصلی رو بهش میدادی و اون دکمه پتچ رو میزدی و کرک تحویلت میشده.

خيلي ممنون از نظرتون
اما در مورد اينكه برنامه اي استفاده كردم
بله يك ديباگر !!!!!!!! يعني همون اولي ديباگر نه يك برنامه اصلي كه بياد و اتوماتيك كار رو انجام بده !!!!
فكر كنم چون پچر رو ديد اينطور فكر كرديد.
بعد از كرك  چون بايد دوباره فايل اصلي رو اپ ميكردم و اينترنتم سريع نبود ( توي خونه ) يك پچر ساختم كه حجم كمتري داره همين!
اتفاقا برنامه نويسي كردم نه با زبان هاي سطح بالا نه!! با زيان سطح پايين يا همون اسمبلي اون قسمت هاي كه امير جان گفتند رو خودم نوشتم پس برنامه نويسي كردم .
يه چيز جالب يكي ميگفت برنامه نويسي سطح اسمبلي  برنامه نويسي نيست !!!!!!!!!!

اما امير جان
  
نقل قول: حالا سوال من از آقا سعید تو همون تصویر دوم هست که رمز اصلی رو چطوری محاسبه می کنن .

من محاسبه نكردم امين جان دستش درد نكننه اين كار رو ايشون كرده!!!!!!!!!

فكر كنم يك ذره مبهمه
بگذاريد توضيح دهم :
همانطور كه ميدوني وي بي يك زيان مفسره اي نه كامپايلري : يعني دستورات فايل وي بي به ران تايم هاش وابسطه است .
خوب بر اساس كار با برنامه هاي وي بي در سطح ديباگر يك چيز هاي ادم ياد ميگره مثلا چگونگي چك شدن دو تا استرينگ
كد نمونه اون اينه :
push eax  ذخيره استرينگ اول
push ecx دخيره استرينگ دوم
.
.
.
call __vbavartstEq

خوب توي كد برنامه اقا امين هم اين كد چك كردن وجود داشت
eax شامل كد اصلي است توي برنامه اقا امين .
براي نمايش دادن اين كد ابتدا بايد كد در جايي ذخيره بشه و بعد هنگام نمايش اين كد توي حافظه ذخيره بشه تا نمايش داده بشه
چند نكته هنگام اضافه كردن توابع به فايل ها :
هميشه كدي رو كه اضافه ميكنيد براي اينكه استيك تغيير نكنه و برنامه كرش نكنه  توي pusha و popa ميگذاريم تا مشكلي به وجود نياد
و اينكه كد هاي كه بجاشون دستور جامپ گذاشتيم رو بايد بعد از popa قرار دهيم و سپس به خط اي كه بعد خطوط اشغال شده با دستور جامپ پر شده اند پرش كنيم
و در وي بي استرينگ ها بصورت مستقيم اشاره نميشن
مثل eax برابر 1525c است شما در اين ادرش چيزس نميبنيد بچز مثلا 8 اما ميدونيد اين بايد اشاره گر به استرينگي باشد اما چيزي جز يك 8 نداريم !!!!!!!
اين 8 يعني ادرس محل ذخيره استرينگ eax+8 است و يا اگر اين عدد 1f بود محل ادرسي كه استرينگ توشه ميشد eax+1f حال فرض كنيم در اين حال عدد 00 15 f3 1c توي اين ادرس باشد يعني استرينگ توي ادرس 00151cf3 قرار دارد

توضيح كد هاي اضافه شده ( بر اساس تصاويري كه امير جان گذاشته اند )
تصوير 2
ابتدا از همه متغير ها يك بك اپ ميگريم خط 4195bd
خط بعدي ebx  رو صفر ميكنيم
خط بعد همون عدداي رو كه بايد به eax اضافه شه تا به ادرس محل كد برسيم رو توي bl ميريزيم
خط بعد به eax اين مقدار رو اضافه ميكنيم يعني حالا eax خودش ادرس - ادرسي كه محل ذخيره رو داره رو در بر داره  ---- به دوتا ادرس توجه كنيد
خط با استفاده از دستور اي كه ميبنيد محلي كه Eax  بهش اشاره ميكنه رو به ebx منتقل ميكنيم . در واقعه محتوي ادرس اي كه Eax داره رو ميزيزيم توي ebx يعني يك ادرس از ادرس - ادرس محل ذخيره حذف ميشه : ادرس محل ذخيره اي كد درست ( قبلا توي برنامه اي كه اقا امين نوشته اند جهت تست با كدي  كه ما وارد كرده بوديم حساب شده بود )
يك متغيير مي سازيم از كدمون كه اين ادرس رو ذخيره كنه
خط بعد محل ذخيره اين ادرس رو توي ecx ميريزيم
خط بعد حال ادرس محل ذخيره رو به درون ادرسي كه ecx  به اون اشاره ميكنه انتقال ميديم
خط بعد تمامي ريجيستري ها رابه حالت اول بر ميگردونيم
سه خط بعد و جامپ بعد از اون در واقعه كد هاي كه براي جامپ به كدمون تغيير داديم و پرش به محل اصلي است

حال ميرسم به تصوير شماره 4
ما ميدونيم كه eax اشاره گر درجه 2 به متني كه بايد نشون داده بشه پس مي ايم و ادرس رشته اي كه متغير اشتباه است رو تغيير ميديم به ادرس اي كه شامل كد صحيح است
خط 1 و2 وو 43 مثل شكل 2 است يعني همان كار ها را مينمايد
خط 5 : محل ذخيره كد درست ك هتوي قسمت قبل نوشته بوديم رو ميزيريم ت وي ecx
خط 6 : ادرس محل كد رو بااين دستور ميزيريم توي ecx
خط 7 :محل ادرس پيغام خطا رو كه توي eax با ادرس محل ذخيره كد درست تغيير ميديم
خط 8 :  تمامي ريجيستري ها رابه حالت اول بر ميگردونيم
دو خط بعد و جامپ بعد از اون در واقعه كد هاي كه براي جامپ به كدمون تغيير داديم و پرش به محل اصلي است

همانطور كه ميبينيد توي اسمبلي يك كار ساده چقدر دردسر داره

اميدوارم توضيحات كامل بوده و كمك كنه          
سلام.
خوب این روشی بود که کرک شده بود، حالا اگه بخوایم جلوی کرک رو توی این برنامه بگیریم، چجوری میشه؟
ولی من فکر میکنم این کرک ها که حتی خیلی زود به همراه برنامه ها روانه میشوند با امبلی نباشد چون این روش وقت زیادی میگیره. اگه روش سریعتری هم بلدید بحث کنید.
ضمنا امیر جان شما گفته بودید برنامه های برزگ پیغام نمیدن، ولی اونها ممکنه پیغام عدم موفقبت ندن اما معمولا پیغام موفقیت رو بصورت مثلا علامت تیک در کنار TextBox یا پیام موفقیت در مرحله بعدی یک ویزارد. خوب فکر کنم از همین راه هم باشه که همشون دیر یا زود اوت میشن.
همچنین از شما امیر جان و سعید جان بخاطر توضیحات خوبتون تشکر میکنم.
ضمنا از امیر جان هم بخاطر قرار دادن لینک اینجا در امضا شون بسیار سپاسگزارم. پیشنهاد میکنم بقیه هم این کار رو انجام بدن تا بعض ها که اینجا رو ندیدن متوجه بشن شاید ایده ای داشته باشن.
راستی به نظر من روش کرک باید عوض بشه، یعنی اینکه دیگه برنامه ها رو دستکاری نکنن بلکه باید شرایط درست بودن شرط را بیابند. یعنی مثلا اگه گفته در صورتی که سریال برابر 1 بود پیام موفقیت و در غیر این صورت عدم موفقیت. حالا ما هم میایم بدون دست کاری برنامه سریال را 1 وارد میکنیم. و کلا ساخت برنامه هایی که حتما همتون دید که با زدن دکمه Generate سریال میدهد بهتر از دستکاری خود برنامه است. یعنی روش محاسبه برنامه برای تولید سریال های گوناگون را در یک برنامه جداگانه اجرا میکنیم تا سریال تولید کند. این روش دیگر ما را درگیر پیامد های احتمالی دستکاری برنامه، مانند بروز رسانی نشدن، نمیکند. نظر شما چیست؟
متشکرم.
سلام
نقل قول: ضمنا امیر جان شما گفته بودید برنامه های برزگ پیغام نمیدن، ولی اونها ممکنه پیغام عدم موفقبت ندن اما معمولا پیغام موفقیت رو بصورت مثلا علامت تیک در کنار TextBox یا پیام موفقیت در مرحله بعدی یک ویزارد.
بر منکرش لعنت ، منتها اونها هم دارن به نوعی به کرکر کمک می کنن .
نقل قول: ولی من فکر میکنم این کرک ها که حتی خیلی زود به همراه برنامه ها روانه میشوند با امبلی نباشد چون این روش وقت زیادی میگیره. اگه روش سریعتری هم بلدید بحث کنید.
این روش حرفه ای ترین روش کرکینگ هستش و برای حرفه ای هاش زیاد هم وقت نمی گیره ! مثلا همین آقا سعید ! این همه اسمبلی نوشته تو 5 دقیقه !
نقل قول: ضمنا از امیر جان هم بخاطر قرار دادن لینک اینجا در امضا شون بسیار سپاسگزارم.
خواهش می کنم . من اصولا این تیپ بحث ها رو دوست دارم . Biggrin
نقل قول: راستی به نظر من روش کرک باید عوض بشه،
ولی من اینطوری فکر نمی کنم ! هدف ما چیز دیگه ای هست ! هیچ اهمیتی نداره که برنامه ما چطوری کرک شده ، مهم اینه که کرک شده دیگه ؟ درسته ؟ حالا یا کرکر الگوریتم خواصی رو تشخیص داده و یه KeyGenerator ساخته ، یا اینکه یه طور دیگه کرک کرده . روش کرکرکینگ به ما ربطی نداره ، ما فقط باید بشناسیمشون تا بتونیم باهاشون مقابله کنیم .
نقل قول: یعنی روش محاسبه برنامه برای تولید سریال های گوناگون را در یک برنامه جداگانه اجرا میکنیم تا سریال تولید کند. این روش دیگر ما را درگیر پیامد های احتمالی دستکاری برنامه، مانند بروز رسانی نشدن، نمیکند. نظر شما چیست؟
درسته ، اما خوب خیلی سخت تر هست . اتفاقا وقتی شما می خوای کرک رو شروع کنی ، بهت crackme میدن ، نمیگن اینو کرکش کن ! میگن یا سریال رو بدست بیار یا نحوه محاسبه سریال رو بگو.

Smile
سلام.
امیر جان از توضیحاتتون متشکرم.
اما از شما و بقیه خواهش میکنم حالا که روش کرک رو گفتید، برای همین برنامه روش جلوگیری از کرک و هم بگید بعد این روش رو پیاده میکنیم دوباره یکی میاد کرکش میکنه، آنقدر هی کرک میکنند و ضدش رو توی برنامه میذاریم تا تقریبا برنامه در مقابل انواع کرک ها مقاوم بشه.
البته یادتون نره که درباره برنامه، روش کرک، روش ضد کرک و غیره که در آن بکار میبرید اینجا توضیحات کامل هم بدید.
باز هم از این همه تلاش و توجه شما سپاسگزارم.
ضمنا این رو بگم که من این بحث رو از همه بحثها بیشتر دوست دارم.
راستی یکی بگه اگه برنامه با Java یا .Net باشه چجوری کرک میشه و چجوری جلوش گرفته میشه؟ چون مثلا در دات نت برنامه تحت فریم ورک اجرا میشه نه ویندوز. و در جاوا با ماشین مجازی اجرا میشه.
متشکرم.
سلام
خوب هستید
مرسی از توصیحات امیر جان کامل زیبا و رسا بود.
mri_6889 عزیز
در مورد رفع نقایص
1- برنامه بصورت مستقیم سریال را ایجاد نکند
2- برنامه از روش های دیگری برای مقایسهاستفاده نماید
3- چندین تابع جهت چک کردن رمز ورودی در برنامه باشد که بر اساس رویداد های تست شوند
مثلا یک تایمر
4- اگر رمز درست نبود پیغام خطا ندهد
5- اگر بر فرض مثال باید از برنامه خارج شو یم( مثلا دومین چک ارور داد) یهو خارج نشویم

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

امیدوارم کمک کنه

[size=medium][align=justify][color=blue]
با سلام این برنامه رو میزارم کرک بفرمایید
انشا.. اجرکم عند... محفوظ
در ضمن مارا در جریان لحظه به لحظه کار قرار بدید.
روش رو هم برای همه بگید . اجازه صادر شد
با سلام به همه دوستان
از این که برنامه من رو مورد لطف ( شایدم یه چیز دیگه ) قرار دادید و روش بحث کردید ممنونم
متاسفانه موقع امتحانات ترم تابستانی هست زیاد وقت ندارم تا به رفع اشکال ها بپردازم

با اطلاعاتی که من از قبل داشتم تو مراحلی که برنامه سریال دستگاه رو پیدا می کرد
برای اینکه اگر کرکر خواست فقط شرط درست بودن رو (قبل از نمایش پیام اشتباه) برعکس کنه ,
چند تا متغیر گذاشتم و بهشون مقدار دادم و بعدا تو برنامه بدون اینکه هیچ پیغامی داده بشه برنامه
درست کار نیمکرد . اما فکر نمیکردم میشه خود مقدار رمز رو هم پیدا کرد!! (شکلک مربوط)


تا 4-5 روز دیگه به شدت می افتم به جونش تا ببینم چکار میتونم بکنم
اگر فکر میکنید لازمه من کد برنامه رو هم بزارم تا بیشتر روش بحث کنیم

با توجه به مطالبی که گفته شد و وقت کم من این فایل رو آماده کردم
صفحه‌ها: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17