Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [DnsQueryExW] входные параметры? 
:(
    Опции темы
dmmaximus
Дата 2.6.2015, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 15.4.2012

Репутация: нет
Всего: нет



Добрый день, очень нужна функция из dnsapi.dll DnsQueryExW. Это недокументировання функция, описания нигде нет!
В Windows 8 есть функция DnsQueryEx, но это совершенно другая функция, которая принимает совершенно другие параметры, и введена она Microsoft только в Windows 8.

В IDA загнал Dll получил 

Код

__int64 __fastcall DnsQueryExW(LPVOID lpThreadParameter)
{
  LPVOID v1; // rbx@1
  __int64 result; // rax@6
  __int64 v3; // ST30_8@8
  int v4; // ST28_4@8

  v1 = lpThreadParameter;
  if ( off_7FF7378B218 != &off_7FF7378B218 && _bittest((const signed __int32 *)off_7FF7378B218 + 7, 0xAu) )
  {
    v3 = *((_QWORD *)lpThreadParameter + 8);
    v4 = *((_DWORD *)lpThreadParameter + 5);
    sub_7FF7376C964(
      *((_QWORD *)off_7FF7378B218 + 2),
      92,
      (unsigned __int64)&unk_7FF73785338,
      *((_QWORD *)lpThreadParameter + 1),
      *((_WORD *)lpThreadParameter + 8));
  }
  if ( v1 && *((_DWORD *)v1 + 1) == 1 && *(_DWORD *)v1 >= 0x70u )
    result = sub_7FF737421E0(v1);
  else
    result = 87i64;
  return result;
}

Как не пытался, догадаться какой параметр она принимает не получилось, в дебри ушел...

Может кто-то знает, поделитесь, пожалуйста! Заранее спасибо!
PM MAIL   Вверх
xvr
Дата 3.6.2015, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(dmmaximus @  2.6.2015,  23:47 Найти цитируемый пост)
В Windows 8 есть функция DnsQueryEx

Не скажу точно (нет у меня SDK от Win8), но если там ничего не поменяли, то на самом деле функции DnsQueryEx нет, а есть функции DnsQueryExA и DnsQueryExW, которые через #define преобразуются в DnsQueryEx в зависимости от установок компиляции. Точнее от того, Unicode'овый проект собирается или нет.

Так что смотрите в MSDN на DnsQueryEx - это она и будет. А все типы данных, с которыми она работает, тоже могут быть модифицированны таким же образом - посмотрите внутрь файла WinDNS.h в Windows SDK

PM MAIL   Вверх
dmmaximus
Дата 3.6.2015, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 15.4.2012

Репутация: нет
Всего: нет



Цитата(xvr @  3.6.2015,  15:01 Найти цитируемый пост)
Так что смотрите в MSDN на DnsQueryEx - это она и будет. 

Вы сильно заблуждаетесь, это не так совсем, я исследовал, даже по дизассемблированию dnsapi.dll, вы сможете понять, что 
это разные функции совсем,а не разновидность анси и юникод функции DnsQueryEx, и принимают совершенно разное кол-во параметров!

PM MAIL   Вверх
xvr
Дата 4.6.2015, 02:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(dmmaximus @  3.6.2015,  20:17 Найти цитируемый пост)
Вы сильно заблуждаетесь, это не так совсем, я исследовал,

Хорошо, я тоже немного поисследовал  smile .
В Win7 в dnsapi.dll нет функции DnsQueryEx, зато есть DnsQueryExA, DnsQueryExW и DnsQueryExUTF8 - что полностью совпадает с тем, что я говорил.

Что бы этот вопрос полностью закрыть я скачаю Windows SDK для 8.1 и напишу сюда, что там есть по поводу DnsQueryEx

Цитата(dmmaximus @  3.6.2015,  20:17 Найти цитируемый пост)
даже по дизассемблированию dnsapi.dll, вы сможете понять,

Я например по дизассемблированию ничего понять не могу, и уж тем более определить количество параметров. IDA не панацея, он может и ошибаться по этому поводу.

PM MAIL   Вверх
xvr
Дата 4.6.2015, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Скачал и посмотрел SDK. Вы были правы - есть функция DnsQueryEx (без всяких дефайнов), и нет никаких следов DnsQueryExW, DnsQueryExA и DnsQueryExUTF8

Видимо MS решила придать статус документированности группе функций DnsQueryEx?, но сделала это в своем стиле - вместо того, что бы опубликовать интерфейс (обычным способом, через #define) она ввела новую функцию с другим интерфейсом (очень надеюсь, что с тем же функционалом, но поручится на могу  smile )

Если у вас есть dnsapi.dll от Win8 попробуйте через IDA посмотреть на код DnsQueryEx. Может быть, что она вызывает DnsQueryExW внутри (а если нет - то значит не повезло  smile )

PM MAIL   Вверх
dmmaximus
Дата 4.6.2015, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 15.4.2012

Репутация: нет
Всего: нет



Нет, я же прежде чем задать вопрос, все дизассемблировал и протестировал, вот пример Вам
Код

signed int __stdcall DnsQueryEx(int a1, int a2, int a3)
{
  unsigned int v3; // edi@2
  int v4; // eax@7
  int v5; // edx@9
  int v6; // edi@10
  int v7; // ecx@10
  int *v8; // eax@12
  int v9; // ST08_4@13
  __int16 v10; // dx@13
  int v11; // ST04_4@13
  int v12; // ecx@13
  signed int result; // eax@13
  signed int v14; // esi@13
  int v15; // eax@17
  int v16; // eax@19
  unsigned int v17; // edx@24
  int v18; // eax@25
  int v19; // edi@26
  int v20; // [sp+Ch] [bp-6Ch]@7
  int v21; // [sp+10h] [bp-68h]@7
  int v22; // [sp+18h] [bp-60h]@16
  int v23; // [sp+20h] [bp-58h]@16
  PVOID Address; // [sp+68h] [bp-10h]@1
  int v25; // [sp+6Ch] [bp-Ch]@1
  int v26; // [sp+70h] [bp-8h]@1
  int v27; // [sp+74h] [bp-4h]@1

  v26 = 0;
  Address = 0;
  v27 = 0;
  v25 = 0;
  if ( a1 && (v3 = *(_DWORD *)a1) != 0 && v3 <= 2 && *(_DWORD *)(a1 + 4) && a2 && *(_DWORD *)a2 == 1 )
  {
    memset(&v20, 0, 0x5Cu);
    v4 = *(_DWORD *)(a1 + 28);
    v20 = -2147483647;
    v21 = 92;
    if ( v4 )
    {
      v26 = 1;
      v22 = 12;
      v23 = v4;
    }
    if ( v3 == 2 )
    {
      v5 = *(_DWORD *)(a1 + 40);
      v15 = *(_DWORD *)(a1 + 44);
      v27 = *(_DWORD *)(a1 + 40);
      v25 = v15;
    }
    else
    {
      v5 = 0;
    }
    v6 = a2 + 8;
    *(_DWORD *)v6 = *(_DWORD *)(a1 + 16);
    *(_DWORD *)(v6 + 4) = *(_DWORD *)(a1 + 20);
    v7 = *(_DWORD *)(a1 + 24);
    if ( !v7 )
      goto LABEL_11;
    v16 = sub_5FD87942((PVOID)v7, 0);
    v7 = v16;
    Address = (PVOID)v16;
    if ( v16 )
    {
      v17 = 0;
      if ( *(_DWORD *)(v16 + 4) )
      {
        v18 = v16 + 64;
        do
        {
          v19 = *(_WORD *)(v18 - 32);
          if ( v19 == 2 )
          {
            *(_DWORD *)v18 = 16;
          }
          else if ( v19 == 23 )
          {
            *(_DWORD *)v18 = 28;
          }
          ++v17;
          v18 += 64;
        }
        while ( v17 < *(_DWORD *)(v7 + 4) );
        v6 = a2 + 8;
      }
      v5 = v27;
LABEL_11:
      if ( v26 )
        v8 = &v20;
      else
        v8 = 0;
      v9 = v5;
      v10 = *(_WORD *)(a1 + 8);
      v11 = v7;
      v12 = *(_DWORD *)(a1 + 4);
      result = sub_5FD85D82(v6, v11, v9, v25, *(_DWORD *)(a1 + 32), *(_DWORD *)(a1 + 36), v8, a2, a3);
      v14 = result;
      if ( Address )
      {
        sub_5FD83E2E(Address);
        result = v14;
      }
      return result;
    }
    if ( off_5FDE9010 != &off_5FDE9010 && *((_DWORD *)off_5FDE9010 + 7) & 0x400 )
      sub_5FDC44B5(*((_DWORD *)off_5FDE9010 + 4), *((_DWORD *)off_5FDE9010 + 5));
    result = 8;
  }
  else
  {
    if ( off_5FDE9010 != &off_5FDE9010 && *((_DWORD *)off_5FDE9010 + 7) & 0x400 )
      sub_5FDC7D09(*((_DWORD *)off_5FDE9010 + 4), *((_DWORD *)off_5FDE9010 + 5), 87);
    result = 87;
  }
  return result;
}

PM MAIL   Вверх
xvr
Дата 5.6.2015, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



А что во внутренних sub_* ? (sub_5FD87942 sub_5FD85D82 sub_5FD83E2E sub_5FDC44B5 sub_5FDC7D09)

PM MAIL   Вверх
dmmaximus
Дата 5.6.2015, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 15.4.2012

Репутация: нет
Всего: нет



Цитата(xvr @  5.6.2015,  11:57 Найти цитируемый пост)
А что во внутренних sub_* ? (sub_5FD87942 sub_5FD85D82 sub_5FD83E2E sub_5FDC44B5 sub_5FDC7D09)

Там в дебри полные уходит, не разобраться, как не пытался

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0486 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.