Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

[Dúvida] Ponteiro para função

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    C / C++ [Dúvida] Ponteiro para função

    Fala pessoal, blz?

    Eu estava dando uma olhada em um código aqui e não entendi muito bem uma parte. Segue uma parte do código abaixo:

    unsigned char code[]="String";
    int (*ret)() = (int(*)())code;
    ret();

    Mais especificamente a parte (int(*)())code , nesta parte creio eu que o que o programa faz um casting de uma array para um ponteiro de função, ou seja, pega o endereço de memoria da array code e diz para o programa que é um endereço de uma função. Em seguida atribui esse endereço pro ponteiro de função ret. Estou certo? Alguém pode me explicar como funciona?

    Grato desde já.

  • Font Size
    #2
    Isso tá meio confuso, tem como mandar o código completo? Porque "ret" tá declarada como uma função, e funções são declaradas fora da função main...

    Comment


    • Font Size
      #3
      Se nao me engano este codigo esta errado.

      int(*ret)() deveria apontar para uma funcao que retorna um valor do tipo inteiro e que nao receba nenhum argumento.
      E no caso, obviamente, code nao eh uma funcao, e nao sei se eh possivel fazer um cast de um array para um ponteiro de funcao.
      O cast (int(*)()) seria necessario se a funcao para qual ret aponta, fosse um tipo diferente de int

      Comment


      • Font Size
        #4
        Postado Originalmente por OC-P Ver Post
        Isso tá meio confuso, tem como mandar o código completo? Porque "ret" tá declarada como uma função, e funções são declaradas fora da função main...
        Este código eu vi em um exploit, depois de algumas informações e vossa ajuda, vi que ele cria um shellcode e armazena na array e depois ele pega o endereço de memória da array e "diz" pro compilador que é uma função, executando o código como se fosse uma função, já que endereço de memória é endereço de memória kkkkk

        Obrigado pela ajuda.

        Comment

        X
        Working...
        X