How to hack the virtual table?

前端 未结 9 872
谎友^
谎友^ 2021-01-31 21:41

I would like to know how to change the address of Test which is in the virtual table with that of HackedVTable.

void HackedVtable()
{
           


        
相关标签:
9条回答
  • 2021-01-31 22:16

    The V-Table is an implementation detail.

    The compiler is not required to use one (it just happens to be the easiest way to implement virtual functions). But saying that each compiler can (and does) implement it slightly differently as a result there is no answer to your question.

    If you ask how do I hack a vtable for a program built with:

    Compiler <X> Version <Y> Build <Z>

    Then somebody may know the answer.

    0 讨论(0)
  • 2021-01-31 22:16

    This is usually called "virtual table hooking" or something like that. If you are going to use it much, then I suggest the SourceHook library. It was developed for hacking closed source game engines in game mods. For instance, it was used in The Dark Mod before idTech4 became open source.

    0 讨论(0)
  • 2021-01-31 22:21

    Another way to achieve the same thing is by cheking similar code:

    GObject:

    http://en.wikipedia.org/wiki/Gobject

    GLib:

    http://en.wikipedia.org/wiki/GLib

    Vala:

    http://en.wikipedia.org/wiki/Vala_%28programming_language%29

    Those guys wanted to work with a object and class oriented programming language, but "C++", didn't fit their requisites. Then , they took "plain C", and simulate objects withn records & pointers, including Virtual Method Tables. Eventually got a similar language called "Vala", their own "C++" alike language (with their own V.M.T.).

    Another related links:

    http://en.wikipedia.org/wiki/Virtual_method_table

    http://www.artima.com/insidejvm/ed2/jvmP.html

    Cheers.

    0 讨论(0)
提交回复
热议问题