Reverse Code Engineering

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

Reverse Code Engineering

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

Reverse Code Engineering

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

آخرین نظرات

از آرایه ها برای تعریف یک مجموعه منظم از عناصر داده ای مشابه استفاده می شود.

بد افزارها گاهی اوقات از آرایه برای اشاره به رشته هایی که محتوی چندین hostname که بعنوان گزینه هایی برای ارتباط استفاده می شود, استفاده می کنند.


دو آرایه در مثال زیر تعریف شده که هر دو در هنگام تکرار حلقه تنظیم می شوند.

آرایه a بصورت محلی و آرایه b بصورت عمومی تعریف شده که این تفاوت را در کد دیس اسمبل شده مشاهده خواهید کرد.


int b[5] = {123,87,487,7,978};

void main()

{

   int i;

   int a[5];

 

   for(i = 0; i<5; i++)

   {

      a[i] = i;

      b[i] = i;

   }

}


توی اسمبلی آرایه ها با استفاده از آدرس مبنا بعنوان یک نقطه ی شروع قابل دستیابی هستند.سازه هر عنصر همیشه واضع نیست اما آنرا میتوان با توجه به چگونگی تنظیم شدن اندیس آرایه متوجه شد.


00401006        mov     [ebp+var_18], 0

0040100D        jmp     short loc_401018

0040100F loc_40100F:

0040100F        mov     eax, [ebp+var_18]

00401012        add     eax, 1

00401015        mov     [ebp+var_18], eax

00401018 loc_401018:

00401018        cmp     [ebp+var_18], 5

0040101C        jge     short loc_401037

0040101E        mov     ecx, [ebp+var_18]

00401021        mov     edx, [ebp+var_18]

00401024        mov     [ebp+ecx*4+var_14], edx 1(1)

00401028        mov     eax, [ebp+var_18]

0040102B        mov     ecx, [ebp+var_18]

0040102E        mov     dword_40A000[ecx*4], eax 2(2)

00401035        jmp     short loc_40100F


در اینجا آدرس مبنای آرایه b برابر است با dword_40A000 و آدرس مبنای آرایه a برابر با var_14 میباشد.بخاطر اینکه هر دو آرایه عددی هستند, هر عنصر 4 بایت سایز دارد.

هر چند دستورات (1) و (2) برای دسترسی به دو آرایه متفاوت هستند در هر دو مورد ecx بعنوان اندیس استفاده شده است, که در 4 ضرب می شود تا سایز هر عنصر حساب شود. مقدار نتیجه به آدرس مبنای آرایه برای دسترسی به عنصر آرایه مدنظر جمع می شود.

نظرات (۰)

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