html

суббота, 25 февраля 2012 г.

Программа для анализа PE файлов PEBrowse Professional

0. Скачать PEBrowse Professional  v10.1.4.4   PEBrowse.zip

Главное окно программы PEBrowse Professional

1.Общее описание программы.  

PEBrowse Professional  (v10.1.4.4 ) является инструментом статического анализа и дизассемлером для Win32/Win64 выполняемых файлов и Microsoft.NET сборок, произведенных согласно техническим требованиям к PE файлам, изданным Microsoft. Используется для  Microsoft Windows 7, Windows Vista, Windows XP, Windows 2000  и других.

С PEBrowse дизассемблером можно открыть и исследовать любой исполняемый файл без необходимости иметь его загруженным как часть активного процесса в отладчик. Приложения, системные DLL, драйверы устройств  и   Microsoft.NET сборки являются  кандидатами на  анализ, используя  PEBrowse Professional программу.

Информация в PEBrowse Professional организована в удобном  древовидном  индексе с главными частями PE файла, показанных как узлы этого дерева.

В большинстве случаев выбранные узлы будут позволять контекстно – зависимые  опции меню различных видов узла, включая двоичный дамп, детали секций, дизассемлер и  подпункты показа, такие как дополнительные входы  заголовка каталогов или экспортируемые функции, которые могут быть найдены как часть  PE файла.

Несколько таблиц  - таблица ASCII кодов, коды ошибок и список оконных сообщения, вместе с калькулятором и блокнотом вызываются из главного меню  PEBrowse  Professional

среда, 15 февраля 2012 г.

Ошибка Outlook. Ошибка сокета: 10060, Код ошибки: 0x800CCC0E

1. Ошибка при попытке забрать почту с почтового ящика.

Описание ошибки сокета 10060, Код   ошибки: 0x800CCC0E
Ошибка сокета: 10060, Код 
ошибки: 0x800CCC0E
Ошибка при соединении с сервером. Учетная запись: 'Yandex -почта', Сервер: 'pop.yandex.ru', Протокол: POP3, Порт: 110, Защита (SSL): Нет, Ошибка сокета: 10060, Код ошибки: 0x800CCC0E

2.   Ошибка сокета: 10060
2.1 Вот что говорит Help  Windows SDK  для Delphi  7:

WSAETIMEDOUT   (10060)  Connection timed out.

A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.

2.2   Список  кодов всех ошибок WinSock  можно найти из файлов WinSock.pas и winsock.h , однако без описаний :)

2.3   Список кодов ошибок и краткое описание ошибок от Microsoft MSDN  Windows Sockets Error Codes и  от Microsoft Support   Windows sockets error codes, values, and meanings

2.4   На русском языке   Коды ошибок TCP/IP    описывают ошибку 10060 следующим образом :

10060    WSAETIMEDOUT Connection timed out (Истекло время ожидания соединенеия).


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

2.5   По описанию ошибки 10060   можно сделать предварительным вывод, что скорее всего ситуация связана с проблемами сети - потери пакетов,задержки  или что-то случилось с почтовым сервером 'pop.yandex.ru' (в данном конкретном случае) .  Надо проверить интернет подключение на других программах , ping к серверу 'pop.yandex.ru' : ping pop.yandex.ru -t


3. Код ошибки: 0x800CCC0E

3.1. Поддержка Microsoft  в описании  Коды ошибок Windows Mail и Windows Live Mail  говорит следующее :

0x800CCC0E     IXP_E_FAILED_TO_CONNECT       Не удается подключиться к серверу

3.2. В интернет документе   Коды ошибок электронной почты  приведены некоторые методы устранения  этой и некоторых других ошибок:

0x800CCC0E     FAILED_TO_CONNECT. Не удается подключиться к серверу

--Если Нортон Антивирус установлен, то возможно проблема в нем .

--Можете ли вы открыть веб-страницы? Если это так, то вы может просто неправильно ввели адрес почтового сервера  на учетной записи или сервер именно сейчас может быть недоступен.

--Если вы не можете открыть веб-страницы, то разорвите интернет соединение и попробуйте подключиться снова

--Перезагрузите компьютер и повторите попытку.

--Если он по-прежнему не работает, и вы не получаете любые веб-страницы, то данные могут передаваться через сеть надлежащим образом. Проверить настройки DNS, удалить и переустановить TCP / IP в Панель управления> Сеть (Control Panel > Network).

--Можно попробовать удалить кэш DNS командой ipconfig /flushdns (Пуск -> Все программы -> Стандартные -> Командная строка. Вести в командную строку ipconfig /flushdns)

--Эта ошибка может появиться, если у вас есть опция ‘уведомьте меня, если есть какие-нибудь новые группы новостей’ выбран, но не имеете созданной учетной записи новостей. Зайдите в меню Сервис> Свойства обозревателя> Общие TAB (TOOLS > OPTIONS > GENERAL TAB) и отключите эту опцию.

3.3 В описаниях ошибки сказано , что возможно сервер в данный момент не работает . Так что в совокупности ошибок сокета и Outlook –а , вероятнее всего какая то ошибка на сервере 'pop.yandex.ru'.

4. Причина ошибки.
--Оказалась в сервере 'pop.yandex.ru'. Через некоторое время почта заработала снова.

5. Собрал файлы, описывающие приведенные и другие ошибки Winsock. Также собрал файлы описывающие коды ошибок почтовой программы Outlook. Все в одном файле - Outlook-Socket-01.rar.

6. Дополнительно можно ознакомиться с книгой:
Обложка книги Outlook Express 5.0
Outlook Express 5.0

Outlook Express 5.0. Краткие инструкции для новичков

Эта книга предназначена для тех пользователей, у которых не хватает времени или терпения для систематического изучения возможностей Outlook Express 5.0, но которые хотят научиться пользоваться услугами электронной почты и принять участие в телеконференциях. Приведенные инструкции помогут решить проблемы, возникающие у людей, впервые севших за компьютер. А в свете не очень больших отличий более поздних версий Outlock Express круг читателей  книги Outlook Express 5.0. Краткие инструкции для новичков  несомненно расширится.

 Данная книга взята из открытых источников . Все права на нее принадлежат ее владельцам. Запрещено использование данного материала в коммерческих целях без письменного разрешения автора материала. После ознакомления удалите его со своего компьютера и купите у автора данного материала.

7. Файлы и книгу , повторюсь, скачать можно здесь:  Outlook-Socket-01.rar

воскресенье, 12 февраля 2012 г.

Таблица секций в PE файле

0. Таблица секций - это база данных из заголовков секций, для всех секций , используемых в PE файле. После окончания опционального заголовка сразу следует таблица секций. Таблица секций представляет собой  массив элементов типа TImageSectionHeader. Количество элементов  этого типа определяется полем NumberOfSections заголовка FileHeader.    Входы в таблице секций  нумеруются,  начиная  с  1.


1. Элемент типа  TImageSectionHeader  подробно расписан в файле Windows.pas комплекта Delphi 7.0:
-----------------------------
  PImageSectionHeader = ^TImageSectionHeader;
  _IMAGE_SECTION_HEADER = packed record
    Name: packed array[0..IMAGE_SIZEOF_SHORT_NAME-1] of Byte;
    Misc: TISHMisc;
    VirtualAddress: DWORD;
    SizeOfRawData: DWORD;
    PointerToRawData: DWORD;
    PointerToRelocations: DWORD;
    PointerToLinenumbers: DWORD;
    NumberOfRelocations: Word;
    NumberOfLinenumbers: Word;
    Characteristics: DWORD;
  end;
  {$EXTERNALSYM _IMAGE_SECTION_HEADER}
  TImageSectionHeader = _IMAGE_SECTION_HEADER;
  IMAGE_SECTION_HEADER = _IMAGE_SECTION_HEADER;
  {$EXTERNALSYM IMAGE_SECTION_HEADER}
------------------------------


2. Описание полей структуры из статьи ФОРМАТ ИСПОЛНЯЕМЫХ ФАЙЛОВ PortableExecutables (PE) написанной Hard Wisdom

Немного исправил названия, согласно файлу Windows.pas

-=====T=======T=======================T=================================¬
¦     ¦ Size  ¦                       ¦                                 ¦
¦Base ¦  or   ¦     Name Of field     ¦       Brief description         ¦
¦     ¦ Type  ¦                       ¦                                 ¦
¦=====+=======+=======================+=================================¦
¦ 00h ¦  08h  ¦ Name                  ¦ Имя объекта, остаток заполнен   ¦
¦     ¦       ¦                       ¦ нулями, если имя объекта имеет  ¦
¦     ¦       ¦                       ¦ длину 8 символов, то заключи-   ¦
¦     ¦       ¦                       ¦ тельного 0 нет. Некоторые PE    ¦
¦     ¦       ¦                       ¦ дамперы падают на этом факте.   ¦
¦     ¦       ¦                       ¦ Имя - штука отфонарная и никого ¦
¦     ¦       ¦                       ¦ ни к чему не обязывает.         ¦
+-----+-------+-----------------------+---------------------------------+
¦ 08h ¦ DWord ¦                       ¦ Виртуальный размер секции,      ¦
¦     ¦       ¦ Misc.VirtualSize      ¦ именно столько памяти будет от- ¦
¦     ¦       ¦                       ¦ ведено под секцию. Если Virtual ¦
¦     ¦       ¦                       ¦ Size превышает SizeOfRawData,   ¦
¦     ¦       ¦                       ¦ то разница заполняется нулями,  ¦
¦     ¦       ¦                       ¦ так определяются секции неини-  ¦
¦     ¦       ¦                       ¦ циализированных данных (        ¦
¦     ¦       ¦                       ¦ SizeOfRawData = 0)              ¦
+-----+-------+-----------------------+ - - - - - - - - - - - - - - - - +
¦ 0Ch ¦ DWord ¦ VirtualAddress        ¦ Размещение секции в памяти,     ¦
¦     ¦       ¦                       ¦ виртуальный ее адрес относитель-¦
¦     ¦       ¦                       ¦ но Image Base. Позиция каждой   ¦
¦     ¦       ¦                       ¦ секции выравнена на границу     ¦
¦     ¦       ¦                       ¦ SectionAlignment(степень2 от 512¦
¦     ¦       ¦                       ¦ до 256М включительно, по умол-  ¦
¦     ¦       ¦                       ¦ чанию 64К) и секции упакованы   ¦
¦     ¦       ¦                       ¦ впритык друг к другу, впрочем,  ¦
¦     ¦       ¦                       ¦ можно это не соблюдать.         ¦
+-----+-------+-----------------------+---------------------------------+
¦ 10h ¦ DWord ¦ SizeOfRawData         ¦ Размер секции (ее инициализиро- ¦
¦     ¦       ¦                       ¦ ванной части) в файле, кратно   ¦
¦     ¦       ¦                       ¦ полю FileAlignment в заголовкеPE¦
¦     ¦       ¦                       ¦ Header, обычно он меньше или    ¦
¦     ¦       ¦                       ¦ равен VirtualSize.  Играя с     ¦
¦     ¦       ¦                       ¦ этим полем можно добиться неко- ¦
¦     ¦       ¦                       ¦ торых результатов ;-) загрузчик ¦
¦     ¦       ¦                       ¦ по идее хлопает всю секцию в    ¦
¦     ¦       ¦                       ¦ отведенное ОЗУ! SizeOfRawData   ¦
¦     ¦       ¦                       ¦ может быть больше, чем Virtual  ¦
¦     ¦       ¦                       ¦ Size. Это происходит, когда     ¦
¦     ¦       ¦                       ¦ "умный" линкер заявляет строгий ¦
¦     ¦       ¦                       ¦ размер секции (не кратный       ¦
¦     ¦       ¦                       ¦ SectionAlignment).В таком случае¦
¦     ¦       ¦                       ¦ хвост секции теоретически не    ¦
¦     ¦       ¦                       ¦ используется.                   ¦
+-----+-------+-----------------------+ - - - - - - - - - - - - - - - - +
¦ 14h ¦ DWord ¦ PointerToRawData      ¦ Физическое смещение относитель- ¦
¦     ¦       ¦                       ¦ но начала EXE файла, выровнено  ¦
¦     ¦       ¦                       ¦ на границу FileAlignment поля за¦
¦     ¦       ¦                       ¦ головка PE Header. Смещение     ¦
¦     ¦       ¦                       ¦ используется загрузчиком как    ¦
¦     ¦       ¦                       ¦ seek значение.                  ¦
+-----+-------+-----------------------+---------------------------------+
¦ 18h ¦  0Ch  ¦ PointerToRelocations  ¦ зарезервировано для OBJ файла,  ¦
¦     ¦       ¦ PointerToLinenumbers  ¦ в экзешниках смысла не имеет    ¦
¦     ¦       ¦ NumberOfRelocations   ¦                                 ¦
¦     ¦       ¦ NumberOfLinenumbers   ¦                                 ¦
¦     ¦       ¦                       ¦                                 ¦
+-----+-------+-----------------------+---------------------------------+
¦ 24h ¦ DWord ¦ Characteristics       ¦ битовые флаги секции, см.ниже   ¦
¦=====¦=======¦=======================+=================================¦
¦ Total Structure size      28h       ¦ Общий размер описателя секции   ¦
L=====================================¦=================================-


3. Хорошо расписана таблица заголовков секций в книге Bill PrisonerОт зеленого к красному”. (http://vxheavens.com/lib/vbp01.html#c29)  Кроме того, надо обязательно читать спецификации Microsoft.


Окно программы
4. Написал на Delphi программу, которая выводит всю таблицу заголовков секций. Попробую в дальнейшем довести эту программу до упаковщика или криптора PE-файла.


5. Программу с исходниками, а также с дополнительными файлами - спецификациями Microsoft для PE-файлов версий 8.0,8.1 и 8.2 (094_pecoff_v8.pdf, pecoff_v8.doc , pecoff_v8.pdf ) , статьей ФОРМАТ ИСПОЛНЯЕМЫХ ФАЙЛОВ PortableExecutables (PE) написанной Hard Wisdom  и  файлом Windows.pas , скачать можно здесь : SectionHeaders.rar

среда, 8 февраля 2012 г.

Заголовок NTHeader в PE файле

0. Заголовок файла PE  состоит из заголовка  MS -DOS  в самом начале файла  и из NT заголовка (NTHeader). NT заголовок (NTHeader), в свою очередь состоит из сигнатуры PE файла (Signature), заголовка файла (FileHeader) и опционального заголовка (OptionalHeader).

1. Заголовок файла NT   подробно расписан в файле Windows.pas комплекта Delphi 7.0:

-----------------------
type
  PImageNtHeaders = ^TImageNtHeaders;
  _IMAGE_NT_HEADERS = packed record
    Signature: DWORD;
    FileHeader: TImageFileHeader;
    OptionalHeader: TImageOptionalHeader;
  end;
  {$EXTERNALSYM _IMAGE_NT_HEADERS}
  TImageNtHeaders = _IMAGE_NT_HEADERS;
  IMAGE_NT_HEADERS = _IMAGE_NT_HEADERS;
  {$EXTERNALSYM IMAGE_NT_HEADERS}
-----------------------

2. Заголовок файла (FileHeader)  также расписан в файле Windows.pas комплекта Delphi 7.0:
-----------------------
  PImageFileHeader = ^TImageFileHeader;
  _IMAGE_FILE_HEADER = packed record
    Machine: Word;
    NumberOfSections: Word;
    TimeDateStamp: DWORD;
    PointerToSymbolTable: DWORD;
    NumberOfSymbols: DWORD;
    SizeOfOptionalHeader: Word;
    Characteristics: Word;
  end;
  {$EXTERNALSYM _IMAGE_FILE_HEADER}
  TImageFileHeader = _IMAGE_FILE_HEADER;
  IMAGE_FILE_HEADER = _IMAGE_FILE_HEADER;
  {$EXTERNALSYM IMAGE_FILE_HEADER}
-----------------------
3. Значение каждого поля можно посмотреть в техническом описании  Microsoft  и в статье ФОРМАТ ИСПОЛНЯЕМЫХ ФАЙЛОВ PortableExecutables (PE), написанной Hard Wisdom  (она на русском языке)

Окно программы
4. Написал программу, которая определяет, является ли данный файл PE файлом и выводит сигнатуру PE файла (Signature),  и заголовок файла (FileHeader) .В дальнейшем, после последующего развития, эта программа пригодится при написании упаковщика или криптора PE-файла.

5. Программу с исходниками, а  также с дополнительными файлами - файлом Windows.pas ,статьей ФОРМАТ ИСПОЛНЯЕМЫХ ФАЙЛОВ PortableExecutables (PE) написанной Hard Wisdom  и спецификациями Microsoft для PE-файлов версий 8.0,8.1 и 8.2 (094_pecoff_v8.pdf, pecoff_v8.doc , pecoff_v8.pdf )  скачать можно здесь : NTHeader.rar

6 Полезные ссылки 
--  Формат исполняемого файла ОС Windows - http://vxheavens.com/lib/vbp01.html#c2
Хорошо объяснен формат PE файла. Статья на русском . Лучше чем  статья  Hard Wisdom ФОРМАТ ИСПОЛНЯЕМЫХ ФАЙЛОВ PortableExecutables (PE)

четверг, 2 февраля 2012 г.

Заголовок файла MS-DOS формата Exe

0.Любой PE-файл начинается с маленькой  программы, записанной в формате исполняемых файлов MS-DOS. Эта программа выводит на экран сообщение  подобное этому: "This program cannot be run in DOS mode".

1.Подробно расписан заголовок MS-DOS в файле Windows.pas комплекта Delphi 7.0 :
---------------------------------------------------
type
  PImageDosHeader = ^TImageDosHeader;
    {EXTERNALSYM _IMAGE_DOS_HEADER}
  _IMAGE_DOS_HEADER = packed record      { DOS .EXE header                  }
      e_magic: Word;                     { Magic number                     }+00
      e_cblp: Word;                      { Bytes on last page of file       }+02
      e_cp: Word;                        { Pages in file                    }+04
      e_crlc: Word;                      { Relocations                      }+06
      e_cparhdr: Word;                   { Size of header in paragraphs     }+08
      e_minalloc: Word;                  { Minimum extra paragraphs needed  }+0a
      e_maxalloc: Word;                  { Maximum extra paragraphs needed  }+0c
      e_ss: Word;                        { Initial (relative) SS value      }+0e
      e_sp: Word;                        { Initial SP value                 }+10
      e_csum: Word;                      { Checksum                         }+12
      e_ip: Word;                        { Initial IP value                 }+14
      e_cs: Word;                        { Initial (relative) CS value      }+16
      e_lfarlc: Word;                    { File address of relocation table }+18
      e_ovno: Word;                      { Overlay number                   }+1a
      e_res: array [0..3] of Word;       { Reserved words                   }
      e_oemid: Word;                     { OEM identifier (for e_oeminfo)   }+24
      e_oeminfo: Word;                   { OEM information; e_oemid specific}+26
      e_res2: array [0..9] of Word;      { Reserved words                   }
      _lfanew: LongInt;                  { File address of new exe header   }+3С
  end;
  TImageDosHeader = _IMAGE_DOS_HEADER;
  {$EXTERNALSYM IMAGE_DOS_HEADER}
  IMAGE_DOS_HEADER = _IMAGE_DOS_HEADER;
----------------------------------------------------

2. Из справочной программы Tech 6.0  информация о Dos заголовке:
-------------------------------------------------
ExeHeaderRec
  Offset Size Contents

   +0      2  wSignature   5a4dH .EXE file signature ('MZ')
   +2      2  wPartPage    length of partial page at end (generally ignored)
   +4      2  wPageCnt     length of image in 512-byte pages, incl. header
   +6      2  wReloCnt     number of items in relocation table
   +8      2  wHdrSize     size of header in 16-byte paragraphs
  +0aH     2  wMinAlloc    minimum RAM needed above end of prog (paragraphs)
  +0cH     2  wMaxAlloc    maximum RAM needed above end of prog (paragraphs)
  +0eH     2  wInitSS      segment offset of stack segment (for setting SS)
  +10H     2  wInitSP      value for SP register when started
  +12H     2  wChkSum      file checksum (negative sum of all words in file)
  +14H     2  wInitIP      value for IP register when started
  +16H     2  wInitCS      segment offset of code segment (for setting CS)
  +18H     2  wTablOff     file-offset of first relo item (often 001cH)
  +1aH     2  wOverlayNo   overlay number (0 for base module)
          28               size of formatted portion of EXE header
--------------------------------------------------

Окно программы
Окно программы
3.Написал программу на Delphi , которая читает и анализирует заголовок MS - DOS  с целью определить этот файл  формата DOS  или Windows.Пригодится в дальнейшей разработке упаковщика или криптора.  Можно скачать с исходниками, а также с дополнительными файлами - файлом Windows.pas и программой Tech 6.0 здесь: DosHeader.rar

4. Полезные ссылки.
This page is intended to document the format of DOS executable files