Формирование ресурсов в PE.

Тема в разделе "WASM.BEGINNERS", создана пользователем mz80, 16 фев 2011.

  1. mz80

    mz80 New Member

    Публикаций:
    0
    Регистрация:
    21 июл 2010
    Сообщения:
    10
    Доброе время суток,

    Не подскажите как правильно побайтово формировать руками такие ресурсы как STRINGS, DIALOG, MENU для PE. В Идеале было бы получить ссылочку на спецификацию, а то что то весь вечер в поисках и результата пока ноль.

    Попробывал на скорую руку RT_STRINGS забивать юникодными строками и между ними нули ставить, что то явно не то ...

    Заранее спасибо.
     
  2. dyn

    dyn New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2009
    Сообщения:
    566
    К сожалению спецификации как таковой нет.
    Лучшее что можно сделать на данный момент - открыть исходник фасма. Там кажется есть генератор для ресурсов.

    PS: вам не для криптора случайно?
     
  3. Flint_ta

    Flint_ta New Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    312
  4. dermatolog

    dermatolog Member

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    406
    Адрес:
    Екатеринбург
    mz80
    Конечно не то - между строками должны быть не нули, а длина самой строки (при этом сама строка не завершается нулем).
    Курите исходники вайна (в частности LoadStringA и LoadStringW), хотя там полно багов, но для общего представления вполне хватит.
     
  5. Sunzer

    Sunzer Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    256
    StingTable:

    Код (Text):
    1. int RESOURCE_WORKER::GetStringTable(unsigned int iName, char *cName, unsigned int Lang)
    2. {
    3.  unsigned int i, Size, Rand;
    4.  struct ResourceToolResult Result;
    5.  
    6.  if(VirtualFile == NULL) return -1;
    7.  
    8.  Result.Offset = (unsigned char*) calloc(0x1000, 1);
    9.  Size = 0;
    10.  
    11.  for(i=0;i<16;i++)
    12.  {
    13.   Rand = Random(3);
    14.   if(Rand == 0)
    15.   {
    16.    Rand = 5 + Random(20);
    17.    *(PWORD) &Result.Offset[Size] = Rand;
    18.    GenerateString(&Result.Offset[Size+2], Rand, STR_UNICODE);
    19.    Size += (Rand+1)*2;
    20.   }
    21.  }
    22.  Result.Size = Size;
    23.  
    24.  NoAddToInternalMemory();
    25.  AddResource(RT_STRING, NULL, iName, cName, Lang, Result.Offset, Result.Size);
    26. }
    DialogBox много кода, я Menu реализовывал с рекурсией, с регулируемым уровнем вложенности меню, а так генерировать их не сложно.