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
272 Views Asked by Arjun At
1
There are 1 best solutions below
Related Questions in DLL
- How to find a sequence of bytes on the target program from my injected dll?
- .lib not generated when building DLL project using template class
- The file "spng.dll" is not founded in my Visual Studio's project and i get an error
- Handling Memory Allocation and Pointers in Electron between Node.js and C++ DLL
- Multi level project reference using dll
- Wix MSI Project Harvesting Error Message 'dll is not running' on Build
- Windows Custom Credential Provider is not displaying tile on logon for all users in a pc
- How can I verbosely track the whole process of calling a function?
- Is dll static var shared between threads that load the same dll?
- JNR-FFI - Callback Pointer crash
- How can I patch a function call to a Windows DLL (e.g. kernel32 LoadLibrary)? Is this even possible?
- PyInstaller with PyQt5 Generates "DLL load failed" Error for QtPrintSupport
- What happens if I link two different libraries providing the same symbols in Visual Studio?
- how to test .dll on Linux
- PHP FFI - How to free memory created by FFI::new("void*[2]", false, true)
Related Questions in SHARED-LIBRARIES
- Keep multi-version of a static-lib like what we do for shared-libs
- Link shared library through makefile
- how to test .dll on Linux
- installing 'xiaomi notes.apk' through adb on chromebook getting error
- bazel 6.5.0 build: failing to link external non-bazel shared library
- can't reference netstandard2.0 library if a reference to CodeAnalysis.CSharp is present
- HDF5 Library: Works for Running Binary but Fails to Recompile — Why?
- How to resolve the shared library of a function in core file, using GDB - when no symbols are loaded?
- How to use "APP_INITIALIZER" into a library with standalone components
- Use Conan to manage runtime dependencies
- Defining a Global Variable from Library Object
- The problem with explicitly linking the library
- The problem with the explicit dynamic library
- Linux: how can I force my process to free unloaded libraries?
- LoadLibrary error while using libtorch with ROS2
Related Questions in DYNAMIC-LINKING
- Making binary depend on the correct `libpthread`
- Unable to load library from custom paths during compilation
- Segmentation fault while loading library with LD_LIBRARY_PATH
- Is mixing dynamic and shared libraries a good idea when creating an ODBC Driver?
- Executable searching for the linked library in different path than the one set using LD_LIBRARY_PATH
- Where is the order in which ELF relocations are applied specified?
- Cmake: Specify custom path to STL library (libstdc++)
- Visual Studio 2022 - how to link an .obj file residing somewhere else on the system?
- Unable to dynamically link on Alpine
- Statically include libc in c++ program with gcc without using -static option
- How to set BOOST_ALL_DYN_LINK for Cython build of my library interface on Windows 10
- What exactly is static variable behaviour in multiple linkeage of a library that contains it in C++?
- Using patchelf to change the SONAME of libGLdispatch.so breaks its functionality
- What is the linux command that gives the paths to libraries for linking during c++ compilation?
- build static curl executable from source
Related Questions in DYNAMIC-LIBRARY
- Link shared library through makefile
- how to test .dll on Linux
- Is mixing dynamic and shared libraries a good idea when creating an ODBC Driver?
- Link OpenCV library to a Scala project
- Is there a better way to define multiple function definitions when using a dynamic library?
- What does C++ standard say about dynamic libraries?
- Exposing common API from main program *to* dylib in Rust
- failed to find version script file when linking a dynamic library by using bazel cluster
- What is a real purpose of dynamic linking in c++?
- use shared library with eclipse on windows
- I want to release a C dynamic library for linux. At run time, will it be compatible with any linux version?
- How can I use a library without a header file path in cmake?
- My cygwin gcc report conflicting types error when building dynamic link library using JNI
- What happens when a shared object is loaded
- How to enter the source file of a dynamic lib (.so) when debugging
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 # Hahtags
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.