Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • D dynamorio
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 1,467
    • Issues 1,467
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 44
    • Merge requests 44
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • DynamoRIO
  • dynamorio
  • Issues
  • #4990
Closed
Open
Issue created Jul 01, 2021 by Nofix@N0fixContributor

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.

Assignee
Assign to
Time tracking