Reverse Code Engineering

逆向工程代码 обратная код машиностроения

Reverse Code Engineering

逆向工程代码 обратная код машиностроения

Reverse Code Engineering

Share what I know............... learn what I don’t

(انجام پروژه های مرتبط، برای اطلاعات بیشتر به صفحه "ارتباط با من" مراجعه کنید)

آخرین نظرات

آنالیز بدافزار ZeroAccess (قسمت سوم)

جمعه, ۳۱ ارديبهشت ۱۳۹۵، ۱۲:۱۷ ب.ظ

تابع call ebp :
این تابع دارای چندین حلقه هستش که دایما دارن محتویات رو تغییر میدن و دستورات جدید رو رمزگشایی میکنن و در آدرسی که بعد از این تابع قرار دارد و قرار است به اون jump زده شود قرار می دهند. اگه دستورات آدرس 401018 رو قبل و بعد از این تابع ببینید خواهید دید که کلی دستور جدید تولید شده.


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

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

این همون پرشی هستش که به کدهای رمزگشایی شده انجام میشه.


تحلیل دستورات از 401018 تا 40105B :

ابتدا مشاهده میکنید که محتویات حافظه [FS]:18 به رجیستر EAX منتقل می شود.

[FS]:18 محتوی آدرس ساختار  TIB یا همون TEB هستش

حالا در دستور بعد آفست 30 این ساختار را میخونه.


(برای آشنایی با این ساختارها میتونید به مستندات مراجعه کنید)


البته ما از قبل میدونیم که این آفست محتوی آدرس شروع ساختار PEB هستش.

در خط سوم مثل قبل ، آفست C از ساختار PEB خوانده می شود که این هم اشاره گری به ساختاری است که محتوی اطلاعاتی درباره ماژول های لود شده در پروسس جاری (LDR) است.

آفستهای C, 14, 1C در ساختار PEB_LDR_DATA از نوع LIST_ENTRY هستند که قبلا در همین وبلاگ در موردش مطلب گذاشتم.

این 3 تا LIST_ENTRY ، ساختار LDR_DATA_TABLE_ENTRY ماژول های قبل و بعد رو بهم زنجیر کردن.


در مرحله ی چهارم در شکل بالا میبینید که 20h بایت دیگه هم به اشاره گر LDR_DATA_TABLE_ENTRY اضافه شده تا به بافری که حاوی نام ماژول است (FullDllName) برسیم.

(نکته : اعدادی که داریم استفاده میکنیم تماما مبنای شانزده هستند)

میبینید که نام ماژول بدست آمده از بافر ntdll.dll هستش.


از آدرس 401031 به بعد عملیات بررسی نام ماژول انجام میشه. در خط 401048 نام ماژولی هدف بصورت رمزشده نگهداری شده.


کار اصلی کل این دستورات:

بدست آوردن نام ماژول و رمز کردن اون، سپس تطبیق اون با رمزی که در خط 401048 نگهداری می شود.اگر این رمز ها یکی باشند پرشی به ادامه دستورات صورت میگیره (40104E).

اگر نه، روند بدست آوردن نام ماژول ها تا رسیدن به ماژول هدف ادامه پیدا میکند(401054).

 

ماژول هدف در اینجا ntdll.dll می باشد.



نظرات (۰)

هیچ نظری هنوز ثبت نشده است
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی