Недокументированная функция

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by haldey, 16 Feb 2011.

  1. haldey

    haldey New Member

    Joined:
    14 Nov 2010
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Привет всем!
    Где можно найти описания параметров функции DnsAddRecordSet_A из dnsapi.dll ?
     
  2. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Ну собственно говоря врядли где.
    А тебе зачем она вообще нужна?

    Если дизасемблить либу, то можно кое что нарыть
    Code:
    int __stdcall DnsAddRecordSet_A(int a1, int a2, int a3, int a4)
    {
      int v5; // eax@1
      int v6; // esi@1
      int v7; // edi@1
    
      v5 = sub_76F19B8A(a2, 3, 2);
      v6 = v5;
      v7 = DnsAddRecordSet_UTF8(a1, v5, a3, a4);
      sub_76F158BC(v6);
      return v7;
    }
    
    Code:
    signed int __stdcall DnsAddRecordSet_UTF8(int a1, int a2, int a3, int a4)
    {
      int v4; // esi@1
      signed int result; // eax@2
      int v6; // eax@7
      int v7; // edi@7
      signed int v8; // esi@9
      signed int v9; // eax@9
    
      v4 = a3;
      if ( a2 )
      {
        if ( !(a3 & 0x1FF) )
          v4 = a3 | dword_76F31218;
        if ( a1 )
          v4 |= 0x200u;
        v6 = sub_76F19B8A(a2, 2, 2);
        v7 = v6;
        if ( v6 )
        {
          v9 = sub_76F2911E(v6, v4, a4, a1);
          v8 = v9;
          if ( !v9 )
            DnsFlushResolverCacheEntry_UTF8(*(wchar_t **)(v7 + 4));
          sub_76F158BC(v7);
          result = v8;
        }
        else
        {
          result = 14;
        }
      }
      else
      {
        result = 87;
      }
      return result;
    }
    
    
    Далее вызов DnsFlushResolverCacheEntry уводит в дебри RPC
     
  3. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    я тоже интересовался одной функцией оттуда.надо было сделать лупбэк 127.0.0.1 при вызове DnsQuery например для avp.ru
     
  4. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Собственно говоря вообще странная функция. Она вообще нигде не юзается в системе.
    Максимум - DnsAddRecordSet_UTF8, которая юзается в DnsModifyRecordSet_UTF8
    В своё очередь DnsModifyRecordSet_UTF8 нигде не юзается кроме DnsModifyRecordSet_A/W
    Но опятьже функции DnsModifyRecordSet_* вообще нигде в винде не юзаются
    т.е. функции DnsModifyRecordSet_* и DnsAddRecordSet_* вообще в винде неюзаются ниодной либой и не одним файлом. Так что странно както зачем она тебе нужна