نمایش نتایج: از شماره 1 تا 5 , از مجموع 5
  1. #1
    تاریخ عضویت
    Dec 2005
    محل سکونت
    اصفهان
    نوشته ها
    4,931
    تشکر از ارسال
    1,770
    Thanked 1,401 Times in 345 Posts

    دسترسي به متغييرهاي عمومي در dll

    در زبان دلفي ، فرض كنيد در كنار فايل اجرائي اصليمون دوتا فايل dll هم داريم
    توي اولي يك متغيير عمومي در حافظه داريم ، چطوري در dll دوم به اين متغيير دسترسي داشته باشيم؟ ( استفاده از فايل به علت افت سرعت خواندن ديتا نميتونم داشته باشم ) ولي هر روشي كه از حافظه استفاده كنه برام بلامانع هست

  2. 05-20-2012, 11:31 AM
    دلیل
    finglish

  3. #2
    تاریخ عضویت
    Nov 2011
    نوشته ها
    329
    تشکر از ارسال
    18
    Thanked 46 Times in 31 Posts
    جوکر بیشتر توضیح بدی شاید بتونم جواب دقیق بهت بدم. این چیزی که میگم یه دیدگاه کلی هست ولی احتمالا بدرد شما هم میخوره. شما وقتی میگی کنار فایل اصلیت 2 تا Module داری من فرض رو بر این میگیرم که این دو تا dll تو همون Address Space مربوط به Process فایل اصلیت لود میشن. خب هر dll توی Adress Space به یه Base Address لود میشه. شما میتونی با GetModuleHandle آدرسی که هر dll لود شده رو پیدا کنی. متغیر عمومی شما تو یه Section هست که فاصله مشخصی از Image Base اون dll داره(فرضا RVA 2000h)، هر متغیر و ساختار و ... از نوع عمومی یه آفست مشخصی از ابتدای اون Section داره. فرضا متغیر شما تو آفست 20h قرار داره. Virtual Address اون متغیر میشه:

    Dll Base Address + RVA of that Section + Relative Offset

    این اعداد رو فقط بعنوان مثال آوردم:

    20 + 2000 + 10000000

    نتیجه نهایی میشه 10002020h که با اشاره گر میشه به این آدرس دسترسی پیدا کرد(فقط داخل همون Process میشه از اشاره گر استفاده کرد).

  4. #3
    تاریخ عضویت
    Dec 2005
    محل سکونت
    اصفهان
    نوشته ها
    4,931
    تشکر از ارسال
    1,770
    Thanked 1,401 Times in 345 Posts
    يه نرم افزاره كه انجينش را قراره من بنويسيم gui را يه نفر ديگه
    ميخوام اطلاعاتي كه لازم داره را بهش پاس بدم يا بگيرم ازش
    حالا چي پيشنهاد ميكنيد؟

  5. #4
    تاریخ عضویت
    Aug 2005
    محل سکونت
    Karaj
    نوشته ها
    906
    تشکر از ارسال
    369
    Thanked 655 Times in 314 Posts
    تو DLL اول یه IPC تعریف کن تو DLL دوم یه مسیج بفرست به DLL اول و از DLL اول مقدار متغیرت رو بخون تو همون IPC Message به DLL دوم ارسال کن.
    واسه این کار هم میتونی از یونیت MadCodeHook استفاده کنی.

    انجام پروژه های نرم افزاری در کمترین زمان و نازلترین قیمت
    برای تماس به آیدی Arashjeyjey در یاهو مسنجر پیام بدید.

    http://www.jeyjey.blogfa.com

  6. #5
    تاریخ عضویت
    Dec 2005
    محل سکونت
    اصفهان
    نوشته ها
    4,931
    تشکر از ارسال
    1,770
    Thanked 1,401 Times in 345 Posts
    ممنون
    با دو روش متفاوت مشكل حل شد
    اوليش MapFile بود كه از حافظه شير شده استفاده ميكرد
    دوميش هم استفاده از ارتباط socket بود

 

 

موضوعات مشابه

  1. برنامه تغيير اندازه كاراكتر در اسمبلي
    توسط loader در انجمن برنامه نویسی
    پاسخ ها: 2
    آخرين نوشته: 06-16-2010, 03:56 PM
  2. تغيير ايميل ثبت شده براي دومين دات كام
    توسط y_nima2000 در انجمن بخش هک و سکیوریتی
    پاسخ ها: 1
    آخرين نوشته: 01-15-2010, 08:46 PM
  3. هك و تغيير پهناي باند
    توسط M.shabgard.M در انجمن بخش کاربران / سوالات مبتدی
    پاسخ ها: 8
    آخرين نوشته: 12-11-2009, 10:06 PM
  4. غير قابل تغيير كردن فرم about
    توسط Payman در انجمن بخش هک و سکیوریتی
    پاسخ ها: 10
    آخرين نوشته: 02-06-2006, 06:52 PM

مجوز های ارسال و ویرایش

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