PDA

View Full Version : سوال: چک کردن پسورد چطوریه



Mask
پنج شنبه 01 مهر 1389, 20:57 عصر
با سلام
با عرض پوزش اگه عنوان مناسب نیست.
من برنامه ای دارم که دارای 2 فرمه
در فرم اولم یک ادیت وجود داره که کاربر اگه مقدار مناسب رو وارد کنه و دکمه رو فشار بده به فرم دوم میره.
در دکمه ای که در فرم اول قرار داره دستور زیر رو مینویسیم.

if edit1.text=125+242*8-12 then begin
form 2 .show
(البته کدهای بالا مثاله و از لحاظ برنامه نویسی صحیح نیست و من برای رسوندن مطلب این کلمات رو نوشتم)
حالا سوالم اینه که اون زیر چه اتفاقی میوفته.
میخام ببینم این اعداد در حافظای آیا جمع میشه و در حافظه ای دیگه مطابقت داده میشه؟
در کل میخام بدونم اون زیر میرا چه خبره.
ممنون.

mansour01
جمعه 02 مهر 1389, 19:32 عصر
با سلام
با عرض پوزش اگه عنوان مناسب نیست.
من برنامه ای دارم که دارای 2 فرمه
در فرم اولم یک ادیت وجود داره که کاربر اگه مقدار مناسب رو وارد کنه و دکمه رو فشار بده به فرم دوم میره.
در دکمه ای که در فرم اول قرار داره دستور زیر رو مینویسیم.

if edit1.text=125+242*8-12 then begin
form 2 .show
(البته کدهای بالا مثاله و از لحاظ برنامه نویسی صحیح نیست و من برای رسوندن مطلب این کلمات رو نوشتم)
حالا سوالم اینه که اون زیر چه اتفاقی میوفته.
میخام ببینم این اعداد در حافظای آیا جمع میشه و در حافظه ای دیگه مطابقت داده میشه؟
در کل میخام بدونم اون زیر میرا چه خبره.
ممنون.

خب دوست عزیز وقتی شما دستور if رو وارد می کنی یک شرط ایجاد میشه ، و بله اعداد در حافظه جمع میشن و مقدار موجود در TextBox شما توسط توابع api گرفته میشه و با مقدار محاسبه شده مقایسه میشه و چون دستور شرطی یک بازگشت داره چیزی مثل True یا False میشه . به عبارتی با دستور CMP (به زبان ماشین) اگر اشتباه نکنم مقدار مقایسه میشه و در صورت صحیح بودن مقدار JUMP میشه به آدرسی که برای لود شدن تابع وجود داره در غیر اینصورت روال عادی برنامه طی میشه .
به عبارت دیگه اینکه کلیه عملیات محاسبه در Debugger قابل مشاهده و Trace شدن هست ، در صورتی که آدرس شروع محاسبه پیدا بشه که معمولا کار آنچنان سختی نیست .

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

Mask
شنبه 03 مهر 1389, 12:13 عصر
ممنون از دوست خوبم.
برای یادگیری این سوال رو کردم.
سوال دومم اینه که چطوری میشه با این حافظه که عدد درش جمع شده و منتظره ،دسترسی پیدا کرد و خوندش.
با تشکر

Mask
یک شنبه 04 مهر 1389, 18:39 عصر
دوستان یه مرحمتی بفرمان:خجالت:

mansour01
یک شنبه 04 مهر 1389, 19:30 عصر
ممنون از دوست خوبم.
برای یادگیری این سوال رو کردم.
سوال دومم اینه که چطوری میشه با این حافظه که عدد درش جمع شده و منتظره ،دسترسی پیدا کرد و خوندش.
با تشکر
خواهش می کنم . راستش خود من هم اطلاعاتم کامل نیست و همچنان در حال یادگیری هستم ، امیدوارم اگر جایی اشتباه می کنم دوستان با تجربه تر ایراداتم رو اصلاح کنند .

الآن که چک کردم دیدم جز VS.net زبان دیگه ای روی سیستمم نصب نیست که یه مثال ساده بنویسم و اونرو با تصویر نشون بدم . اما در کل برنامه رو با دیباگر هایی مثل Olly Debugger باید باز کرد و به Function مربوطه رسید که اون هم بسته به نوع و میزان حفاظت در برنامه نویسی میتونه خیلی سخت و یا خیلی آسون باشه .
برای برنامه هایی که با vb6 کامپایل میشه هم Decompiler ها و دیباگرهای مخصوص هست ( فکر کنم SMART ) و برای Delphi فکر کنم ( DEDE ) و همچنین برای هر زبان معمولا دیباگر و دیکامپایلر مخصوص هست که کار رو راحت میکنه . برای برنامه هایی که وابسته به چهارچوب کاری خاصی هستند ( مثل دات نت Framework یا Borland.net ) هم دیباگرهای جد اگونه ای وجود داره چون این برنامه ها Runtime هاشون رو مستقیم از Framework دریافت می کنند و بصورت نرمال برنامه PE یا Portable EXE نیستند و باید تمام کامپونت های بار شده رو trace کرد که خب دیباگرهای مخصوصشون این کار رو انجام میدن .
حالا دو بحث اینجا مطرح میشه که آیا میخوایم به مقادیری که در حافظه بصورت موقت تعریف میشه دستیابی پیدا کنیم ( مثل برنامه هایی مانند Artmoney ) و یا میخوایم با دسترسی و دیباگ کد اصلی برنامه و یا بخشی از اون در حافظه تغییرات لازم رو در برنامه ایجاد کنیم !؟

Mask
دوشنبه 05 مهر 1389, 12:28 عصر
ممنون از جوابتون.
با یه مثال سوالم رو بیشتر باز میکنم.
به طور قطع همه دوستان برنامه deepfriz رو دیدند.
این برنامه به این صورت عمل میکنه که وقتی دکمه شیفت رو بگیریم و روی آیکن کله خرس در تری ذبل کلیک کنیم . فرمی باز میشه که در آنجا یه استرینگ متشکل از حرف و عدد وجود داره.
این کد رو بر میداریم و در برنامه ایکه ورژن administrator دیپفریز نصبه وارد کرده و کدی به ما برمیگردونه.
حالا اگه این کد رو در سیستم قبل وارد کنیم.پنجره option برنامه باز میشه که از آنجا میتوان این برنامه را غیر فعال کرد.
در سایتی برنامه غیر فعالسازی دیپ فریز رو دیدم.
کار جالبی میکرد.بعد از اینکه برنامه آنفریز اجرا میشد ، بدون وارد کردن رمز با کلیک بر روی دکمه ok وارد فرم option میشدیم.
هر چی فکر کردم فقط به این نتیجه رسیدم که کدی که در حافظه منتظر مقایسه هست رو اون برنامه تخریب میکنه و فرم دوم با مقدار هیچی مقایسه میشه و باز میشه.
ممنون اگه در مورد دیدن مقدار حافظه کمک کنید.
با تشکر.

Mask
چهارشنبه 07 مهر 1389, 20:39 عصر
ممنون از دوستان
نمی دونم چرا وقتی یه بحث تخصصی و شیرین میشه اساتید عقب میشینند.
اگه ممکنه دوستان اطلاعاتشون رو به اشتراک بزارند.
با تشکر

Felony
چهارشنبه 07 مهر 1389, 21:42 عصر
هر چی فکر کردم فقط به این نتیجه رسیدم که کدی که در حافظه منتظر مقایسه هست رو اون برنامه تخریب میکنه و فرم دوم با مقدار هیچی مقایسه میشه و باز میشه
ساده تر در نظر بگیر ، ممکنه اون فرم دوم موقع اجرای برنامه ساخته شده باشه ( تو دلفی فرم ها به طور پیش فرض اینطور ساخته میشن ) و برنامه مورد نظر شما هندل اون فرم دوم رو با داشتن نام کلاس و عنوانش به دست میاره و با صدا زدن یه تابع ( API ( ShowWindow اون فرم رو نمایش میده .

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

mansour01
پنج شنبه 08 مهر 1389, 14:54 عصر
ساده تر در نظر بگیر ، ممکنه اون فرم دوم موقع اجرای برنامه ساخته شده باشه ( تو دلفی فرم ها به طور پیش فرض اینطور ساخته میشن ) و برنامه مورد نظر شما هندل اون فرم دوم رو با داشتن نام کلاس و عنوانش به دست میاره و با صدا زدن یه تابع ( API ( ShowWindow اون فرم رو نمایش میده .

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

راستش من با این برنامه Deep Freez کار نکردم ، البته با توجه به کمبود وقت کمی در موردش مطالعه کردم . در مورد برنامه های دلفی شاید چنین چیزی صادق باشه ،بشخصه باید در این مورد بیشتر مطالعه کنم .

اما در مورد Deep Freeze و Unlocker اون ،راستش من به چند مورد بر خوردم که میتونه شامل مواردی باشه که عرض می کنم ( بستگی به ورژن نرم افزار ) :
1. درایور کنترل پسورد هست که کافیه پاک بشه و مقادیری در رجیستری تغییر داده بشه . که نیازه تا یوزر بصورت Power User تعریف شده باشه که تا اونجاکه یادم میاد اسکریپتی در WinXpSP2 وجود داشت که دسترسی رو تا ادمین هم بالا میبرد . به هر صورت این مورد نیاز به انجام بوت از روی سی دی و کارای دیگه داره .
2. مورد دیگه ای هم بود که البته با patch کردن فایل اجرایی ممکن بود و البته مربوط به افزایش سطح دسترسی نبود و برای برداشتن رفع محدودیت نسخه سرور بود .
3. مواردی هم بود که ظاهرا در ورژن های قدیمی باگی وجود داشت که با کلیدهای ترکیبی ALT+SHIFT+CTRL+F6 برنامه رو Disable می کرد.

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

Felony
پنج شنبه 08 مهر 1389, 21:01 عصر
در مورد برنامه های دلفی شاید چنین چیزی صادق باشه
شایدی نداره ، در دلفی فرمها به همون روشی که گفتم ساخته میشن مگر برنامه نویس این عملیات پیش فرض رو تغییر بده .

Mask
جمعه 09 مهر 1389, 11:43 صبح
اصلا موضوع دلفی نیست.
برنامه دیپ فریز رو با c نوشته اند.
حالا چه فرم همون لحظه ساخته بشه چه در برنامه وجود داشته باشه.
مسئله فعلا تخریب حافظه است.
اینو چطوری باید پیاده سازی کرد؟