What is a functions list pointer at beginning of structure called c++





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







2















I'm reversing some assembly code and I'm consistently coming across certain structures that have an address at the very beginning of the structure.



This address seems to be a pointer to the beginning of an array of function addresses related to that specific structure.



I've also noticed that the first function in the array is usually related to deallocated/cleaning up of the structure.



Does anyone know what this type of structuring is called? I'd like to learn how this works










share|improve this question























  • You might be looking at a pointer to a vtable (virtual table).

    – NathanOliver
    Jan 3 at 14:18











  • Virtual table. For virtual functions. Such as a destructor or user-defined virtual function. As these are run-time dependent. Try reverse-engineering of a class/struct that has no virtual functions. See the difference. Or also interesting: inheritance with virtual tables.

    – Neijwiert
    Jan 3 at 14:18













  • How do objects work in x86 at the assembly level? shows how the vtable works, with x86 examples of compiler-generated code.

    – Peter Cordes
    Jan 3 at 14:22











  • Would the first function in the vtable be the destructor?

    – Joseph Jones
    Jan 3 at 14:27






  • 1





    It's implementation dependent. Linux and Windows implement their vtable in exactly the opposite order (it depends on the order of declaration IIRC).

    – Matthieu Brucher
    Jan 3 at 14:28




















2















I'm reversing some assembly code and I'm consistently coming across certain structures that have an address at the very beginning of the structure.



This address seems to be a pointer to the beginning of an array of function addresses related to that specific structure.



I've also noticed that the first function in the array is usually related to deallocated/cleaning up of the structure.



Does anyone know what this type of structuring is called? I'd like to learn how this works










share|improve this question























  • You might be looking at a pointer to a vtable (virtual table).

    – NathanOliver
    Jan 3 at 14:18











  • Virtual table. For virtual functions. Such as a destructor or user-defined virtual function. As these are run-time dependent. Try reverse-engineering of a class/struct that has no virtual functions. See the difference. Or also interesting: inheritance with virtual tables.

    – Neijwiert
    Jan 3 at 14:18













  • How do objects work in x86 at the assembly level? shows how the vtable works, with x86 examples of compiler-generated code.

    – Peter Cordes
    Jan 3 at 14:22











  • Would the first function in the vtable be the destructor?

    – Joseph Jones
    Jan 3 at 14:27






  • 1





    It's implementation dependent. Linux and Windows implement their vtable in exactly the opposite order (it depends on the order of declaration IIRC).

    – Matthieu Brucher
    Jan 3 at 14:28
















2












2








2








I'm reversing some assembly code and I'm consistently coming across certain structures that have an address at the very beginning of the structure.



This address seems to be a pointer to the beginning of an array of function addresses related to that specific structure.



I've also noticed that the first function in the array is usually related to deallocated/cleaning up of the structure.



Does anyone know what this type of structuring is called? I'd like to learn how this works










share|improve this question














I'm reversing some assembly code and I'm consistently coming across certain structures that have an address at the very beginning of the structure.



This address seems to be a pointer to the beginning of an array of function addresses related to that specific structure.



I've also noticed that the first function in the array is usually related to deallocated/cleaning up of the structure.



Does anyone know what this type of structuring is called? I'd like to learn how this works







c++ assembly reverse-engineering powerpc






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Jan 3 at 14:16









Joseph JonesJoseph Jones

377




377













  • You might be looking at a pointer to a vtable (virtual table).

    – NathanOliver
    Jan 3 at 14:18











  • Virtual table. For virtual functions. Such as a destructor or user-defined virtual function. As these are run-time dependent. Try reverse-engineering of a class/struct that has no virtual functions. See the difference. Or also interesting: inheritance with virtual tables.

    – Neijwiert
    Jan 3 at 14:18













  • How do objects work in x86 at the assembly level? shows how the vtable works, with x86 examples of compiler-generated code.

    – Peter Cordes
    Jan 3 at 14:22











  • Would the first function in the vtable be the destructor?

    – Joseph Jones
    Jan 3 at 14:27






  • 1





    It's implementation dependent. Linux and Windows implement their vtable in exactly the opposite order (it depends on the order of declaration IIRC).

    – Matthieu Brucher
    Jan 3 at 14:28





















  • You might be looking at a pointer to a vtable (virtual table).

    – NathanOliver
    Jan 3 at 14:18











  • Virtual table. For virtual functions. Such as a destructor or user-defined virtual function. As these are run-time dependent. Try reverse-engineering of a class/struct that has no virtual functions. See the difference. Or also interesting: inheritance with virtual tables.

    – Neijwiert
    Jan 3 at 14:18













  • How do objects work in x86 at the assembly level? shows how the vtable works, with x86 examples of compiler-generated code.

    – Peter Cordes
    Jan 3 at 14:22











  • Would the first function in the vtable be the destructor?

    – Joseph Jones
    Jan 3 at 14:27






  • 1





    It's implementation dependent. Linux and Windows implement their vtable in exactly the opposite order (it depends on the order of declaration IIRC).

    – Matthieu Brucher
    Jan 3 at 14:28



















You might be looking at a pointer to a vtable (virtual table).

– NathanOliver
Jan 3 at 14:18





You might be looking at a pointer to a vtable (virtual table).

– NathanOliver
Jan 3 at 14:18













Virtual table. For virtual functions. Such as a destructor or user-defined virtual function. As these are run-time dependent. Try reverse-engineering of a class/struct that has no virtual functions. See the difference. Or also interesting: inheritance with virtual tables.

– Neijwiert
Jan 3 at 14:18







Virtual table. For virtual functions. Such as a destructor or user-defined virtual function. As these are run-time dependent. Try reverse-engineering of a class/struct that has no virtual functions. See the difference. Or also interesting: inheritance with virtual tables.

– Neijwiert
Jan 3 at 14:18















How do objects work in x86 at the assembly level? shows how the vtable works, with x86 examples of compiler-generated code.

– Peter Cordes
Jan 3 at 14:22





How do objects work in x86 at the assembly level? shows how the vtable works, with x86 examples of compiler-generated code.

– Peter Cordes
Jan 3 at 14:22













Would the first function in the vtable be the destructor?

– Joseph Jones
Jan 3 at 14:27





Would the first function in the vtable be the destructor?

– Joseph Jones
Jan 3 at 14:27




1




1





It's implementation dependent. Linux and Windows implement their vtable in exactly the opposite order (it depends on the order of declaration IIRC).

– Matthieu Brucher
Jan 3 at 14:28







It's implementation dependent. Linux and Windows implement their vtable in exactly the opposite order (it depends on the order of declaration IIRC).

– Matthieu Brucher
Jan 3 at 14:28














1 Answer
1






active

oldest

votes


















3














That's the "vtable" a.k.a. "virtual method table".






share|improve this answer
























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54024082%2fwhat-is-a-functions-list-pointer-at-beginning-of-structure-called-c%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    3














    That's the "vtable" a.k.a. "virtual method table".






    share|improve this answer




























      3














      That's the "vtable" a.k.a. "virtual method table".






      share|improve this answer


























        3












        3








        3







        That's the "vtable" a.k.a. "virtual method table".






        share|improve this answer













        That's the "vtable" a.k.a. "virtual method table".







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Jan 3 at 14:18









        Ken ThomasesKen Thomases

        71.9k673110




        71.9k673110
































            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54024082%2fwhat-is-a-functions-list-pointer-at-beginning-of-structure-called-c%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            MongoDB - Not Authorized To Execute Command

            Npm cannot find a required file even through it is in the searched directory

            in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith