صحت عدم تغییرات در توابع برنامه

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

ابتدا مقدماتی را ارایه می دهیم بعد به سراغ راهکار می رویم :

– برای بدست آوردن آدرس حافظه یک تابع در زمان اجرای برنامه می توانیم به این صورت عمل کنیم :

 

متغییر ProcAdd به آدرس تابع در حافظه اشاره می کند.

-برای بدست آوردن اینکه یک تابع در حافظه چقدر فضا اشغال می کند :

تایع End_ImpProc برای تایین آدرس پایان تابع اصلی به کار گرفته شده است.

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

به عنوان مثال :

در مثال از هش ساده ای به نام longitudinal redundancy check — LRC استفاده شده . شما می توانید انواع دیگر هش ها را استفاده کنید. و نکته دیگر اینکه این روش در صورتی که در قسمتی از تابع توسط دیباگر بریک پوینت نوع Int 3 گداشته شده باشد ، را تشخیص داده و مقدار هش متفاوت می شود.

پر واضح است که خود چک کردن هش هم می تواند مورد تغییر یک کرکر واقع شده و برنامه نتواند تشخیص صحیح دهد و همه به عنوان یک اصل می دانیم که هیچ راهکاری برای جلوگیری از کرک شدن برنامه 100% نمی باشد.

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

SadeghPM

SadeghPM is one one must great in developing and RCE wold.

More Posts

3 thoughts on “صحت عدم تغییرات در توابع برنامه”

    1. سلام.

      علیرضا فکرنکنم آنچنان نیازی به نوشتن یک کرک می باشه، همینطور که میبینیم از ابتدا بصورت روان نحوه بدست آورده ابتدای تابع و سایز کدهای تابع توضیح داده شده است و همچنین مثالی هم ذکر شده که LRC از تابع بدست میاره، که در واقع همون کرک می که میخای 😀

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

      موفق باشین.

  1. راه دیگه ای میشه بکار برد مقایسه مقدار برگشتی تابع هست تابع با یک نام دیگه و تغییراتی کوچک میتونه مقدار برگشتی رو چک کنه

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *