ورود

View Full Version : سوال در مورد unpackme



Delphi Coder
پنج شنبه 25 آبان 1391, 00:02 صبح
سلام.
دوستان من دارم سعی میکنم نحوه unpack کردن فایلها رو یاد بگیرم. از سایت tuts4you یکی دو تا unpackme دانلود کردم. اولیش برای UPX بود که یاد گرفتم چجوری انجام میشه چند مثال دیگه بود که از تکنیکهای انتی دیباگ استفاده کرده بودند مشکل اونها هم با پلاگین StrongOD حل شد OEP رو پیدا کردم و بعد با ImpRec تونستم IAT رو درست کنم.
منتها در مورد این فایل که Attach کردم StrongOD جواب نمیده و فایل حتی با F9 قابل اجرا نیست یکبار شانسی تونستم با کمی trace و بعد F9 برنامه رو اجرا کنم ولی دیگه موفق نشدم متوجه هم نشدم چیکار کرده بودم. یک سری تکنیکهای آنتی دیباگ در این unpackme استفاده شده مثل jump به وسط یک دستور که طبیعتا اون دستوری نیست که دیده میشه یا اینکه مثلا یک سری کدها رو که میخواد اجرا بکنه کد شده هستند و اول میاد اونها رو decode میکنه و بعد اجراشون میکنه(یعنی نمیشه breakpoint گذاشت).

از اساتید با تجربه ای که اینجا هستند اگر کسی تونست اینو unpack کنه لطفا یه توضیحی در موردش بده ممنون میشم.

یه توضیح دیگه اینکه من داخل فایل در ناحیه ای از Memory عبارت PECompact 2 رو دیدم ولی unpacker های آماده ای که برای این PECompact بود هیچکدام نتونستن اینو unpack کنن و در فایل readme در مورد packer نوشته اسمش SoLiDMoRPH v1 Protector هست. در ضمن RDGPacker detector اینو ASPACK تشخیص میده PEid هم کلا تشخیص نمیده.

Delphi Coder
پنج شنبه 25 آبان 1391, 16:16 عصر
من تونستم بعد از ساعتها trace و سر و کله زدن با این به اینجا برسم
401e0c

برای پیدا کردن این آدرس یک بار که شانسی از trace اجرا شد اینجا رسیدم و بعد اومدم break on new module رو فعال کردم بعد از لود شدن mfc100enu.dll با F8 رفتم جلو تا به یه آدرس این تیپی رسیدم
3B118F
یا
3A118F
(dynamic اخذ میکنه حافظه رو برای همین تغییر میکرد این آدرس) یه دستور call اینجا هست که وقتی اجرا میشه برنامه terminate میشه هم push قبل call و هم call رو اومدم nop کردم و ادمه دادم نهایتا زمانی که میخواست به OEP منتقل کنه کنترل رو EAX که همون OEP هست رو مقدارش 40001e0c بود که تصحیح میکردم به 401e0c و برنامه اجرا میشد.
با این تفاسیر اینجا (401E0C) ظاهرا به نظر میاد OEP هست. ولی ImpRec با این آدرس نمیتونه IAT رو کامل Fix کنه. باز هم یه قسمتی از IAT خراب میمونه. الان باید چیکار کرد؟ این یعنی OEP اشتباهه یا باید حرکت دیگه ای غیر از ImpRec برای درست کردن IAT انجام بشه؟؟؟