discord icon
سرور دیسکورد گاردایران

پست های پیشنهاد شده

با سلام.

می خوام درمورد pack و unpack شدن برنامه ها توضیحی بدم:

pack و unpack فقط reverse کارها نمیشناسند... افرادی که با مبحث نرم افزار هم سروکار دارند می دونند.

به عنوان مثال ما یک فایل exe داریم؛ما وقتی این فایل رو دیباگ کنیم خیلی راحت میشه کدهای برنامه رو اسمبل کرد و اونو کرک کرد و . . .

یه سری افراد اومدن یه برنامه هایی نوشتن که فایل exe ما رو با یکی سری از توابع درهم ساز قاطی می کنه که کرک کردن برنامه سخت باشه!

به این نرم افزارها پکر میگن...:ph34r:

پس دلیلی که ما از پکرها استفاده می کنیم:

فرار از کشف و آنالیز شدن برنامه داره...

این روزه اکثر malwareهایی که شناسایی نمیشن به خاطر وجود همین پکرها هستش....

پکر ها اسامی مختلف دارند.... یک نمونه‌اش ASPack هست

پکر میتونه کل یک فایل اجرایی رو pack کنه و یا اینکه فقط یه سری از بخش های خاص مثل segment code رو پک کنه...!!

همه اینها به هدف پکر بستگی داره که دقیقا چی رو می خواد پک کنه...!

بدین صورت ساختار PE اون فایل دیگه قابل تشخیص نیست..!

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

عملیات Unpacking Stub:

ما وقتی یک فایل رو پک کردیم دیگه اون فایل ساختارش برای لودر قابل شناسایی نیست....

اینجاست که باید ما عملیات Unpacking را روی فایل انجام دهیم تا ساختار فایل قابل شناسایی باشد:

یه فایل اجرایی معمولی در ویندوز توسط لودر ویندوز بارگزاری میشه.

Unpacking Stub یه مجموعه کدی هستش که به فایل پک شده اضافه میشه و مسئول بارگزاری و اجرای شدن فایل پک شده هستش.

پس در فایل پک شده لودر ویندوز ابتدا Unpacking Stub رو لود می کنه و سپس فایل پک شده رو بارگزاری میکنه.

وظایف Unpacking Stub :

آنپک کردن فایل پک شده به داخل حافظه

resolve کردن import ها

انتقال جریان اجرایی به entry point اصلی (OEP)

 

وقتی یه فایلی پک میشه import table اون هم تخریب میشه و دیگه نمیتونه از کتابخانه ها و توابع اونا استفاده کنه.

 

Unpacking Stub وظیفه بازسازی رو به چند روش داره:

1- Unpacking Stub کتابخانه ها و توابع مورد نیاز برنامه رو با استفاده از 2 تابع LoadLibary و GetProcAddress آماده میکنه.

2- بعضی از پکر ها اصلا import هارو تخریب نمیکنند. با این کار دیگه وظیفه لودر ویندوز هستش که resolve کنه این توابع رو..

3- نگهداری یک تابع از هر DLL : با اینکار تمام کتابخانه ها لود می شوند. فقط باید با استفاده از GetProcAddress آدرس هارو بدست آورد.

4- روش دیگه از بین بردن کل import هاست. در اینجا Unpacking Stub مجبوره از روش های دیگه (بدون استفاده از تابع) خودش رو توابع برسونه. این روش در شلکد ها , malwareها هم استفاده میشه.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

همیشه ظاهر و محتویات برنامه آنپک شده با برنامه ی اصلی که پک نشده متفاوت هستش. این تفاوت ها رو توی PE header , نام و تعداد سکشن ها و ... قابل مشاهده هستش...!

 

نشانه های برنامه ی پک شده:

1- برنامه دارای توابع ورودی (import) خیلی کم هستش.

2- زمانی که فایل رو در IDA باز میکنیم کد های کمی مشاهده کنیم یا هنگام باز کردن فایل در ollydbg با هشدار "احتمال پک بودن برنامه" مواجع بشیم.

3- نام بخش های برنامه نامتعارف باشه یا اسم یه پکر مشخص باشه (مثل UPX ) 

4- برنامه دارای PE header نامتعارف باشه.

5- بدست آوردن توابع درهم ساز . هرچی توابع درهم ساز بیشتر باشه احتمال پک بودن برنامه هم بیشتر هستش.

6- تشخیص با استفاده از disassembler ها..

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

آنپک کردن:

برای عملیات انپک سه روش کلی وجود داره:

1- automated static unpacking

2- automated dynamic unpacking

3- manual dynamic unpacking

 

روش اول میشه گفت سریعترین روش هستش و اگه کارکنه کار مارو خیلی جلو می ندازه.ولی روی پکرهای محدودی ازین روش میشه استفاده کرد.

 

در روش دوم به برنامه پک شده اجازه اجرا شدن داده میشه تا Unpacking Stub وظیفش رو انجام بده و پس از اتمام اون از برنامه ی آنپک شده دامپ گرفته میشه.توی این روش مهمترین مسئله یافتن انتهای Unpacking Stub هستش که اگه اشتباه این کار انجام بشه فایل آنپک شده ناقص خواهد بود.

 

روش سوم مطمئن ترین روش هستش چون همه چیز بصورت دستی انجام میشه و بر اساس نوع پکر هم زمانبر هستش...!(مانند vm protect)

 

 

دو روش برای انجام این کار وجود داره:

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

2- اجرای برنامه ی پک شده و دامپ گرفتن و فیکس کردن PE header (بازسازی import table و تغییر EP برنامه به OEP )

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری