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

نام تاپیک: تمام jumpهای exe

  1. #1

    تمام jumpهای exe

    سلام
    یک روشی یا کدی می خوام که بتونم آدرس تمام دستورهایی که در exe به آنها jump می شود بدست بیارم
    OllyDbg وقتی یک فایل exe رو باز می کنه، تشخیص می ده به چه آدرسهایی jmp صورت گرفته و آنها رو با یک فلش نمایش می ده. حالا این کار چطور انجام می شه و چطور تشخیص داده می شه؟ من می خوام برنامه ای بنویسم که بتونم این آدرسها رو در هر exe تشخیص بدم
    لطفا راهنماییم کنید، مرسی

  2. #2
    با Disassembler انواع Jump ( و Call ها ) شناسائی میشن و بعد بسته به اندازهء Instruction و 32 یا 64 بیتی بودن سیستم آدرسی که به اون ارجاع شده پیدا میشه . میتونی با استفاده از موتور Disassembler خود Olly‌ که در دسترس هست کد مورد نظرتو بنویسی یا میتونی برای Olly اسکریپت بنویسی . همینطور میتونی از IDA استفاهه کنی و براش یه پلاگین بنویسی که این یکی کمی سخت تر و روش بهتری هست . هر کدوم رو که انتخاب کنی یه دو جین نمونه و راهنما هست که میتونی باهاشون کار رو شروع کنی . البته اگر این مسئلهء من بود صرفا از pefile استفاده میکردم .
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  3. #3
    مرسی، ولی این pefile چی هست؟
    کد من تو محیط VC هست، راهنما یا لینک دیگه ای سراغ نداری؟ ممنون میشم.

  4. #4
    از همان پیشنهاد اولم استفاده کن
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  5. #5
    PVDasm هم خیلی خوبه میتونی از Engine اش استفاده کنی . Open Source هست . سایتشو ببین http://pvdasm.reverse-engineering.ne....php?Section=3
    میتونی از DLL اش استفاده کنی و فایلهای باینریتو بهش بدی و تو خروجیش یه grep‌ بزنی و jmp ها رو بگیری

  6. #6
    کاربر دائمی آواتار saeedIRHA
    تاریخ عضویت
    بهمن 1383
    محل زندگی
    Eclipse
    سن
    38
    پست
    605

    Talking

    این یک برنامه برای پیدا کردن (jump(call , فقط باید registery که میخوای
    ازش jump هارو پیدا کنی بهش بدی!
    هم در فایل DLL عمل میکه هم در فایل exe!
    سورس برنامه با C هست،فایل اجریش هم برات گزشتم!
    فایل های ضمیمه فایل های ضمیمه

  7. #7
    پیش فرض غلط کدی که گذاشتی و روشهای مشابه اینه که فرض میکنن تمام یک فایل باینری از Code تشکیل شده در حالیکه در عمل اینطور نیست . هر قطعه باینری ای که معادل آپکد جامپ باشه لزوما یک جامپ نیست . میتونه دیتا باشه یا میتونه هر چیزی باشه خارج از کد سکشن که در نتیجه به درد مقاصد مورد نظر ( که برای یک جامپ قابل تصور هستن ) نمیخوره !
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  8. #8
    کاربر دائمی آواتار saeedIRHA
    تاریخ عضویت
    بهمن 1383
    محل زندگی
    Eclipse
    سن
    38
    پست
    605
    یک سؤال برام پیش امد، اگر ما offset شروع تا پایان Code section رو
    پیدا کنیم، این روش میتونه موثر باشه ؟

  9. #9
    اگر فایل Packed نباشه و فقط یک Code Section داشته باشه آره .
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  10. #10
    کاربر دائمی آواتار saeedIRHA
    تاریخ عضویت
    بهمن 1383
    محل زندگی
    Eclipse
    سن
    38
    پست
    605
    یک فایل PE مگر میتونه بیشتر از یک Code section داشته باشه ؟

  11. #11
    لینکرهای مایکروسافت و بورلند چنین PE ای تولید نمیکنن اما میتونی خودت بسازی . illegalyasync از اینکارها کرده فکر کنم اگر دوست داشته باشه خوبه که بیاد توضیح بده .
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  12. #12
    کاربر دائمی آواتار saeedIRHA
    تاریخ عضویت
    بهمن 1383
    محل زندگی
    Eclipse
    سن
    38
    پست
    605
    من هم واقعاً ممنون میشام اگر ایشون یا خوده شما در مورد این مسئله صحبت کنید!
    باز هم تشکر

  13. #13
    نقل قول نوشته شده توسط saeedIRHA مشاهده تاپیک
    یک فایل PE مگر میتونه بیشتر از یک Code section داشته باشه ؟
    از fasm استفاده کن. برای این کار عالیه. هر جور که دلت بخواد میتونی سکشن هارو ایجاد کنی. هر نوع سکشنی هر کجای برنامه که بخوای. عالیه.

  14. #14
    کاربر دائمی آواتار saeedIRHA
    تاریخ عضویت
    بهمن 1383
    محل زندگی
    Eclipse
    سن
    38
    پست
    605
    ممنون ، ولی من نمی خوام Section خاصی ایجاد کنم،فقط میخوام بدونم چطوری ممکنه
    در یک فایل PE بیشتر از یک Code section داشته باشیم!؟؟؟؟

  15. #15
    خوب یه سکشن شروع میکنه بعد یه جامپ میده به یه سکشن دیگه!

  16. #16
    باید دستی EP رو مشخص کنی. توی fasm ابتدای برنامه یه label به عنوان EP معرفی میکنی و میزاریش اونجایی که میخوای برنامه شروع بشه. بعد call ها و jumpهای توی این سکشن دسترسی به بقیهء سکشنها رو مقدور میکنن. برای مثال توی fasm مینویسی:
    ...
    entrypoint start
    ...
    section 'avaly' readbale writeable executable
    ...
    start: ;in entry pointete
    ...
    stdcall yeFunctionAzYeSectionedige ;inam dastresy be ye sectione dige
    ...
    section 'dovomy' readable writebale executable
    proc yeFunctionAzYeSectionedige
    ...
    endp

  17. #17
    مجوز هر کدوم از section هاتو میتونی runtime تغییر بدی و از همونجا کد اجرا کنی . خیلی از پکرها یا ویروسها همینکارو میکنن . code section یا در کل هر سکشنی چیز خاصی نیست . وقتی page ها allocate میشن مجوزشون رو از section ای که بهش تعلق دارن به ارث میبرن . تنها معنی سکشن همینه

  18. #18
    آقای illegalyasync میشه لطف کنید بفرمایید این تغییر رانتایم مجوز سکشنها دقیقا به چه درد میخوره؟ البته تو مرحلهء debug میتونه بدرد بخور باشه. ولی وقتی برنامه رو طراحی میکنی معلومه هر سکشن باید چه مجوزی داشته باشه پس اینی که گفتی یعنی چه؟ مِدونی، موضوع executable بودن یه سکشن وقتی معنی داره که شما یه چیز executable توش داشته باشی. یعنی کد. و این که توی یه سکشن هنگام اجرا کد خواهد بود یا نه موقع نوشتن برنامه واضحه. تازه فقط readable writeable بودن یک سکشن کافیه تا اگه اون سکشن حاوی کد بود بتونه بعد از تحویل گرفتن یه جامپ به درستی برنامه رو پیش ببره!

  19. #19
    نه . executable بودنش هم لازمه
    تو جواب قبلیم گفتم که یه سری از ویروسها و یه سری از پکرها از این روش استفاده میکنن . مثلا کد رو میذارن تو دیتاسکشن و در زمان خاصی دیکریپت و همونجا اجراش میکنن و بعد بلافاصله مجوز execution کلیه page های قبلی رو لغو میکنن . بدون این روش نوشتن کد پلی مورفیک غیر ممکنه . از بین پکرها هم Aspack از همین روش استفاده میکنه . اگر DEP‌رو فعال کنی Aspack کار نمیکنه و دلیلش جلوگیری کردن از اجرای کد از Page هائی هست که هنگام Allocation‌مجوز Execute نداشتن .

  20. #20
    پس لطف کن با یه هگز ادیتور یه برنامه رو باز کن و خصوصیات executable و code رو از سکشن کد بگیر. اجراش کن. اجرا شد؟ دیدی که اجرا میشه. این برنامه هایی هم که گفتی به یه دلیل دیگه مجوزها رو تغییر میدن که برمیگرده به همون چیزی که گفتم : رفتارهای debug و antidebug گونه!.

  21. #21
    به نظر میرسه تو مفهوم Page و Section ای که illegal در موردش حرف میزنه را متوجه نشدی .
    Page هائی که داخل Code Section "در حافظه" هستند باید مجوز Executable داشته باشن و Loader سیستم عامل بعد از فراخوانی PE خودش کد سکشنها رو پیدا میکنه و Page های اونها رو Executable میکنه . بقیه Page ها هم بصورت پیش فرض مجوز سکشنی که بهش تعلق دارن رو به ارث میبرن مگر اینکه صراحتا" این مجوز تغییر کنه
    ( Memory BreakPoint ها همینطور کار میکنن . یعنی Page ای که bp روی اون قرار داره مجوز اجرائیش لغو میشه و هنگام رسیدن به اون Page فرآیند execution متوقف میشه و debugger با فهمیدن این مسئله رسیدن به نقطه مورد نظر رو اعلام میکنه - ر-ک همه چیز در مورد bp ها در بخش امنیت نرم افزار )

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

    تعیین کردن مجوز سکشن در زمان لینک باعث میشه هنگام ساختن باینری سکشنهای مختلف به شکل مناسب ساخته بشن . اگر یک سکشن به عنوان Data معرفی بشه و Executable نباشه تو نمیتونی ازش کد اجرا کنی مگر اینکه با VirtualProtect و خانواده اش ابتدا مجوز Page ها رو Executable کنی . از اونجائی که هر PE حداقل یک کدسکشن داره که توسط هدر EP اونجا معرفی میشه مجوز Page‌هاش در حافظه همیشه executable است

    برای اینکه بهتر اینو متوجه بشی یه کد ساده بنویس که در زمان اجرا بدون تغییر مجوز Page ها بتونی از تو استک کد اجرا کنه ؛ که طبعا چنین چیزی امکان نداره .
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  22. #22
    mountainking توضیحاتی که اینپرایز داده رو خوب بخون اما من تو چنین بحثهائی فرض میکنم افراد مطالب اولیه و ابتدائی رو میدونن که الان به نظر میرسه فرض غلطی بوده حالا از اول توضیح میدم

    نقل قول نوشته شده توسط mountainking مشاهده تاپیک
    پس لطف کن با یه هگز ادیتور یه برنامه رو باز کن و خصوصیات executable و code رو از سکشن کد بگیر. اجراش کن. اجرا شد؟ دیدی که اجرا میشه. این برنامه هایی هم که گفتی به یه دلیل دیگه مجوزها رو تغییر میدن که برمیگرده به همون چیزی که گفتم : رفتارهای debug و antidebug گونه!.
    قبل از اون توضیح باید بدونی که گرفتن خصوصیت؟ executable از کد سکشن اصلا بی معنیه و هیچ مفهومی نداره . اینو از کجات در آوردی ؟

    وقتی یه فایل باینری لینک میشه فایل اجرائی تولید میشه . این فایل اجرائی یه سری سکشن داره که هر کدوم یه سری قابلیت دارن . این قابلیتها تو فرمت فایل اجرائی تعریف شده و سیستم عامل در موردشون اطلاع داره . مثلا در فرمت PE که روی ویندوز فرمت اصلی فایلهای اجرائی هستش Code Section اون بخشی از فایل باینری هست که وقتی به مموری مپ میشه تمام Page های اون بخش از مموری دارای مجوز خوندن و نوشتن و اجرا هستن و Data Section اون بخشی هست که تمام Page هاش امکان خوندن و نوشتن دارن و ....
    بنابراین لینکر فقط بر اساس کدی که برنامه نویس نوشته و کانفیگی که به کامپایلر داده فایل باینری حاوی یه سری سکشن تولید میکنه . اگه سکشنی که لینکر باید تولید کنه مجوز Executable داشته باشه یعنی کد سکشن هست و هر چی باینری در اون بخش هست در زمان اجرا در Page های executable قرار میگیرن . بنابر این وقتی یه فایل اجرائی رو اجرا میکنی این اتفاقها میفته :

    1- کدهای کد سکشن در Page هائی که مجوز Executable دارن قرار میگیرن
    2- کدهای دیتاسکشن و فضائی که برای هیپ و استک در نظر گرفته شده در بخشی قرار میگیرن که Page ها مجوز خوندن و نوشتن دارن فقط
    3-و بعد با استفاده از اطلاعات هدر برنامه اجرا میشه

    حالا اگه جوابهائی که در صفحه قبل دادم در مورد ویروسهای پلی مورفیک و پکرها و ....کل مطلب روشن میشه

  23. #23
    میبخشید اگر من با اطلاعات غلط حرف زدم. پس حالا که شما بیشتر میدونید اینو برام توضیح بدید تا بیشتر یاد بگیرم:
    توی یه PE32 اگه مقدار مربوط به قسمت characteristics هدر سکشن کد رو به 40000004 تبدیل کنیم چی میشه؟

  24. #24
    وقتی لینکر کد تولید میکنه اگر سکشن مورد نظر Executable معرفی شده باشد , در PE اون سکشن حاوی کد معرفی میشه . اگر مقدار Characteristics رو به مثلا 40000040h تغییر بدی از اون به بعد اون سکشن دیگه کد سکشن نیست , یک دیتا سکشن هست .

    وقتی تو جواب قبلیم بهت گفتم که اون جمله ات مفهوم نداره به همین معناست . کد سکشن جائی هست که با Page هاش بصورت executable برخورد میشه . اگر اینطور نباشه دیگه کدسکشن نیست .

    لینکر این اطلاعات رو تولید میکنه تا لودر بتونه وقتی قسمتهای مختلف باینری رو میریزه تو حافظه به درستی مجوز پیج رو اختصاص بده .

  25. #25
    نقل قول نوشته شده توسط illegalyasync مشاهده تاپیک
    اگر مقدار Characteristics رو به مثلا 40000040h تغییر بدی از اون به بعد اون سکشن دیگه کد سکشن نیست , یک دیتا سکشن هست . .
    خوب حالا این دیتا سکشن با کرکتریستیک 40000040h نمیتونه کد اجرا کنه؟

    تو inprise میگی :
    یک سکشن تا وقتی که با مشخصه text. یا همون CODE متمایز شده باشه بعد از فراخوانی توسط سیستم عامل تمام آفستهاش اجرائی هستن .

    اگر منظورت از text. اسم عمومی ای هستش که کامپایلرها اصولا برای کد سکشن انتخاب میکنن باید بگم این فقط اسمه نه چیز دیگه ای! اون charactristics یه سکشن هستش که مشخص میکنه CODE یا چیز دیگه ایه! البته اگه منظورت از charractristics، .text بوده حق با توئه!

    یه چیزه دیگه که یادم رفت بگم:
    آقای اینپرایز منظورت از :"به نظر میرسه تو مفهوم Page و Section ای که illegal در موردش حرف میزنه را متوجه نشدی ."چیه؟
    من کجای حرفام این دوتا رو با هم اشتباه گرفتم؟ خوب این واضحه که اگه خصوصیات سکشنی رو دستکاری کنی پیجهاش اون خصوصیات رو به ارث میبرن! حالا من گفتم خصوصیات کد سکشن رو با هگز ادیتور عوض کن. این کجاش اشتباه گرفتن پیج با سکشنه؟

  26. #26
    خوب حالا این دیتا سکشن با کرکتریستیک 40000040h نمیتونه کد اجرا کنه؟
    اگر BaseofCode اونجا نباشه نه نمیتونه مگر با تغییر مجور Page ها . اگر BaseofCode اونجا باشه بهر حال لودر اونو کدسکشن فرض میکنه . چون بنارو براین میذاره که حداقل یک EP باید وجود داشته باشه و base میخاد . ( مگر برای DLL که میتونن فقط شامل دیتا هم باشن . مثلا DLL هائی که در واقع resource file هستن . اونا مجبور به داشتن EP نیستن و لازم نیست baseofcode داشته باشن و در این حالت هم اگه کد سکشنی بسازی و بعدا اونو به دیتاسکشن تبدیل کنی هیچ کدی اونجا اجرا نمیشه )

    اینم از صفحه نقل قول میکنم شاید دلیل اشتباهتو که این÷رایز گفته متوجه بشی

    تازه فقط readable writeable بودن یک سکشن کافیه تا اگه اون سکشن حاوی کد بود بتونه بعد از تحویل گرفتن یه جامپ به درستی برنامه رو پیش ببره
    اولا Writable بودنش لازم نیست . فقط اگه کسی بخواد کد self-modifying بنویسه ( مثل ویروسهای ÷لی مورفیک ) به مجوز نوشتن نیاز داره .
    دوما وقتی برنامه باینری درست شد دیگه خوندنی یا نوشتی بودن اون سکشن بی معنی هستش ! تو وقتی داری تو مرحله کدنویسی سکشن تعریف میکنی از خوندنی و نوشتنی و اجرائی استفاده میکنی که لینکر بفهمه چه سکشنی با چه مجوزی باید بسازه ! وقتی باینری ساخته شد فقط و فقط سکشنها دارای عنوان هستن که اون عنوان یه سری مشخصه داره . یعنی اگه بگی سکشنی خوندنی هست عبارت بی معنی ای گفتی و ممکنه فرض کنن تو مسئله رو با ÷یج اشتباه گرفتی . کدسکشن وقتی لود میشه همه ÷یجهاش خوندنی و اجرائی هستن و دیتاسکشن وقتی لود میشه همه ÷یج هاش خوندنی و نوشتنی هستن . تازه میشه اینها رو تغییر هم داد .
    اگر موقع نوشتن مطلب از عبارتها به دقت استفاده میکنیم سوء تفاهمی ÷یش نمیاد چون هر کسی با ÷یش زمینه ذهنی خودش مطالب دیگرانو میخونه و با تصور خودش اونها تفسیر میکنه ....

  27. #27
    نقل قول نوشته شده توسط illegalyasync مشاهده تاپیک
    اولا Writable بودنش لازم نیست . فقط اگه کسی بخواد کد self-modifying بنویسه ( مثل ویروسهای ÷لی مورفیک ) به مجوز نوشتن نیاز داره .
    یعنی میخوای بگی هیچ data ای در کد سکشن پیدا نمیشه که رانتایم مدیفای بشه؟!

    کد زیر رو توی masm32 اسمبل و لینک کن ببین سکشن cseg چه خصوصیاتی داره. برنامه اجرا میشه ولی EP توی cseg نیست!!!
    586.
    model stdcall, flat

    include windows.asm
    include kernel32.asm

    includelib kernel32.dll

    cseg segment 'code' ;cseg
    invoke ExitProcess,0
    cseg ends

    پس یا اشتباه میگی یا من متوجه نشدم!
    البته در تمام گفته هام به این نکته حتما توجه کنین که نهایتا خصوصیاتی که میگم به پیج مربوطه میرسه!!!

  28. #28
    یعنی میخوای بگی هیچ data ای در کد سکشن پیدا نمیشه که رانتایم مدیفای بشه؟!
    این ربطی به بحثمون نداشت ولی جوابت شرط داره .
    اگر خودت مجوز Write رو نداده باشی یا گرفته باشی حتی داخل کد سکشن هم نمتونی مقدار یک آفست رو عوض کنی . فقط میتونی بخونی یا اجرا کنی . اگر مجوز رایت داشته باشه میتونی روش بنویسی اما نوشتن روی یه آفست معنیش این نیست که اون دیتا هست
    منظور از دیتا متغیرها و ریسورسهای برنامه هست . در حالت عادی متغیرها و ریسورسهای برنامه در دیتاسکشن هستن نه کد سکشن .

    کد زیر رو توی masm32 اسمبل و لینک کن ببین سکشن cseg چه خصوصیاتی داره. برنامه اجرا میشه ولی EP توی cseg نیست!!!
    همه اون مشخصاتی رو که من گفتم داره و EP هم در تنها کدسکشن برنامه هست . حالت خوبه ؟

  29. #29
    اوه شت! ریدم!!
    ببخشید اشتباه کردم. لطفا اینو تو fasm تست کن:
    entry start
    section 'cseg' readable writabel
    proc hello
    nop
    ret
    endp

    section 'aseg' readbale writable
    :start
    stdcall hello
    invoke ExitProcess,0


  30. #30
    baseofcode ات در aseg هست ( بخاطر entry start ) که تنها کدسکشن برنامه است و همین به عنوان EP در نظر گرفته میشه ( به دو تا جواب قبلم رجوع کن اونجا همینو توضیح دادم )
    هنوز این مسئله ساده روشن نشده ؟

    اگه جوابهائی که من دادم رو خوب و به دقت خوندی که احتمالا اینطور نیست من فقط یه توضیح دیگه باقی مونده که هنوز ندادم اونم اینه که
    اگر قرار بود اجرا شدن کد فقط منوط به مجوز رید باشه و مجوز رایت هم که برای نوشتن هست هدف وجود مجوز Execute فقط عشق و حال تفریح هست ؟ یا هیچ هدفی نبوده و همینطوری از روی بیکاری در نظر گرفتنش ؟

    کدی که نوشتی چون کنار section کلمه executable رو ننوشتی فکر میکنی Page های کد سکشن نباید Executable باشن ؟ شاید به همین دلیل اینپرایز نوشته که این دو تا مسئله رو قاطی کردی.....
    بازم تکرار میکنم
    وقتی داری کد مینویسی سعی میکنی به لینکر بفهمونی کحا کد سکشن هست و کجا دیتا
    و وقتی لینکر باینری رو تولید کرد هر جا که کدسکشن باشه همه Page هاش مجوز Executable دارن . خیلی مسئله ساد ایه
    آخرین ویرایش به وسیله Inprise : دوشنبه 15 مرداد 1386 در 11:53 صبح دلیل: فقط جواب فنی بدهید

  31. #31
    پس لطف کن بگو پیجی که از cseg تهیه میشه چطور قابل اجراس و executable بودن رو از کجاش در میاره؟!

  32. #32
    هر جا Proc داشته باشی اونجا به عنوان کد در نظر گرفته میشه ! اینم فکر میکنم واضحه
    برای اینکه بتونی تست کنی یه پیشنهاد خیلی ساده بهت میدم
    یک شلکد که یه MessageBoz رو نمایش میده رو بردار و در cseg ات بصورت دیتا ( db ) معرفی اش کن و بعد سعی کن اجراش کنی ;)

  33. #33
    آقا این شل کد چی هست؟ یه جور بگو منم بفهمم. MessageBoz چیه؟ اگه توضیح بدی ممنون میشم.

  34. #34
    شلکد اینه : http://en.wikipedia.org/wiki/Shellcode
    مسج باکس اینه : http://msdn2.microsoft.com/en-us/library/ms645505.aspx
    گوگل هم اینه : http://www.google.com

    اگر حوصله نداشتی میتونی از اکسپلویتهائی که تو Metasploit 2.7 هست استفاده کنی . یه سکشن Readable-Writable تعریف کن و شلکد رو بصورت یک آرایه ذخیره کن . بعد از لینک و اجرا این قطعه باینری در دیتاسکشن قرار میگیره و page هاش مجوز اجرا ندارن . بعد jmp کن به اول این آرایه و ببین شلکدت اجرا میشه یا نه . طبیعتا اجرا نمیشه .آدرس اول و آخر آرایه ات بدست بیار . مثلا یه اشاره گر به آرایه ات تعریف کن که باعث میشه از روی هیپ در دسترس باشه . با VirtualProtectEX مجوز Execute رو به Page هائی که محتوی آرایه ات هستن و آدرسشون رو داری اضافه کن . حالا مجددا jmp کن به اول آرایه و ببین شلکدن اجرا میشه یا نه . که طبعا" اجرا میشه مگر اینکه روی کامپیوترت DEP یا Data Execution Protection فعال باشه که باعث میشه از دیتاسکشن Page هائی که Executable شدن نتونن کد اجرا کنن ( قدیم تر ها وقتی یک برنامه اکسپلویت میشد , Payload رو برای اینکه آنتی ویروس بهش گیر نده بصورت رمز شده وارد یک بافر میکرد و بعد اونجا بازش میکردن و اجرا میشد ؛ با استفاده از DEP جلوی این نوع فعالیتهای مخرب و اجرای کد روی دیتاسکشن با تغییر مجوز Page گرفته میشه )

    اگر بازم از این نکاتی که من نوشتم چیزی دستگیرت نشد من شخصا بهت توصیه میکنم این مسئله رو بیخیال بشی چون دیگه بیشتر از این ارزش نداره
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  35. #35
    هیچ کدوم رو نفهمیدم. هرچند گوگل رو هم نفهمیدم چیه ولی به نظر آسونتر میرسه. یه مقدار رفرنس معرفی می کنی بخونم؟ البته اگه امکان داره. ممنون میشم.

  36. #36
    سلام اگه امکانش هست بگین چرا این برنامه MessageBox رو نشون میده در حالی که کد مربوط به اون در محلی با تنها مجوز readable هست؟ شاید با توضیح این مثال بفهمم اشتباهم کجاست.
    فایل های ضمیمه فایل های ضمیمه

  37. #37
    اگه یادت باشه بهت گفتم تو تفاوت مفهوم Section و Page رو دقیقا نمیدونی و از ابتدای این Thread دلیل سوء تفاهمت همینه که illegal هم توضیح داد . اگر یکبار برگردی و از ابتدای این مبحث بدون اینکه دنبال گرفتن نتیجه باشی مطالب رو بخونی شاید مفید باشه .

    کدت روی ماشین من اجرا نمیشه چون DEP ام فعاله . مفهومش چیه ؟ یعنی یکی از Page هائی که در Data Section قرار داشته با مجوز Execution در حال اجرای کد هست . ( دسترسی Read یا Write در بخش دیتا کاملا عادیه و DEP جلوش رو نمیگیره . علتش هم ساده است . چون Page مورد نظر مجور execution نداره و همین باعث میشه آپکدی از اون محل اجرا نشه . دسترسی به داده یا خواندن و نوشتن بلامانع هست )



    اگر هم در محیط ollydbg کلید M رو فشار بدی یا Alt+m رو بزنی میبینی که Initial Access همه Page های Section دیتای تو RWE است یعنی همگی مجوز خوندن و نوشتن و اجرا دارن . این مسئله ارتباطی به Readable بودن سکشنی که تو در کدت معرفی کردی نداره ! به پست 34 من هم مراجعه کن
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  38. #38
    هر جا Proc داشته باشی اونجا به عنوان کد در نظر گرفته میشه ! اینم فکر میکنم واضحه
    Post no 32

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

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