CRASH injecting x64 in WOW64
Opening this issue to keep track of the bug associated with the PR. Describe the bug
No support is made currently for x64 DLL injection in WOW64 processes. More information here
Example There is no support for mixed code x86/x64 except using inject_x64 which isn't supported yet.
0x100000 mov eax, 0 // 32bits WoW64 application's code
0x100005 call 0x33:0x1000a0
0x10000a ret
...
0x1000a0 sub rsp, 0x60 // x64 code
DynamoRIO core have mixed x86/x64 support in x64 builds, thus we need to inject x64 client DLL to handle this kind of situation, using inject_x64
.
DynamoRIO crashes upon trying to inject x64 client dll inside WoW64 with the following command line :
bin64\drrun.exe -reachable_heap -inject_x64 -c .\clientdll.dll -- bin64\create_process.exe .\helloworld32.exe
Tweaking -early_inject
parameters does not help to resolve this issue.
Versions DynamoRIO version cronbuild-8.0.18803. (latest version at the time I am writing this issue)
Additional context
Made a PR#4989 to add some support.
All information are in the PR.
Note that this type of injection still isn't fully supported yet, and that some dynamoRIO exports might crash when used in 64client DLL injected in WoW64 processes. This is the case with dr_insert_mbr_instrumentation and dr_insert_call_instrumentation functions which inserts a x64 wrapper that cannot be decoded by a x86 running process.