تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




صفحه 1 از 2 12 آخرآخر
نمايش نتايج 1 به 10 از 11

نام تاپيک: تغییر در Resource هایی که با تابع LockResource قفل شده اند !

  1. #1
    داره خودمونی میشه
    تاريخ عضويت
    Mar 2007
    پست ها
    43

    پيش فرض تغییر در Resource هایی که با تابع LockResource قفل شده اند !

    سال نو مبارک
    در مورداین مشکل دوستان کرکر نتوانستند کمکی بکنند لذا از شما خواهشمندم مرا یاری کنید
    چگونه می توان در Resource هایی که با تابع LockResource(kernel32.dll ) قفل شده اند تغییراتی را ایجاد کرد؟
    برنامه با 6++VC نوشته شده است
    در نظر دارم نرم افزاری را فارسی سازی کنم و برای اینکاراکثر پنجره ها و کنترلها را راست چین کرده ام
    اما Resource های پنجره اصلی برنامه با تابع فوق قفل شده اند و در هنگام اجرای برنامه با تابع loadresource از قفل خارج شده و فراخوانی می شوند

    چگونه این منابع قابل مشاهده و تغییر هستند؟
    با تشکر از همه کدنویسان عزیز

  2. #2
    حـــــرفـه ای
    تاريخ عضويت
    Aug 2006
    پست ها
    793

    پيش فرض

    سلام.
    از UpdateResource استفاده کنین. که به این شکل تعریف میشه :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

  3. #3
    داره خودمونی میشه
    تاريخ عضويت
    Mar 2007
    پست ها
    43

    پيش فرض

    با تشکر از شما
    چگونه می توانم این تابع رابه فایل dll مربوطه اضافه کنم و چگونه می توانم این تابع را در مورد منابع مورد نظر بکار برم؟
    من در نظر دارم مقدار Extended Style منابع را از 00000000 به 00007000 تغییر دهم تا کنترلها و اجزا برنامه راست چین شوند.
    در مورد api windows و نحوه استفاده از ان منبع مشروح و کاملی را می توانی به من معرفی کنید؟

    متشکرم ، دوست عزیز

  4. #4
    حـــــرفـه ای
    تاريخ عضويت
    Aug 2006
    پست ها
    793

    پيش فرض

    دوباره سلام.
    برای اینکه در منابع تغییری ایجاد کنین دو API وجود داره که بعد از بار کردن فایل Dll مورد نظر در حافظه
    تغییرات رو در فایل مورد نظر ایجاد میکنه.
    BeginUpdateResource و EndUpdateResource.
    برای پیدا کردن توضیحات میتونین به این مبحث از MSDN مراجعه کنین : Resource Overview
    برای انجام کار فایل مورد نظر رو load می کنین. resource مورد نظرتون رو پیدا میکنین. lock می کنینش
    و از UpdateResource برای تغییر استفاده میکنین. که البته بین دو API بالایی قرار میگیرند.
    برای پیدا کردن resource هایی که در فایل مورد نظرتون وجود داره میتونین از این توابع استفاده کنین :
    EnumResNameProc و EnumResourceNames و نمونه های دیگه ای که البته اسمشون دقیقا یادم نیست.
    در حقیقت شما دوباره فایل مورد نظرتون رو مینویسین. کار زیاد ساده نیست. بستگی به برنامه داره.
    تا چه اندازه با برنامه نویسی آشنا هستین؟
    با Resource Hacker آشنا هستین؟ تاحالا باهاش کار کردین؟

  5. #5
    داره خودمونی میشه
    تاريخ عضويت
    Mar 2007
    پست ها
    43

    پيش فرض

    سلام به شما دوست خوب
    در مورد توابعی که در بالا معرفی کردید مطالعه کردم بسیار مفید بود ، مدت زیادی است کد نویسی نکردم ( سخت افزار هستم ) ، با Resource Hacker و نرم افزار های مشابه کاملا اشنا هستم و زیاد ازش استفاده کردم .
    من عکسی را از اجرای برنامه را که در برنامه Traceplus/win32 لود کردم ،در لینک زیر قرار دادم ،
    با توجه به تصویر چگونه باید توابع بالا را در فایل Dll برنامه جای دهم؟

    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]

    امیدوارم توضیحات خوب شما گره مشکل مرا باز کند
    باز هم متشکرم

  6. #6
    حـــــرفـه ای
    تاريخ عضويت
    Aug 2006
    پست ها
    793

    پيش فرض

    دوباره سلام.
    فرض کنیم یک module داریم شامل چند resource (مثلا DLL) و یه Interface که از این resource ها
    استفاده میکنه. وقتی Interface این module رو در حافظه بار میکنه همونطور که گفتین با استفاده از
    LoadResource یه Handle از resource مورد نظر برمیگردونه و با استفاده از Lockresource در حافظه Lock میشه
    و یه pointer از اولین بایت اون برمیگرده. تا اینجا که مراحل دسترسی یه Interface به resource .( البته بدون
    در نظر گرفتن FindResource ).
    تا زمانی که Interface مورد نظر اجرا نشه تابع Lock صدا نمیشه و تابع Lock در Interface قرار داره نه Module
    شما باید module مورد نظرتون رو پیدا کنین و با یه Interface دیگه که مینویسن (که در اون UpdateResource
    , باقی API های مورد استفاده ) module مورد نظر رو تغییر میدین.

  7. #7
    داره خودمونی میشه
    تاريخ عضويت
    Mar 2007
    پست ها
    43

    پيش فرض کمک بیشتر

    دوست خوبم سلام
    از توضیح شما متشکرم ، اون دستورالعملی که شما فرمودید از توانایی من خارج است ولی با توجه به اینکه من چهار ماه روی این پروژه وقت گذاشته ام و باید انرا به اتمام برسانم ، ایا راه ساده تری برای اینکار وجود دارد؟
    ایا نمی توان تابع LockResource را غیر فعال کرد ؟
    اگر راه دیگری وجود ندارد ،خواهش می کنم مرا بیشتر راهنمایی کنید ، تا با کمک شما این مسئله راحل کنیم.

    بسیار متشکرم

  8. #8
    اگه نباشه جاش خالی می مونه rouhallah's Avatar
    تاريخ عضويت
    Aug 2006
    پست ها
    478

    پيش فرض

    دوست خوبم سلام
    از توضیح شما متشکرم ، اون دستورالعملی که شما فرمودید از توانایی من خارج است ولی با توجه به اینکه من چهار ماه روی این پروژه وقت گذاشته ام و باید انرا به اتمام برسانم ، ایا راه ساده تری برای اینکار وجود دارد؟
    ایا نمی توان تابع LockResource را غیر فعال کرد ؟
    اگر راه دیگری وجود ندارد ،خواهش می کنم مرا بیشتر راهنمایی کنید ، تا با کمک شما این مسئله راحل کنیم.

    بسیار متشکرم
    سلام دوست عزيز
    نميدونم شايد اين مطلب كمكت كنه بروبه [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]

  9. #9
    اگه نباشه جاش خالی می مونه rouhallah's Avatar
    تاريخ عضويت
    Aug 2006
    پست ها
    478

    پيش فرض

    دلیلش اینه که Notepad از نوع single Document هست و پنجره ی اصلی run-time ایجاد میشه.
    به عبارت دیگه resource ی براش وجود نداره و با کد ساخته میشه.
    سلام
    بازم سوال پيش اومد
    گفتين كه برنامه notepad پنجره اصلي اش run time ميباشد
    حالا سوال من اينه كدوم برنامه ها و فايلهاي ديگه ويندوز اين طوريند آيا همشون اين گونه طراحي شدند اگه ممكنه اون دست اي رو كه تعدادشون كمتره رو بهم بگوييد اگه هم از هر دونوع تعدادشون زياده چند تا از اون نمونه هايي رو كه پنجره اصلي run time نسيت برام مثال بزنيد
    راستي روم نميشه سوال دوم رو بپرسم ، ولي اميد دارم جوابم رو بدهيد . گفتين كه پنجره اصلي notepad به صورت كد ميباشد ميخواستم بدونم چطور ميشه محل شروع اين كدها رو پيدا كرد مثلاً تو كدوم آفست قرار دارند و اينكه چطور ميشه تغييرات لازم رو روي اونها انجا م داد
    باز هم منو ببخشيد
    واقعاً متشكرم

  10. #10
    حـــــرفـه ای
    تاريخ عضويت
    Aug 2006
    پست ها
    793

    پيش فرض

    دوباره سلام.
    برای اینکه بیشتر با چیزی که گفتم آشنا بشین کافیه یه پروژه ی Win32 ایجاد کنین.
    میبینین که struct ی وجود داره به نام WNDCLASS ویا WNDCLASSEX که توسط RegisterClass از کلاس
    های خود Windows استفاده میشه. برنامه رو اجرا کنین و کدش رو ببینین.
    هر برنامه ای میتونه از این کلاس ها استفاده کنه. اما بیشتر برنامه های Document Type مثل WordPad
    و خیلی های دیگه از این کلاس استفاده میکنن. (multiDoc)
    میتونم بدونم منظورتون از تغییر دادن چیه؟ بادستکاری در Offset یه فایل exe میخواین این کار رو انجام بدین؟

صفحه 1 از 2 12 آخرآخر

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •