Reverse Code Engineering

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

Reverse Code Engineering

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

Reverse Code Engineering

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

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

آخرین نظرات

آنالیز و کشف الگوریتم (1)

پنجشنبه, ۱ مرداد ۱۳۹۴، ۰۱:۰۵ ب.ظ

میخاستم در مورد پکرها و روش های انپک کردن توضیح بدم ولی تصمیمم عوض شد و قرار شد که توی چندتا پست یه سری فایل رو reverse کنیم.

 

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

 

دانلود

 

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



 

analyseme01.exe

خوب این فایل های خروجی ندارند و فقط باید ببینید که چه اتفاقی داخلش میوفته.

این فایل رو با IDA بررسی می کنیم:


میبینید که main برنامه فقط یه تابع با نام sub_401000 داره و این تابع 2 تا آرگومان داره میگیره 20h و 6h .

حالا وارد این تابع میشیم.

میبینید که خیلی ساده هستش آرگومان اول یعنی 6h رو به eax انتقال میده بعد با 20h مقایسه میکنه و اگه کوچکتر یا مساوی بود (که همیشه هست) پرش میکنه.

سپس 20h رو به eax انتقال میده.همین:)

دستورات کادر سمت چپ هیچوقت اجرا نمیشه مگه اینکه خودمون مقادیر آرگومانهارو جابجا کنیم.


eax = 6

if (eax<=20)

          eax = 20

else

          eax = 6


analyseme02.exe


در اینجا هم تابع sub_401000 دوتا آرگومان 6h و 9h رو میگیره.

کاری که اینجا انجام میشه:

 

a = 6h

b = 9h 

eax = (a * a) + b

analyseme03.exe



اینجا هم مثل قبل تابع sub_401000 2 تا آرگومان گرفته.

خوب همه ی اینها واسه ما مهم نیستند و ما تا دستورات قبل fild بررسی می کنیم و باقی کدهای بعد این دستور مربوط به کار با اعداد اعشار و SSE هستش که توضیح اینها خارج از بحث ماست.

کدی که تا اینجا بدست آوردیم:


a = 6h

b = 9h

 

ecx = a * a                        

edx = 0

eax = 9h / 6h

ecx = eax + ecx         =>    ecx = 9h/6h + a * a

edx = 9h * 6h            

ecx = ecx + edx         =>    ecx =  (9h/6h) + (a * a) + (9h * 6h)


پیوست:

 

FILD (Load integer number from memory)

Syntax:    fild Src

 

این دستور مثل FLD هستش با این تفاوت که بجای لود کردن مقدار از نوع floating point ,مقداری از نوع integer رو لود می کنه.


اگه خواستید در مورد دستورات مرتبط با اعداد شناور و SSE و ... اطلاعات کسب کنید میتونید به این سایت   و همچنین پست بعدی این وبلاگ مراجعه کنید.


  • موافقین ۱ مخالفین ۰
  • ۹۴/۰۵/۰۱
  • ۲۷۶ نمایش

آنالیز و کشف الگوریتم

نظرات (۰)

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