Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a VirtualFunctionTableHook class in Vezel.Ruptura.Memory #31

Open
alexrp opened this issue Jul 15, 2022 · 3 comments
Open

Add a VirtualFunctionTableHook class in Vezel.Ruptura.Memory #31

alexrp opened this issue Jul 15, 2022 · 3 comments
Assignees
Labels
area: hooking Issues related to the function hooking APIs. state: approved Enhancements and tasks that have been approved.
Milestone

Comments

@alexrp
Copy link
Member

alexrp commented Jul 15, 2022

This API should allow reading an existing virtual function table and replacing specific entries, as well as creating one from scratch. There should be support for replacing an existing table in an image, and for replacing the table pointer of a single object instance.

@alexrp alexrp added state: approved Enhancements and tasks that have been approved. type: feature area: hooking Issues related to the function hooking APIs. labels Jul 15, 2022
@alexrp alexrp added this to the v1.0 milestone Jul 15, 2022
@alexrp alexrp self-assigned this Jul 15, 2022
@alexrp
Copy link
Member Author

alexrp commented Jul 23, 2022

Need to think a bit more about how to design this. As with regular hooking, we'd want to go through the hook gate for safety reasons. But the hook gate is currently pretty closely coupled with FunctionHook, and a FunctionHook makes no sense when replacing a virtual table entry.

@alexrp alexrp modified the milestones: v1.0, v2.0 Jul 23, 2022
@alexrp
Copy link
Member Author

alexrp commented Jun 16, 2023

Another thing to consider: Should we have special support for multiple inheritance?

@alexrp alexrp changed the title Add a VirtualTableHook class in Vezel.Ruptura.Memory Add a VirtualFunctionTableHook class in Vezel.Ruptura.Memory Aug 3, 2023
@alexrp
Copy link
Member Author

alexrp commented Aug 3, 2023

Another thing to consider: Should we have special support for multiple inheritance?

No. Having done some RE on a binary using multiple inheritance lately, I can safely say it's too complex and compiler-specific to be worth specially supporting. As long as the VirtualFunctionTableHook API is designed sensibly, it will work for MI with a few extra steps anyway.

@alexrp alexrp removed their assignment Jan 27, 2024
@alexrp alexrp modified the milestones: v3.0, Future, v4.0 Apr 30, 2024
@alexrp alexrp self-assigned this Apr 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area: hooking Issues related to the function hooking APIs. state: approved Enhancements and tasks that have been approved.
Development

No branches or pull requests

1 participant