نمایش نتایج 1 تا 25 از 25

نام تاپیک: درس دوم : Compressor - Packer - Encryptor

  1. #1

    درس دوم : Compressor - Packer - Encryptor

    سلام؛

    این تاپیک به معرفی مفاهیم و خواص و ویژگیهای ابتدائی Compressor ها - Packer ها و Encryptor ها اختصاص داره و در ادامهء درس اول ، امیدوارم بتونه فضای مناسبی برای انتقال اطلاعات باشه ، حداقل در حد یک EntryPoint ساده .

    :)
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  2. #2
    Compressor یا فشرده ساز ، ابزاری برای کاهش حجم فایلهای [عموما"] اجرائی است که کمک میکنه سایز و اندازهء فایل ، روی دیسک یا اصطلاحا" Disk Image کوچکتر بمونه ؛ کمپرسور مشخصا" یک ابزار امنیتی نیست . اغلب توسعه گران از کمپرسورها برای کاهش حجم فایلهای اجرائی غول پیکر برنامه هایشان استفاده میکنند ( برنامه هائی که هفتاد و پنج تا فرم و پنجاه تا کانکشن استرینگ و هزار و یک عدد ریسورس رو یکجا جمع کرده و فرصت نفس کشیدن به Loader بدبخت و مفلوک سیستم عامل نمیده و هر از چند گاهی اگر یک Access Violation هم به برنامه نویس داده شده ، ایشون یک عدد بیلاخ حوالهء کامپایلر و محیط توسعه میکنند و توی فرومها و وبلاگها و غیرهم در نکوهش اون کامپایلر و محیط چه ها که نمی نویسند ! )

    کمپرسورها منطق ساده ای دارند . یک برنامهء فوق العاده کوچک که برنامهء اصلی رو [ که قبلا" فشرده شده و فرضا" بصورت یک ریسورس به اون لینک شده] مجددا" به یک فایل باینری/اجرائی "روی حافظه" مبدل کنه و شاید در نگاه اول بسیاری از مشخصه های برنامه اصلی رو به نوعی از دید بررسی کنندگان مخفی کنه ؛ اما در واقع ، آنچه اجرا میشه ، نسخهء کامل برنامهء اصلی ، روی حافظه است ؛ شاید کمپرسور بتونه یک برنامهء حجیم و خفن رو کوچکتر کنه و کمی از هارد دیسک چهل گیگابایتی شما رو نجات بده ، اما یقینا" برنامهء بزرگ و خفن ، کماکان خرخرهء حافظه رو خواهد جوید و عموم کمپرسورها کمک قابل ذکری در این زمینه نمیکنند ؛

    بسیاری از توسعه گران مبتدی از کمپرسورها به عنوان یک ابزار حفاظتی استفاده میکنند به این خیالات واهی :

    • - کد قابل مطالعه نیست ؛ چون حالا من روی دیسک چیزی از کد اصلی نمیبینم .
      - چیزی از برنامه اصلی روی دیسک کپی نمیشه پس کسی نمیتونه برنامه رو دستکاری کنه .
      - نوع کامپایلر و کتابخانه های مورد استفاده ام لو نمیره .


    اما در واقع :

    • - با یک Memory Dump ساده ، کد باینری برنامهء اصلی به دست میاد و میشه براحتی باهاش PEی اصلی رو بازسازی کرد
      - میشه متن کد برنامه رو روی حافظه دستکاری کرد و نهایتا" برای تثبیت اون از یک Loader استفاده کرد
      - با مطالعه نسخهء روی حافظهء برنامه هم میشه براحتی عناصر برنامه رو آنالیز کرد


    کمپرسورها ، نه کمک مفیدی به حفاظت از امنیت نرم افزار میکنند ، نه فایدهء چندانی به حال برنامه های عصر حجری حجیم و Single Module خواهند داشت ؛ برنامه نویسهای با تجربه ، برای رفع مشکل حجم کد ، از تقسیم کد به عناصر کوچکتر ، و برای حفاظت از امنیت کد از Packer ها و Encryptor ها استفاده میکنند ، که به مرور در مورد نحوهء عملکرد انواع مختلف و متداول اونها مطالبی ارائه خواهد شد .

    شب خوش

    :)
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  3. #3
    Packer پر کاربردترین عنصر امنیتی در حوزهء نرم افزار است . وظیفهء Packer :

    • - تغییر شکل و قالب بخشهای مهم فایلهای اجرائی
      - ارائه روتینهائی برای حفاظت از برنامه روی حافظه
      - کنترل یکپارچگی باینری
      - مخفی نگهداشتن مشخصه های حائز اهمیت باینری مانند کامپایلر و کتابخانه ها و ...


    است . شاید بشه براحتی گفت بخش اصلی و پر رنگ روند نفوذ به حریم امنیتی یک نرم افزار ، در UnPack کردن اون خلاصه میشه .

    Packer ها عموما" از این روشهای متداول برای انجام وظایفشون استفاده میکنند :

    • - ارائهء روتین های آنتی دیباگ ( کشف دیباگر و توقف اون یا توقف روند اجرا برنامه یا ...)
      - ارائهء روتین های آنتی دامپ ( جلوگیری از بازسازی فایل باینری از طریق Memory Image )
      - حفظ یکپارچگی فایل با تکنیکهائی مانند CRC و Hash و امضاهائی دیجیتال
      - رمزنگاری اجزاء مهم نرم افزار روی دیسک و حافظه و اجرا از طریق توابع درون ساختهء نسبتا" امن Packer
      - درهم ریزی ساختار قابل شناسائی باینری برای جلوگیری از باز-شناسائی ابزارهای توسعه


    اغلب Packer ها بخش قابل توجهی از این نیازها رو پوشش میدن و برخی از اونها با ارائه روشهای ابتکاری امکانات دیگری هم در اختیار توسعه گر قرار میدهند ، مثلا" حفاظت از کدهای سطح کاربر از طریق روتین های سطح کرنل ، یا اجرای کد رمز شده به کمک یه VM ( ماشین مجازی درون ساختهء Packer ) و ...الخ .

    Packer های رایگان و تجاری متعدد و متفاوتی این روزها در دسترس هستند که هر کدام نقاط ضعف و نقاط قوتی دارند و از این مهمتر : برای اغلب اونها ابزارهای خودکار UnPack نیز موجود است . یعنی به محض استفاده از یک Packer متداول و شناخته شده ، یک نفوذگر نرم افزاری با تجربه براحتی اون رو میشناسه و از ابزار خودکاری که احتمالا" فرد دیگری منتشر کرده برای عبور از اون و بازسازی مجدد فایل باینری اصلی استفاده میکنه . در این مسیر ابزارهای کمکی متعددی نیز وجود دارند که این روند رو تقریبا" به یک وظیفهء روتین و نسبتا" ساده مبدل میکنند ، فی الواقع برای UnPack اغلب راه حلهای آزاد یا تجاری موجود ،به چیزی حدود [حداکثر] نیم ساعت وقت نیاز است !

    اما با این تفاصیل ، استفاده از Packer همچنان یک گزینهء مثبت است . چون اگر انتشار باینری به همان شکلی که هست "بدتر" باشه ، انتشار نسخهء Packed اون با [حتی] یک Packer تابلو و غیر حرفه ای "بد" است و آدم عاقل میدونه بین این دو کدوم رو انتخاب کنه ؛ معهذا همیشه یک حالت بهتر وجود داره .

    برای حفاظت از امنیت یک نرم افزار به کمک Packer ها باید به چند نکته مقدماتی توجه کنید :

    • - Packer اولین سنگر حفاظتی است ، نه جدی ترین ، نه آخرین .
      - Packer برای ایجاد وقفه در مسیر سهل تخریب امنیت نرم افزار مورد استفاده قرار میگیره نه چیز دیگر
      - توسعهء یک Packer شخصی و قابل قبول کار ساده ای است اما نه برای عامه توسعه گران
      - حتی با استفاده از یک Packer خصوصی ، به امنیت غیر قابل دسترسی نخواهیم رسید


    روش غلط استفاده از Packer :

    • - برنامه ات رو بنویس .
      - یک Packer تابلو از یک سایت روسی یا چینی دودر کن .
      - برنامه ات رو Pack کن و منتشرش کن .
      - به دوست دخترت زنگ بزن و شب باهاش قرار بگذار .
      - نیم ساعت قبل از قرار به نزدیکترین ATM مراجعه کن تا پولی که از برنامه ات درآوردی بگیری و امشب خرجش کنی .
      - بعد از مشاهدهء حساب خالی ات ، سریعا" به فکر یک دروغ خفن و ی بهونهء ردیف برای دودر کردن عیال مربوطه باش


    روش صحیح استفاده از Packer :

    • - برنامه ات رو بنویس .
      - ضمن توسعهء برنامه ات با مطالعهء مداوم بخش امنیت نرم افزار سایت سعی کن کمی با ادبیات این حوزه آشنا بشی .
      - با استفاده از اطلاعات منتشر شده ، دنبال یک Packer خوب و نسبتا" گرون قیمت بگرد
      - از یک نفر بخواه نسخه حرفه ای اون رو برات بخره ، به اسم خودت ثبتش کن و بلافاصله یک ایمیل برای توسعه گرش ارسال و ازش بخاطر نرم افزار خوبش تشکر کن .
      - چند ساعت بعد تو یک ایمیل دیگه در مورد مشخصات برنامه ات براش توضیح بده و ازش بخواه بهترین توصیه هاش رو برات بفرسته و در پایان یک Best Wishes هم بنویس .
      - با استفاده از توصیه های او برنامه ات رو Pack کن .
      - با استفاده از یک HEX Editor قسمتهای به خصوصی از باینری ات رو تغییر بده . این کار باید باعث نا شناخته موندن Packer مورد استفاده بشه ؛ با مطالعهء مقاله های موجود و مطالبی که فرومهائی مثل اینجا ارائه میکنند تمام تلاشت رو برای تغییر شکل و قالب نرم افزار بکار ببند و در این مسیر از هیچ ابزار عمومی و خودکاری استفاده نکن ؛ اگر نمیدونی چطور باید اینکار رو بکنی منتظر مقاله هائی که به همین منظور همینجا منتشر خواهند شد بمون .
      - برنامه ات رو منتشر کن ؛ به دوست دخترت زنگ بزن و شب باهاش قرار بگذار .
      - نیم ساعت قبل از قرار به نزدیکترین ATM مراجعه کن تا پولی که از فروش برنامه در آوردی رو خرج کنی
      - درسته پولی که تو حسابته کمه ، اما احتمالا" اون شب بخیر خواهد گذشت . شاید برای برنامه های بعدی ات وقت بیشتری بگذاری ، مطالب بیشتری بخونی و از افراد با سواد تری کمک بگیری ؛ بالاخره آدم به امید زنده است .


    Packer ها عموما" تاثیرات به خصوصی هم روی نرم افزارها میذارند که لازمه در مورد بعضی از این تاثیرات فکر کنید :

    • - سرعت : Packer ها به شکل چشمگیری سرعت اجرا و سرویس دهی برنامه رو کم میکنند ؛ اگر داری یک سرویس مینویسی ، یا درایور سطح کرنلی داری که قراره با یک کارت PCI مرتبط باشه ، استفاده از Packer قابل توصیه نیست .

      - اعتماد : در بسیاری از حوزه ها ، اعتماد به ماهیت نرم افزار ، نقش مهمی در توسعهء اون ایفا میکنه . عموما" استفاده از Packer ضمن اینکه یک روش امنیتی محسوب میشه ، روشی برای مخفی سازی عملکرد نرم افزار نیز به شمار میاد .



    Packer های خوب و سورس آزادی مانند yP و Packer های تجاری و قدرتمندی مثل SVKP همیشه در دسترس هستند و درگیری های خونین و ناموسی بین توسعه گران روشهای امنیتی و نفوذگران روی سایتهای زیر زمینی و فرومهای کذائی وجود داشته/داره/خواهد داشت ؛ اما برای یک توسعه گر آنچه نقش مهم و حیاتی رو ایفا میکنه ، کسب دانش و توانائی درک نحوهء عملکرد ابزارهای امنیتی ، و اختصاصی سازی برخی از اونها برای دشوارتر کردن مسیر خدشه دار شدن حفاظ های نرم افزاری است . برای عمومیت برنامه نویسان ، کسب توانائی و تخصص فوق العاده بالا در امنیت نرم افزار نسبتا" امکان پذیر نیست ، چون کسب توانائی در این حوزه منوط به تعطیل شدن فعالیت در سایر حوزه هاست ؛ اما مطالعهء مقدمات و آشنائی با ادبیات و کسب توانائیهای ابتدائی ، یقینا" یک وظیفهء غیر قابل چشم پوشی است .

    موفق باشید

    :wise1:
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  4. #4
    کاربر دائمی آواتار jirjirakk
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    wwwroot
    پست
    660
    برای عمومیت برنامه نویسان ، کسب توانائی و تخصص فوق العاده بالا در امنیت نرم افزار نسبتا" امکان پذیر نیست ، چون کسب توانائی در این حوزه منوط به تعطیل شدن فعالیت در سایر حوزه هاست
    برادر اینپرایز آیا توی ایران برای همیچن فعالیت هایی جا هستش که آدم بخواد ریسک کنه و فقط توی این زمینه فعالیت خودش رو شروع کنه ؟
    _______________________________
    واسه مقاله های قشنگتون هم صمیمانه تشکر :flower:

  5. #5
    @JirJirak : نمیدونم .

    -

    Encryptor ها جدی ترین چالش حال حاضر حوزهء امنیت نرم افزار هستند . Encryptor نرم افزاری است که عمدتا" و عموما" :

    • با رمزنگاری نسخهء باینری ِ روی دیسک فایلهای اجرائی امکان بررسی و مطالعهء اون رو تا حد زیادی از بین میبره
      با رمزنگاری/رمزگشائی دائمی و تو در توی توابع برنامه - نسخه موجود روی حافظه - بررسی عملکرد برنامه رو دشوار میکنه
      با تغییر شکل متغیرها-نام و ادرس توابع - ارجاعات و کتابخانه های متصل شده بصورت استاتیک آنالیز نرم افزار رو دشوار میکنه


    Encryptor ها رو میشه به سه دستهء کلی تقسیم کرد :

    • دستهء اول : راه حلهائی که از روشهای متقارن برای حفاظت از کد استفاده میکنند ؛
      دستهء دوم : راه حلهائی که از روشهای غیر متقارن برای حفاظت از کد استفاده میکنند ؛
      دسته سوم : راه حلهائی که از ترکیب دو راه حل اول یا استفاده از راع حلهای ابتکاری استفاده میکنند ؛


    -- درصورتیکه در مورد درک مفاهیم اولیه رمزنگاری مشکل دارید به بخشهای مربوطه - رمزنگاری و امنیت شبکه - مراجعه کنید ؛ چند مقاله مناسب برای شروع وجود داره --

    اغلب Encryptor های تجاری موجود روش اول رو حمایت میکنند ؛ به عنوان مثال به توسعه گر اجازه میدن از یک 3DES و یک گواهی دیجیتال برای رمزنگاری توابع یا کلاسها یا ماژولهای خاصی استفاده کند ، و معدودی از اونها امکان استفاده از روش دوم یعنی اتکاء بر PKI و روشهای غیر متقارن رو نیز به این حمایت اضافه میکنند . به این ترتیب فقط ماژولهای مجاز میتونن ماژولهای مورد نظر رو از حالت رمزشده خارج و به حافظه فراخوانی کنند یا روی حافظه اونها رو وارد روتینهای رمزگشائی کنند ؛ و روند تصدیق هویت ماژول ( آیا این واقعا" خود نرم افزار است که میخواهد بخشی از آن از حالت رمز خارج شود ؟ یا فرد دیگری ؟ ) و احراز یکپارچگی ( آیا بخشی از کد یا حافظه تغییر داده شده ؟ ) عطف به مولفه های PKI بر عهدهء چهار عنصر : CA و گواهی دیجیتال و امضای دیجیتال و روشهای رمزنگاری است .

    مثال:

    برنامهء A از سه ماژول a و b و c تشکیل شده . بخش اعتبار سنجی برنامه در ماژول c و برخی از توابع پایه ای نرم افزار که در تمام نرم افزار از اونها استفاده شده در ماژول a پیاده سازی شده اند . برنامه باید فقط به کاربر مجازی که فایل لیسانس معتبر رو خریده اجازه کاربری بده .

    سناریوی متقارن :

    ماژول c با یک روش متقارن بصورت رمزشده منتشر میشه . توابع رمزنگاری بصورت توزیع شده در فایل اصلی برنامه و ماژولهای a و b پخش میشن ؛ بین هر دو تابع متصل نباید یک ارتباط طولی وجود داشته باشه ، یعنی نباید هر دو تابع متصل در یک ماژول باشند . برنامه اصلی موقع اعتبارسنجی توابع لازم رو بصورت دینامیک وارد حافظه میکنه ، با بررسی صحت تابع فراخوانی کننده و ماژول محاط اون ، ماژول b رمزگشائی و فایل لیسانس رو بررسی میکنه .

    سناریوی نامتقارن :

    ماژول d یک CA است ؛ ماژول e هم حاوی ِ هر دو الگوریتم مورد استفاده . برنامهء اصلی با ارائه گواهی دیجیتال به d مجوز فراخوانی c به حافظه رو کسب میکنه و بعد از فراخوانی با بررسی گواهی دیجیتال c در چند نوبت از یکپارچگی اون مطمئن میشه ؛ توابع c پس از هر بار فراخوانی با بررسی گواهی دیجیتال برنامهء اصلی صحت هویت فراخوان رو بررسی میکنند .

    فوائد روشهای متقارن :

    • -سهولت در پیاده سازی
      -سرعت بالا در اجرا و ارائهء خدمت
      -کمیت قابل قبول بار اضافی تحمیل شده به برنامه


    نقائص روشهای متقارن :

    • - اطمینان دو طرفه وجود ندارد ( تمام اتکاء روی الگوریتم است ، نه منطق اعتماد سازی مانند PKI . شناسائی الگوریتم چنان که مینماید دشوار نیست و دور زدن اون نیز هم ؛ خلاء روشهای متقارن ، عرفی ترین عنصر این حوزه ، یعنی روند صحیح اعتماد سازی است )


    فوائد روشهای نامتقارن :

    • - منطق قدرتمند و قابل اعتماد


    نقائص روشهای نا متقارن :

    • -دشواریهای پیاده سازی و کاربرد
      - هزینه
      - کمیت بالای فشار بار اضافی تحمیل شده بر نرم افزار
      - افزایش پیچیدگی اجرا : کاهش چشمگیر سرعت ارائهء خدمت



    Encryptor ها هم مانند بقیه مولفه های نرم افزاری ، میتونن در صورت کاربرد صحیح و معقول ، تا حد قابل قبولی ضریب اطمینان نرم افزار رو بالا ببرند و - باز هم - مانند سایر راه حلها ، هیچوقت هیچگونه تضمین عینی و قطعی برای حفاظت صد در صد از هیچ چیز ارائه نمیکنند .

    -

    در ادامه ، ضمن معرفی چند کمپرسور - Packer و Encryptor و شرح مختصر روش کار هر کدوم ، بیشتر در مورد ویژگیهای یک راه حل قابل اعتماد حرف میزنیم ؛ احتمالا" آخرین مطلب درس دوم هم به بررسی جزئی دو سناریوی کامل استفاده از این راه حلها باشه .

    شب خوش

    :wise2:
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  6. #6
    لیست اجمالی از کمپرسور/پکرهای متداول که بصورت عمومی در دسترس هستند ؛ برخی تجاری و برخی رایگان ؛ برای کسب اطلاعات بیشتر سایت هر کدام را ببینید :



    بخاطر داشته باشید که برای تمام این ابزارها و ابزارهائی که به مرور به این لیست اضافه میشوند راه حلهای خودکار عبور و لغو کارائی های امنیتی وجود دارد .

    :wise1:
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  7. #7
    نقل قول نوشته شده توسط jirjirakk
    برادر اینپرایز آیا توی ایران برای همیچن فعالیت هایی جا هستش که آدم بخواد ریسک کنه و فقط توی این زمینه فعالیت خودش رو شروع کنه ؟
    _______________________________
    واسه مقاله های قشنگتون هم صمیمانه تشکر :flower:
    سلام
    ICA=Iranian Crackers Association که یکی از گروههای قوی کرک و مهندسی معکوس ایرانی هستن. سایت هم داشتن ولی من یادم رفته. آدمهایی به اسم : ابراهیم میرزازاده، بهنام شمشیرساز و ... هم از خدایان اینکارها هستند (البته قدیمی هستند و ممکنه تازه کارا نشناسنشون).

    ممنون علی
    آخرین ویرایش به وسیله seyedof : جمعه 20 بهمن 1391 در 11:00 صبح دلیل: درخواست یکی از دوستان

  8. #8

  9. #9
    کسی نمونه سورس packer نداره !!!!!!!!!!!!!

  10. #10
    بیشتر از نصف این Packer ها می شود با پیدا کردن یک تغییر esp دور زد !
    یک سریشون هم مثل Aspack دیپکر ها شون ریخته همشون هم کامل جواب می دن
    به نظر من بهترین راه به جای استفاده از Packer ها و ... اینه که خودمون تو برنامه ازش دفاع کنیم ...

  11. #11
    ضرری نداره ! یه کرک می بنویس و پکش نکن و بقول خودت ازش دفاع کن و بذاراینجا ببین چقدر دوام میاره ;)

    اگر از بعضی پکرها درست و بجا استفاده بشه خیلی کار کرکر رو کند میکنن
    مثلا وقتی در مورد Asprotect چیزی بگین همه میگن برو بابا آنپکرش هست و ....اما اینا حرف مفته ! اگه از SDK اش درست استفاده بشه حتی بعد از آنپک شدن باینری شل اش هیچکدوم از انپکرا نمیتونن سکشنها رو درست کنن و کارکردن با باینری تو IDA به هیچ عنوان امکان نداره و خیلی از کدها توی olly دیتا شناخته میشن و olly هم خیلی دراین زمینه بیشعور هستش
    من هفته پیش برای پاک کردن یه فراخوانی داینامیک دی ال ال ازیه تارگت asprotect اشکم دراومد تا آخرش jmp هائی که به فانکشنهای دی ال ال کرده بودو توی olly اونم با سرچ دستی پیدا کردم . ida این امکانو داره که کدها رو به دیتا و برعکس تبدیل کنیم اما اگه تو چیزی مثل asprotect خیلی زیاد از sdk اش استفاده شده باشه ida هم اسکل میشه موقع انالیز کردن اونقدر از اول به آخر میره و برمیگرده که دیگه ارزشش رو نداره...

    پکر چیز خوبیه . فقط باید بدونین چطوری ازش استفاده کنین و برای پراتکشنی که انتظار دارین داشته باشین پکر مناسبو انتخاب کنین و حتما خود کد رو دستکاری کنین یعنی باینری پک به تنهائی کافی نیست

  12. #12
    برای پاک کردن یه فراخوانی داینامیک دی ال ال ازیه تارگت asprotect اشکم دراومد تا آخرش jmp هائی که به فانکشنهای دی ال ال کرده بودو توی olly اونم با سرچ دستی پیدا کردم
    توابع مورد نظرت رو با IDA پیدا کن . محدوده آدرسش رو ببین . در Ollydbg کلید M رو بزن و دنبال اون محدوده آدرس بگرد ، آپکدت رو پیدا و Patch کن . تمام اینکار رو الان دیگه میتونی با Immunity Debugger خودکار کنی . Ollydbg یه سری باگ خفن داره که بعضی از پکرها ازشون به عنوان ترفند آنتی دیباگ استفاده میکنن ، که یه سریشون تو Immunity Debugger برطرف شده و برای بقیه هم لازم نیست خود دیباگر رو Patch کنی __ مثل وضع ملودرامی که در Ollydbg و نگه داشتن چند نسخه Patch شده مختلف وجود داشت __ میتونی در زمان اجرا یه Command ساده اضافه کنی که تو همون Address Space موارد لازم رو Patch کنن .

    به نظر من بهترین راه به جای استفاده از Packer ها و ... اینه که خودمون تو برنامه ازش دفاع کنیم ...
    مهمترین کاربرد پکر پیچیده تر کردن دیباگ هست . بدون پکر Protection ات کوچکترین شانسی نداره ، این خیلی بدیهی هست . همانطور که قبلا گفتم مسئله اینه که اغلب پکرهای تجاری چون روی نرم افزارهائی استفاده شدن که جذاب بودن ، طبیعتا روشون کار شده وبراشون آنپکرهای زیادی وجود داره . با یه دستکاری ساده در پکر یا فایل پک شده حتی اگر فقط Shell باشه میشه اغلب آنپکرها رو مایوس کرد ، و به همین ترتیب اکثر کرکرها که افراد کم سوادی هم هستند و صرفا با ابزار و اسکریپت و فرومهای زیرزمینی آشنا هستن رو نا امید کرد . افرادی که باقی میمونن حرفه ای تر هستن و تعدادشون هم کمتره که طبیعتا اگر چنین افرادی به یک برنامه گیر بدن هر کاری کرده باشی بهر حال کرکش میکنن ، چون بقول معروف اگه اجرا میشه ، کرک میشه ؛
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  13. #13
    خیلی از پکرها یا برنامه نویس ها سکشن ها را دست میزنند یا IAT را خراب می کنند
    به هر حال موقع اجرا باید هم فایل را دیپک کنند و هم IAT را دوباره بسازند
    با تحلیل کد مثلا گشتن دنبال یک jmp که ناگهان به یک جای دیگر برنامه میرود در همان
    اول برنامه بعد از این که با چند تا call فایل را دیپک کرد یا پیدا کردن اولین تغییر esp و bp گذاشتن
    روی حافظه ذخیره شده در آن و منتظر دسترسی به آن ماندن یا bp گذاشتن روی سکشن که اسم code همراه آن است یا ... می شود ep برنامه اصلی را پیدا کرد مثلا در ollydbg معمولا به جایی بر می خورید که کد وارد یک سری data می شود db,dw,... البته ollydbg خیلی خوب می تونه از پسش بر بیاد! با یکسری پلاگین مثل analyse this یا analyse خود ollydbg همه اون data ها به کد قابل فهم تبدیل می شوند و حتی api های ویندوز هم در آنها شناسایی می کند بعد از پیدا کردن ep اصلی با Lord PE به صورت خودکار می شود pe را دوباره ساخت و سکشن های اضافی را حذف کرد و با Imprec و یک مقدار دقت IAT را دوباره ساخت ... من با 7-8 تا پکری که کار کردم 3تاشون IAT را خراب می کردن FSG,Aspack,UPX ....
    من تازه اومدم تو کار RE ;)
    نقل قول نوشته شده توسط illegalyasync مشاهده تاپیک
    ...
    اگر می شود تا هفته دیگر یک برنامه با Aspack پک کنید بزارید واسه Unpack :)
    ممنون می شم

  14. #14
    اگر می شود تا هفته دیگر یک برنامه با Aspack پک کنید بزارید واسه Unpack :)
    ممنون می شم
    برای چی ؟ خوب خودت اینکارو بکن :)

    تمام اینکار رو الان دیگه میتونی با Immunity Debugger خودکار کنی
    آخرین نسخه اش رفرنس نداره و منوش هنگ میکنه . فقط من اینطوریم ؟

  15. #15
    رفرنس رو از سایتشون هم میتونی بگیری . مال منم هنگ میکنه ، قبلا هم هنگ میکرد . ولی چیز مهمی نیست .

    - لطفا بحث یک تاپیک را منحرف نکنید . ممنون
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  16. #16
    ولی با اینحال هم همه این پروتکشن ها باید برنامه را در حافظه Extract کنند
    برای کرک کردنشان هم باوجود Loader ها حتی نیاز به Unpack کردن شان هم نیست
    (البته اگر آدم تنبلی باشید !) ...
    همون شعار کرکرها :
    هرچیزی که اجرا بشه کرک می شه ...
    ....
    ....
    از اونجایی که گفتین کرکرها کم سواد ...
    به این نکته توجه داشته باشید که کرکرها همیشه جلوتر از Protector هستند و این را از این
    که هر برنامه ای که آومده در کوتاه ترین مدت کرکش هم اومده می شه فهمید و هر پرتکشنی که باشد برای تازه وارد ها (guys like me) می باشد
    و این که BlackHat ها هم همیشه بالاتر و چند سال جلوتر از WhiteHat ها هستند ...
    و این را فقط با خوندن Abstract مقالات کنفرانس Black Hat 2007 می شود فهمید
    و چیزهای دیگر مثلا توجه به این نکته که سال 1991 نقطه ضعف Buffer Overflow در مجله
    Phreak مطرح شد قبلا از این که Window 95 بیاد قبل از این که حتی لینوکس به وجود
    بیاد ... وجود این همه Exploit BoF این نکته را می رساند که WH ها چقدر عقب تر از Black Hat
    ها هستند ...
    روش حمله جدید به اسم Dongling Pointer اومده (در BH2007 مطرح شد)
    که اون هم مدتی طول می کشه تا White Hat ها بفهمن داستان چیه ...ا
    ...
    این ها را برای این گفتم چون فکر کردم نظر تون در مورد BH ها خوب نیست
    ...
    از این که بحث امنیت نرم افزار تو این پست ها راه افتاده خوشحالم ...
    چون نقاط تاریک خیلی زیادی هست که متاسفانه برنامه نویس های ایرانی
    ازش خبر ندارند نبود منبع مناسب هم دلیلشه ....

    از برادران عزیزم Inspiron و illegalyasync هم ممنونم

    Tanx anyway...

  17. #17
    سلام به دوستان
    ضمن تشکر از شما درباره مطالبتون یه درخواستی داشتم. این Packer ها فقط برای برنامه هایی جواب می دن که با Net. کار نشده باشه. در صورتی که یک برنامه ای با Net. نوشته شده باشه رو بخوایم Pack کنیم Error میده. قبلا من یه برنامه ای رو تو همین سایت دیده بودم به نام:
    Net Reactor. که خیلی قشنگ کار می کنه ولی Unregistered هست.
    در صورت امکان اگه Keygen یا کرک یا ... برای این برنامه رو پیدا کردید لطف کنید لینکش رو همینجا بگذارید.
    http://eziriz.com

    متشکرم

  18. #18

    نقل قول: درس دوم : Compressor - Packer - Encryptor

    - با استفاده از یک HEX Editor قسمتهای به خصوصی از باینری ات رو تغییر بده . این کار باید باعث نا شناخته موندن Packer مورد استفاده بشه ؛
    سلام
    راجع به اين مورد بالا اگر دوستان بتوانند بيشتر و با ذكر مثال توضيح بدهند ممنون خواهم شد.
    در مورد upx تست كردم؛ اگر با هگز اديتور upx را مثلا به xyz تبديل كنيد، ديگر خود upx فايل رو آنپك نخواهد كرد و پيغام ميده كه فايل دستكاري شده. تا اينجا خوب است ولي اين مورد signature كامل رو از بين نمي‌بره.

  19. #19
    کاربر دائمی آواتار scarce
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    gifdoni.com
    پست
    330

    نقل قول: درس دوم : Compressor - Packer - Encryptor

    به نظر من باید برنامه که توسط برنامه نویس نوشته می شه از داخل کد بشه

  20. #20

    نقل قول: درس دوم : Compressor - Packer - Encryptor

    من هنوز درست متوجه نشدم!!! ما همه ی اين كار ها رو انجام میديم كه چی بشه؟
    كسی نتونه به سورس برنامه دسترسی پيدا كنه؟
    كسی نتونه به فرمول ما برای ساخت Serial دسترسی پيدا كنه؟
    ... ؟؟

  21. #21
    کاربر دائمی
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    تهران
    پست
    2,397

    نقل قول: درس دوم : Compressor - Packer - Encryptor

    من هنوز درست متوجه نشدم!!! ما همه ی اين كار ها رو انجام میديم كه چی بشه؟
    كسی نتونه به سورس برنامه دسترسی پيدا كنه؟
    كسی نتونه به فرمول ما برای ساخت Serial دسترسی پيدا كنه؟
    ... ؟؟
    فکر میکنم علت این سوال شما این هست که شما محور رو برنامه های دات نت قرار دادین.
    در برنامه های دات نت هدف نرسیدن به سورس هست ( البته نه 100 % )
    ولی در مورد برنامه های native ( مثل وی بی 6 و دلفی و ... ) هدف در پکرها فشرده سازی و در Protector ها ایجاد مشکل در کشف الگوریتم برنامه هست.
    چون اگر الگوریتم لو بره , اول کل زحمت برنامه نویس هدر میشه و دوم اینکه میشه در اون تغییراتی رو ایجاد کرد.

  22. #22

    نقل قول: درس دوم : Compressor - Packer - Encryptor

    فکر میکنم علت این سوال شما این هست که شما محور رو برنامه های دات نت قرار دادین
    فقط در مورد سوال اول درسته، در كل نه

  23. #23

    نقل قول: درس دوم : Compressor - Packer - Encryptor

    با تشکر از INprise عزیز به خاطر بحث بسیار جالب و پر اهمیتی که آغاز کردن
    فقط چرا بحث نیمه کاره رها شد؟
    دوستان برای یک فرد مبتدی چه منابعی رو پیشنهاد می کنید برای مطالعه؟

  24. #24
    کاربر دائمی آواتار golbafan
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    در قلب دوستان
    پست
    2,018

    نقل قول: درس دوم : Compressor - Packer - Encryptor

    حالا بگید ببینیم بهترین پکر کدوم یکیه؟

    آخه n تا پکر هست ولی من نمیدونم کدوم قویتره!!!

  25. #25
    کاربر دائمی آواتار REZADG
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    هر جایی که انسان میتونه باشه
    پست
    472

    نقل قول: درس دوم : Compressor - Packer - Encryptor

    نقل قول نوشته شده توسط anubis_ir مشاهده تاپیک
    سلام
    راجع به اين مورد بالا اگر دوستان بتوانند بيشتر و با ذكر مثال توضيح بدهند ممنون خواهم شد.
    در مورد upx تست كردم؛ اگر با هگز اديتور upx را مثلا به xyz تبديل كنيد، ديگر خود upx فايل رو آنپك نخواهد كرد و پيغام ميده كه فايل دستكاري شده. تا اينجا خوب است ولي اين مورد signature كامل رو از بين نمي‌بره.
    دوست عزیز من یک مقاله در این باره نوشتم و رو سایت هست بگیر و بخون خودتون میفهمید البته حرف زدن مقابل اساتید بالا جایز نیست اساتید شرمنده
    آدرس مقاله
    https://barnamenevis.org/showthread.php?t=187504
    اولی در این مورد هست
    واما
    نقل قول نوشته شده توسط golbafan مشاهده تاپیک
    حالا بگید ببینیم بهترین پکر کدوم یکیه؟

    آخه n تا پکر هست ولی من نمیدونم کدوم قویتره!!!
    شما باید بگم که شما خودتون میگید N پکر پس همگی شناخته شده هستن پس با هر کدوم که بخوایی پک کنی آنپک میشه پس پکر های من در آورده که کد هاشون رو خودتون مینویسید بهترین گزینه واسه این کاره او کی البته مقاله ی دوم همون آدرس به این کار اشاره نکرده اما راه حلی نوشتم که شاید به دردتون بخره نوع روش جایگزین کردن EXE هست

  26. یک شنبه 21 خرداد 1391, 18:12 عصر

    دلیل
    سوال خود را در تاپیک جداگانه مطرح کنید

تاپیک های مشابه

  1. یک Packer ویژه دات نت
    نوشته شده توسط SalarSoft در بخش امنیت در نرم افزار و برنامه نویسی
    پاسخ: 13
    آخرین پست: شنبه 25 اسفند 1386, 18:40 عصر
  2. DLL Packer
    نوشته شده توسط Pioneers در بخش C#‎‎
    پاسخ: 4
    آخرین پست: شنبه 12 خرداد 1386, 23:29 عصر
  3. NET Packer.
    نوشته شده توسط Amir Oveisi در بخش C#‎‎
    پاسخ: 2
    آخرین پست: یک شنبه 06 اسفند 1385, 11:23 صبح
  4. معرفی Packer ها
    نوشته شده توسط jirjirakk در بخش امنیت در نرم افزار و برنامه نویسی
    پاسخ: 1
    آخرین پست: جمعه 28 اسفند 1383, 14:00 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •