Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 4000908
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 20, 20262026-05-20T07:50:23+00:00 2026-05-20T07:50:23+00:00

Why are they used to call functions in DLLs? Why can’t I call them

  • 0

Why are they used to call functions in DLLs?

Why can’t I call them using their absolute address?

After all, aren’t they all loaded to my 4GB address space?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-20T07:50:24+00:00Added an answer on May 20, 2026 at 7:50 am

    Relative calling is used for intra-modular calls, calling direct memory addresses is certainly possible though (this is done with quite a bit with WinAPI functions):

    FF15 B8401301 CALL DWORD PTR DS:[<&MSVCR100.printf>] ; \printf - note this calling with a pointer to the abs address stored in the IAT
    

    This is mainly due to the fact that windows dlls can’t be reallocated (plus they sit in a special address space, as each app has its own ‘view’ of the system dll’s), but user dlls can easily reallocate (especially with ASLR). see wikipedia’s article on this as well.

    Also, don’t confuse indirect symbol table calls(aka inter-modular calls) with purely relative calls. if your calling functions outside of the current module, you’ll get a relative call to the absolute address stored in the symbol table:

    CALL MySymb
    
    MySymb: JMP &MySymbAbs 
    

    or a better, real-world version:

    6FC019E9 E8 300D0000  CALL <JMP.&Storm.#501> ; CALL 6FC0271E without name labeling
    6FC0271E - FF25 8071C06F  JMP DWORD PTR DS:[<&Storm.#501>] ; Storm.#501
    

    All of this pretty much depends on your compiler as well, some my do direct calls to symbols for everything, some will only do it for system dlls and/or COM interfaces.

    Just btw, on 32bit x86, you technically don’t have 4gb available in userland apps, its generally 3gb.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I found similar topics but they all used absolute positioning which placed the canvases
Possible Duplicate: Can I call functions that take an array/pointer argument using a std::vector
I've seen a few implementations of popen()/pclose(). They all used a static list of
What is the difference between Activator.CreateInstance and factory? Can they be used interchangeably? Or
I'm having some troubles using Session Variables as they are being used as Reference
I used to use gcc -fdump-rtl-expand and -finstrument-functions to do function call tracing, does
In the past I have used a DCOM connection to call R functions from
My apps are installed. They used to work. Now that I made some edits
i have an old codebase here, where they used protected member variables. Whether or
In an application, i saw that they used to display pictures of vehicles. But

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.