Is there anyway I can load a shared library into shared memory in a process so that some other process can simply map that shared memory (to the same address) and simply invoke functions? I understand that the external in the shared library need to have an additional jump into process-specific memory locations to call into appropriate functions (like elf plt). But, is such a thing viable with today's tools.
loading shared library into shared memory
266 Views Asked by Arjun At
1
There are 1 best solutions below
Related Questions in DLL
- C++ using std::vector across boundaries
- Linking to a static lib compiled with MSVC
- What are MATLAB DLLS?
- VC++ .net: Functionality from managed DLL is not exported
- DLL being marked as DELETEPENDING
- ASP.NET Web Forms give error while connecting to Oracle 11g
- Air Native Extensions: Released Air App w/Windows Native Extension works fine on develpment PC but not on other computers
- WiX and custom extensions for primary output?
- Using different versions of the same DLL in a project
- visual c++ - missing unrelated DLLs
- Error executing SSIS Package
- C++ Access violation write to 0x00000000 in dll in mql4
- How can I read embedded .resx in different assembly
- Running two versions of same Dll parallel in Asp.Net
- Call class member of c++ DLL from c#
Related Questions in SHARED-LIBRARIES
- Global variable in shared library
- How to load all symbols from shared library on start up?
- What happens when ld link different versions of the same library
- MapReduce job fails with ExitCodeException exitCode=255
- Android NDK - Including prebuilt static libraries gives undefined reference errors
- Detecting unresolved symbols in an ELF executable
- How to structure Xamarin library containing iOS & Android bindings?
- How do I share headers and libraries in subdirectory by cmake?
- Using 32-bit library from 64-bit application with perl or neko
- about Multiple dex files define Lcom/google/gson/JsonSerializer
- How do I install the Matlab MCR in Ubuntu 14.04 without "killing" Unity?
- How do Linux programs know where the library files are and how to call them?
- Linux ELF - Why does normal linking run faster than 'ldd -r'?
- How to include a "custom" library in Code::Blocks? (Windows 7)
- Error Linking OpenCV Libraries
Related Questions in DYNAMIC-LINKING
- CMake `link_directories` for libstdc++.so
- Contiki - Run-time linking of a loadable module containing reference to another loadable module is possible?
- Turning a statically linked library into a dynamic one
- Boost unit test dynamic linking on Ubuntu
- arm-linux libstdc++ difference in debug and release
- loading shared library into shared memory
- Can a UWP program load plugin?
- library not found although I use ldconfig and /etc/ld.so.conf.d/lib.conf
- How do I implement Android Firebase dynamic links without a website?
- g++ -fPIC not producing position independent code
- Finding virtual memory address of variable on osx
- How can I "register" my library libfoo.so to link it with `-lfoo`?
- Resolving symbols differently in different dynamically loaded objects
- g++ linking a static library into a dynamic library (without -fPIC)
- cmake linking shared libraries on ubuntu
Related Questions in DYNAMIC-LIBRARY
- Name of Python dynamic library module different than file name
- xCode produces "Undefined symbols for architecture x86_64" error while gcc compiles without errors
- Ada Encapsulated Library Project GNAT
- dll that needs other dll and it's called from a third party
- loading shared library into shared memory
- Why do we use use_frameworks! in CocoaPods?
- Link Binary with libraries VS Embed Frameworks
- How to create a Dynamic Library in D?
- When we define functions in a program, do they get stored in the standard library?
- Android intent activity in external lib
- VS2017 doesn't copy Additional Include Directories to remote env (linux) causing compilation error
- C++: What to recompile when an inline function in a dynamic library changes?
- Creating a generic binary in linux for all x86 machines
- Destroying threads in Openmp (C++)
- how to send js library to client dynamically?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Not with today's tools, nor ever.
Sure, if your shared library has completely self-contained functions, then it will work. But the moment your library references external data or functions, you will crash and burn.
I don't think you understand. Let's consider an example:
When this is built into a shared library on Linux, the result is:
and
So the question is: where will
jmpq *0x200a5a(%rip)go in the second process. Answer: one of two places.If the first process has already called
malloc(very likely), then thejmpqwill go to address ofmallocin the first process, which is exceedingly unlikely to be the address ofmallocin the second process, and more likely to be unmapped, or be in the middle of some data. Either way, you crash.If the first process has not yet called
malloc, then thejmpqin the second process will jump to address of the runtime loader (ld-linux.so.2or similar on Linux,ld.soon Solaris) resolver function. Again, that address is very unlikely to also be the address of the resolver in the second process, and if it's not, you crash.But it gets worse from here. If by some improbable magic you ended up actually calling
mallocin the second process, thatmallocis itself very likely to crash, because it will try to use data structures it has set up previously, using memory obtained fromsbrkormmap. These data structures are present in the first process, but not in the second, and so you crash again.