DLL to LIB

Тема в разделе "WASM.BEGINNERS", создана пользователем fragment, 2 авг 2010.

  1. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
    как будет выглядеть код
    Код (Text):
    1.  
    2.        .IF     !eax
    3.                 ret
    4.        .ENDIF
    на чистом асм без макросов? , подскажите пожалуйста , савсем позабыл азы.
     
  2. Medstrax

    Medstrax Забанен

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    673
    or eax,eax(test eax,eax) ;.IF !eax
    jz a1
    ret
    ; .ENDIF
    a1:
    ...........
     
  3. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
    Спасибо большое. А еще вот такой вопрос. http://pastebin.com/DXbkJEwk Объясните пожалуйста зачем в процедуре Runsvc используется в конце lstrlen и почему там везде MAX_PATH+1

    Код (Text):
    1. .data
    2. fPaused BOOL FALSE
    3. fRunning BOOL FALSE
    4. .data?
    5. exitEvent   dd  ?
    6. hWinMain    dd  ?
    7. schSCManager dd ?
    8. szFileName              db      MAX_PATH+1 dup(?)
    9. stSS        SERVICE_STATUS  <>
    10. hStatus DWORD ?
    11. sTable SERVICE_TABLE_ENTRY <>
    12. sTable2 SERVICE_TABLE_ENTRY <>
    13. hInstance HINSTANCE ?
    14. hThread HANDLE ?
    15. evTerminate HANDLE ?
    16.  
    17. .code
    18. IsInstalledService proc
    19.  
    20.         invoke  OpenSCManager, NULL, NULL, SC_MANAGER_ALL_ACCESS
    21.         mov     schSCManager, eax
    22.         .IF     !eax
    23.                 ret
    24.         .ENDIF
    25.         invoke  OpenService, schSCManager, offset szServiceName, DELETE
    26.         .IF     eax
    27.                 invoke  CloseServiceHandle, eax
    28.                 push    1
    29.         .ELSE
    30.                 push    0
    31.         .ENDIF
    32.         invoke  CloseServiceHandle, schSCManager
    33.         pop     eax
    34.         ret
    35. IsInstalledService endp
    36.  
    37. InstallService  proc
    38.         invoke  OpenSCManager, NULL, NULL, SC_MANAGER_ALL_ACCESS
    39.         mov     schSCManager, eax
    40.         .IF     !eax
    41.                 ret
    42.         .ENDIF
    43.  invoke  GetModuleFileName, 0, addr szFileName, MAX_PATH
    44.         invoke  CreateService,schSCManager,addr szServiceName,addr szDisplayName,\
    45.             SERVICE_ALL_ACCESS,SERVICE_WIN32_OWN_PROCESS or SERVICE_INTERACTIVE_PROCESS,\
    46.             SERVICE_AUTO_START,SERVICE_ERROR_NORMAL,addr szFileName,\
    47.             NULL,NULL,NULL,NULL,NULL
    48.         .IF     eax
    49.                 push    eax
    50.                 invoke  StartService, eax, NULL, NULL
    51.                 call    CloseServiceHandle
    52.         .ENDIF
    53.         invoke  CloseServiceHandle, schSCManager
    54.         ret
    55. InstallService  endp
    56. InitService Proc
    57.   LOCAL id:DWORD
    58.   mov fRunning, TRUE
    59.   mov eax, 1
    60.   ret
    61. InitService EndP
    62.  
    63. ResumeService Proc
    64.   mov fPaused, FALSE
    65.   invoke ResumeThread, hThread
    66.   ret
    67. ResumeService EndP
    68.  
    69. PauseService Proc
    70.   mov fPaused, TRUE
    71.   invoke SuspendThread, hThread
    72.   ret
    73. PauseService EndP
    74.  
    75. StopServiceStatus Proc
    76.   mov fRunning, FALSE
    77.  
    78.   invoke SendMessage,hWinMain,WM_CLOSE,0,0
    79.   invoke SetEvent, evTerminate
    80.   ret
    81. StopServiceStatus EndP
    82.  
    83. CtrlHandler Proc controlCode1:DWORD
    84.   LOCAL currentState:DWORD
    85.   LOCAL success:BOOL
    86.  
    87.   mov currentState, 0
    88.   mov eax, controlCode1
    89.  
    90.   .if ( eax == SERVICE_CONTROL_STOP )
    91.     SendSvcState SERVICE_STOP_PENDING
    92.     call StopServiceStatus
    93.     SendSvcState SERVICE_STOPPED
    94.   .elseif ( eax == SERVICE_CONTROL_PAUSE )
    95.     .if ( fRunning != FALSE && fPaused == FALSE )
    96.         SendSvcState SERVICE_PAUSE_PENDING
    97.  
    98.         call PauseService
    99.      
    100.         SendSvcState SERVICE_PAUSED
    101.     .endif
    102.  
    103.   .elseif ( eax == SERVICE_CONTROL_CONTINUE )
    104.     .if ( fRunning != FALSE && fPaused == TRUE )
    105.         SendSvcState SERVICE_CONTINUE_PENDING
    106.  
    107.         call ResumeService
    108.  
    109.         SendSvcState SERVICE_RUNNING
    110.     .endif
    111.  
    112.   .elseif ( eax == SERVICE_CONTROL_INTERROGATE )
    113.   .elseif ( eax == SERVICE_CONTROL_SHUTDOWN )
    114.   .endif
    115.   ret
    116. CtrlHandler EndP
    117.  
    118. ServiceMain Proc argc:DWORD, argv:DWORD
    119.  
    120.     invoke  RegisterServiceCtrlHandler,addr szServiceName,offset CtrlHandler
    121.     mov hStatus, eax
    122.     mov stSS.dwServiceType,SERVICE_WIN32_OWN_PROCESS or SERVICE_INTERACTIVE_PROCESS
    123.     mov stSS.dwControlsAccepted,SERVICE_ACCEPT_STOP
    124.     mov stSS.dwWin32ExitCode,NO_ERROR
    125.     mov stSS.dwWaitHint,3000
    126.     SendSvcState SERVICE_START_PENDING
    127.   call InitService
    128.   SendSvcState SERVICE_RUNNING
    129.   invoke  start_work
    130.   ret
    131. ServiceMain EndP
    132.  
    133. Runsvc proc
    134.         invoke  GetSystemDirectory, offset lpBuf1, MAX_PATH+1
    135.  
    136.         invoke  GetModuleFileName, NULL, offset lpBuf2, MAX_PATH+1
    137.  
    138.  
    139.         invoke  lstrcat, offset lpBuf1, offset exename
    140.  
    141.         invoke  lstrcmp, offset lpBuf1, offset lpBuf2
    142.         test    eax, eax
    143.         jz      @ret
    144.  
    145.         invoke  CopyFile, offset lpBuf2, offset lpBuf1, 0
    146.         test    eax, eax
    147.         jz      @exit
    148.  
    149.         invoke  lstrlen, offset lpBuf1
    150.  
    151. @@:
    152.         invoke  ShellExecute, 0, offset szTextOpen, offset lpBuf1, 0, 0, SW_HIDE
    153.  
    154. @exit:
    155.         invoke  ExitProcess, 0
    156. @ret:
    157.     invoke  IsInstalledService
    158.     .IF     !eax
    159.         invoke  InstallService
    160.     .ENDIF
    161.   mov sTable.lpServiceProc, offset ServiceMain
    162.   mov sTable.lpServiceName, offset szServiceName
    163.   invoke StartServiceCtrlDispatcher, addr sTable
    164.         ret
    165. Runsvc endp
     
  4. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    fragment
    Автор думал что символ завершающий строку(ноль) не входит в макс. длину строки. Это не верно.
     
  5. fragment

    fragment New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2008
    Сообщения:
    266
    Ответ ясен, а про invoke lstrlen, offset lpBuf1 в конце кода что можите сказать?

    Код (Text):
    1.       invoke  lstrlen, offset lpBuf1
    2.  
    3. @@:
    4.         invoke  ShellExecute, 0, offset szTextOpen, offset lpBuf1, 0, 0, SW_HIDE
    не понятен этот кусок кода , и зачем там метка если ею никто в модуле не пользутеся
     
  6. Scholium

    Scholium New Member

    Публикаций:
    0
    Регистрация:
    5 мар 2009
    Сообщения:
    96
    Здесь будет представлен другой, более универсальный скрипт на Visual FoxPro, позволяющий из листинга системной dll-ки, дизасемблированного с помощью демо-версии IdaPro v.5.7, получить нужный def файл, что означает автоматическое создание и соответствующего lib файла.

    Повторим, вкратце процедуру работы с демо-версией «Иды» (в коммерческой версии, работать будет немного проще).

    Если нас интересует создание def или lib файла некоторой системной библиотеки, например, из Windows XP sp.3, то мы просто загружаем данную dll в «Иду», хотя бы в демо-версию и дизассемблируем ее с отладочными символами, обычно подгружаемых из Интернета, но можно и локально (подробнее расписано в моих предыдущих ссылках).

    Далее сохраняем через буфер обмена (так как в демо-версии отсутствует возможность записи в файл) листинг данной dll-ки в файл с расширением lst. Конечно, можно было бы не париться с «Идой», если бы мы умели самостоятельно разгребать контейнер с отладочными символами. Однако разбираться с форматом pdb-файла как-то лениво, тем более, что «Ида» это делает превосходно, правда, размазывая нужную нам информацию (в избыточном виде) по всему листингу. Из-за этих заморочек «Иды», код нашего скрипта получается достаточно объемный. Впрочем, это не единственное возможное решение, другие варианты зависят от вашей фантазии :) .

    Итак, пусть нас интересует kernel32.dll. С помощью «Иды» мы получаем из него kernel32.lst. Полученный листинг скармливаем нашему скрипту:

    Код (Text):
    1. ******************************************************************************
    2. * lst2def.prg
    3. ******************************************************************************
    4. CLEAR
    5. SET TALK OFF
    6. SET SAFETY OFF
    7. SET TEXTMERGE ON
    8.  
    9. filename = "kernel32"
    10.  
    11. infile = filename + ".lst"
    12. outfile = filename + ".txt"
    13. dbffile = "temp.dbf"
    14. dbffile2 = filename + ".dbf"
    15.  
    16. Line1 = " ; Exported entry"
    17. Len1 = LEN(Line1)
    18. Line2 = "                 public"
    19. Len2 = LEN(Line2)
    20.  
    21. FuncNameLen = 125  && Выделенная длина для имени функции
    22.  
    23. crlf = CHR(13) + CHR(10)  && Символы завершения строки
    24. tabulators = CHR(9) + CHR(9)
    25.  
    26. file1 = FOPEN(infile)
    27.  
    28. IF file1 < 0
    29.   WAIT 'Не могу открыть файл: ' + infile
    30.   QUIT
    31. ENDIF
    32.  
    33. file2 = FCREATE(outfile)
    34.  
    35. IF file2 < 0
    36.   WAIT 'Не могу создать файл: ' + outfile
    37.   QUIT
    38. ENDIF
    39.  
    40. End1 = FSEEK(file1, 0, 2)  && Определяем размер файла
    41. Top1 = FSEEK(file1, 0)  && Идем в начало. Сама переменная не нужна
    42.  
    43. IF End1 <= 0  && Если файл пуст
    44.    MESSAGEBOX('Пустой файл: ' + infile)
    45.    QUIT
    46. ENDIF
    47.  
    48. pos = 0
    49. IsLine1 = .F.
    50.  
    51. KolStr = 10  && Максимально возможное количество строк для общих функций и до строки public (д.б. >= 6)
    52. DIMENSION aSnum[KolStr]  && Строковые ординалы функций
    53. DIMENSION aFunc[KolStr]  && Их базовые имена
    54.  
    55. * Обнуляем массивы
    56. FOR i = 1 TO KolStr
    57.   aSnum[i] = ""
    58.   aFunc[i] = ""
    59. ENDFOR
    60.  
    61. * i = 0
    62.  
    63. DO WHILE NOT EOF(file1)  && На самом деле мы не можем доверять этому условию
    64.   strline = FGETS(file1)
    65.  
    66. *!*    i = i + 1
    67.  
    68. *!*    IF i > 100000000
    69. *!*      CLOSE ALL
    70. *!*      QUIT
    71. *!*    ENDIF
    72. *!*    
    73. *!*    ModulI = i%10000
    74.  
    75. *!*    IF ModulI == 0
    76. *!*      ? i
    77. *!*    ENDIF
    78.  
    79.   Curpos1 = FSEEK(file1, 0, 1)
    80.  
    81.   IF Curpos1 >=  End1  && Достигнут конец файла
    82.     EXIT
    83.   ENDIF
    84.  
    85.   pos = AT(Line1, strline)  && Ищем первую строку
    86.  
    87.   IF pos > 0  && Нашли первую строку Line1
    88.     IsLine1 = .T.
    89.   ELSE
    90.     LOOP
    91.   ENDIF
    92.  
    93.   && Первая строка Line1 найдена! Однако этих строк может быть несколько.
    94.   && Т.е. разные функции могут иметь общий код.
    95.  
    96.   strline = SUBSTR(strline, pos + Len1 + 1)  && Выделяем число (номер / ординал функции)
    97.  
    98.   pos = AT(".", strline)  && Ищем признак завершения числа
    99.  
    100.   IF pos > 0  && Нашли конец числа
    101.     aSnum[1] = RIGHT("     " + LTRIM(LEFT(strline, pos - 1)), 5) + " "
    102.     aFunc[1] = SUBSTR(strline, pos + 2)
    103.   ELSE
    104.     MESSAGEBOX("Нет признака для номера функции!")
    105.     QUIT
    106.   ENDIF
    107.  
    108.   KolLine1 = 1  && Количество найденных подряд строк Line1 по умолчанию
    109.  
    110.   * В течении следующих KolStr - 1 пытаемся искать другие строки Line1
    111.   FOR i = 2 TO KolStr
    112.     strline = FGETS(file1)
    113.    
    114.     pos = AT(Line1, strline)  && Снова ищем первую строку
    115.    
    116.     IF pos > 0  && Нашли новую копию первой строки Line1
    117.       KolLine1 = i
    118.  
    119.       strline = SUBSTR(strline, pos + Len1 + 1)  && Выделяем число (номер / ординал функции)
    120.      
    121.       pos = AT(".", strline)  && Ищем признак завершения числа
    122.      
    123.       IF pos > 0  && Нашли конец числа
    124.         aSnum[i] = RIGHT("     " + LTRIM(LEFT(strline, pos - 1)), 5) + " "
    125.         aFunc[i] = SUBSTR(strline, pos + 2)
    126.       ELSE
    127.         MESSAGEBOX("Нет признака для номера функции!")
    128.         QUIT
    129.       ENDIF
    130.     ELSE  && Нет других копий строк Line1
    131.       EXIT
    132.     ENDIF
    133.   ENDFOR
    134.    
    135.   && Ищем вторую строку Line2, которой могут соответствовать несколько первых строк Line1
    136.  
    137.   IsLine2 = .F.
    138.  
    139.   * В течении следующих KolStr должна быть найдена вторая строка Line2
    140.   FOR i = 1 TO KolStr
    141.     pos = AT(Line2, strline)  && Ищем вторую строку Line2
    142.    
    143.     IF pos > 0  && Нашли вторую строку Line2
    144.       IsLine2 = .T.
    145.       EXIT
    146.     ENDIF
    147.  
    148.     strline = FGETS(file1)
    149.   ENDFOR
    150.  
    151.   IF NOT IsLine2
    152.     MESSAGEBOX("Нет пары для первой строки!")
    153.     QUIT
    154.   ENDIF
    155.  
    156.   && Вторая строка Line2 найдена!
    157.  
    158.   FuncName = TRIM(SUBSTR(strline, pos + Len2 + 1))  && Выделяем полное имя экспортируемой функции
    159.   FuncName = LEFT(FuncName + REPLICATE(" ", FuncNameLen), FuncNameLen)
    160.          
    161.   * Следующим KolLine1 строкам Line1 соответствует одна строка Line2
    162.   FOR i = 1 TO KolLine1
    163.     IF KolLine1 = 1
    164.       FWRITE(file2, FuncName + aSnum[1] + crlf)
    165.     ELSE
    166.       FWRITE(file2, FuncName + aSnum[i] + aFunc[i] + crlf)
    167.     ENDIF
    168.   ENDFOR
    169.  
    170. *  ? strline + tabulators + "@" + snum
    171. ENDDO
    172.  
    173. IF NOT IsLine1
    174.   MESSAGEBOX("Искомая строка не найдена!")
    175.   QUIT
    176. ENDIF
    177.  
    178. CLOSE ALL
    179.  
    180. * Dbf файл для экспортируемых функций
    181. CREATE TABLE (dbffile) (FuncName c((FuncNameLen)), Ord n(6,0), Comments c((FuncNameLen)))
    182. APPEND FROM (outfile) TYPE SDF
    183.  
    184. CLOSE ALL
    185.  
    186. * Сортруем dbf файл по ординалу
    187. SELECT * FROM (dbffile) ORDER BY Ord INTO TABLE (dbffile2)
    188.  
    189. SELECT (dbffile2)
    190.  
    191. SET TEXTMERGE TO filename + ".def"
    192.  
    193. \\LIBRARY "<<filename + '.dll'>>"
    194. \EXPORTS
    195.  
    196. * Генерим def файл
    197. FOR i = 1 TO RECCOUNT()
    198.   GO i
    199.   SCATTER MEMVAR
    200.  
    201.   \<<m.FuncName>>@<<LTRIM(STR(Ord))>><<IIF(EMPTY(m.Comments), "", " ; ")>><<TRIM(Comments)>>
    202. ENDFOR
    203.  
    204. CLOSE ALL
    205. QUIT
    206. ******************************************************************************
    207. ******************************************************************************
    Заметим, что для других версий «Иды» сигнатура Line1 и Line2 может немного отличаться.

    В результате работы скрипта мы получим файл kernel32.def:

    Код (Text):
    1. LIBRARY "kernel32.dll"
    2. EXPORTS
    3. _ActivateActCtx@8                                 @1
    4. _AddAtomA@4                                       @2
    5. _AddAtomW@4                                       @3
    6. _AddConsoleAliasA@12                              @4
    7. _AddConsoleAliasW@12                              @5
    8. _AddLocalAlternateComputerNameA@8                 @6
    9. _AddLocalAlternateComputerNameW@8                 @7
    10. _AddRefActCtx@4                                   @8
    11. AddVectoredExceptionHandler                       @9
    12. _AllocConsole@0                                   @10
    13. _AllocateUserPhysicalPages@12                     @11
    14. _AreFileApisANSI@0                                @12
    15. _AssignProcessToJobObject@8                       @13
    16. _AttachConsole@4                                  @14
    17. _BackupRead@28                                    @15
    18. _BackupSeek@24                                    @16
    19. _BackupWrite@28                                   @17
    20. _BaseCheckAppcompatCache@16                       @18
    21. _BaseCleanupAppcompatCache@0                      @19
    22. _BaseCleanupAppcompatCacheSupport@4               @20
    23. _BaseDumpAppcompatCache@0                         @21
    24. _BaseFlushAppcompatCache@0                        @22
    25. _BaseInitAppcompatCache@0                         @23
    26. _BaseInitAppcompatCacheSupport@0                  @24
    27. _BaseProcessInitPostImport@0                      @25
    28. _BaseQueryModuleData@20                           @26
    29. _BaseUpdateAppcompatCache@12                      @27
    30. _BasepCheckWinSaferRestrictions@24                @28
    31. _Beep@8                                           @29
    32. _BeginUpdateResourceA@8                           @30
    33. _BeginUpdateResourceW@8                           @31
    34. _BindIoCompletionCallback@12                      @32
    35. _BuildCommDCBA@8                                  @33
    36. _BuildCommDCBAndTimeoutsA@12                      @34
    37. _BuildCommDCBAndTimeoutsW@12                      @35
    38. _BuildCommDCBW@8                                  @36
    39. _CallNamedPipeA@28                                @37
    40. _CallNamedPipeW@28                                @38
    41. _CancelDeviceWakeupRequest@4                      @39
    42. _CancelIo@4                                       @40
    43. _CancelTimerQueueTimer@8                          @41
    44. _CancelWaitableTimer@4                            @42
    45. _ChangeTimerQueueTimer@16                         @43
    46. _CheckNameLegalDOS8Dot3A@20                       @44
    47. _CheckNameLegalDOS8Dot3W@20                       @45
    48. _CheckRemoteDebuggerPresent@8                     @46
    49. _ClearCommBreak@4                                 @47
    50. _ClearCommError@12                                @48
    51. _CloseConsoleHandle@4                             @49
    52. _CloseHandle@4                                    @50
    53. _CloseProfileUserMapping@0                        @51
    54. _CmdBatNotification@4                             @52
    55. _CommConfigDialogA@12                             @53
    56. _CommConfigDialogW@12                             @54
    57. _CompareFileTime@8                                @55
    58. _CompareStringA@24                                @56
    59. _CompareStringW@24                                @57
    60. _ConnectNamedPipe@8                               @58
    61. _ConsoleMenuControl@12                            @59
    62. _ContinueDebugEvent@12                            @60
    63. _ConvertDefaultLocale@4                           @61
    64. _ConvertFiberToThread@0                           @62
    65. _ConvertThreadToFiber@4                           @63
    66. _CopyFileA@12                                     @64
    67. _CopyFileExA@24                                   @65
    68. _CopyFileExW@24                                   @66
    69. _CopyFileW@12                                     @67
    70. _CopyLZFile@8                                     @68
    71. _CreateActCtxA@4                                  @69
    72. _CreateActCtxW@4                                  @70
    73. _CreateConsoleScreenBuffer@20                     @71
    74. _CreateDirectoryA@8                               @72
    75. _CreateDirectoryExA@12                            @73
    76. _CreateDirectoryExW@12                            @74
    77. _CreateDirectoryW@8                               @75
    78. _CreateEventA@16                                  @76
    79. _CreateEventW@16                                  @77
    80. _CreateFiber@12                                   @78
    81. _CreateFiberEx@20                                 @79
    82. _CreateFileA@28                                   @80
    83. _CreateFileMappingA@24                            @81
    84. _CreateFileMappingW@24                            @82
    85. _CreateFileW@28                                   @83
    86. _CreateHardLinkA@12                               @84
    87. _CreateHardLinkW@12                               @85
    88. _CreateIoCompletionPort@16                        @86
    89. _CreateJobObjectA@8                               @87
    90. _CreateJobObjectW@8                               @88
    91. _CreateJobSet@12                                  @89
    92. _CreateMailslotA@16                               @90
    93. _CreateMailslotW@16                               @91
    94. _CreateMemoryResourceNotification@4               @92
    95. _CreateMutexA@12                                  @93
    96. _CreateMutexW@12                                  @94
    97. _CreateNamedPipeA@32                              @95
    98. _CreateNamedPipeW@32                              @96
    99. _CreateNlsSecurityDescriptor@12                   @97
    100. _CreatePipe@16                                    @98
    101. _CreateProcessA@40                                @99
    102. _CreateProcessInternalA@48                        @100
    103. _CreateProcessInternalW@48                        @101
    104. LZDone                                            @102 ; CreateProcessInternalWSecure
    105. _CreateProcessW@40                                @103
    106. _CreateRemoteThread@28                            @104
    107. _CreateSemaphoreA@16                              @105
    108. _CreateSemaphoreW@16                              @106
    109. _CreateSocketHandle@0                             @107
    110. _CreateTapePartition@16                           @108
    111. _CreateThread@24                                  @109
    112. _CreateTimerQueue@0                               @110
    113. _CreateTimerQueueTimer@28                         @111
    114. _CreateToolhelp32Snapshot@8                       @112
    115. _CreateVirtualBuffer@12                           @113
    116. _CreateWaitableTimerA@12                          @114
    117. _CreateWaitableTimerW@12                          @115
    118. _DeactivateActCtx@8                               @116
    119. _DebugActiveProcess@4                             @117
    120. _DebugActiveProcessStop@4                         @118
    121. _DebugBreak@0                                     @119
    122. _DebugBreakProcess@4                              @120
    123. _DebugSetProcessKillOnExit@4                      @121
    124. DecodePointer                                     @122
    125. DecodeSystemPointer                               @123
    126. _DefineDosDeviceA@12                              @124
    127. _DefineDosDeviceW@12                              @125
    128. _DelayLoadFailureHook@8                           @126
    129. _DeleteAtom@4                                     @127
    130. DeleteCriticalSection                             @128
    131. _DeleteFiber@4                                    @129
    132. _DeleteFileA@4                                    @130
    133. _DeleteFileW@4                                    @131
    134. _DeleteTimerQueue@4                               @132
    135. _DeleteTimerQueueEx@8                             @133
    136. _DeleteTimerQueueTimer@12                         @134
    137. _DeleteVolumeMountPointA@4                        @135
    138. _DeleteVolumeMountPointW@4                        @136
    139. _DeviceIoControl@32                               @137
    140. _DisableThreadLibraryCalls@4                      @138
    141. _DisconnectNamedPipe@4                            @139
    142. _DnsHostnameToComputerNameA@12                    @140
    143. _DnsHostnameToComputerNameW@12                    @141
    144. _DosDateTimeToFileTime@12                         @142
    145. _DosPathToSessionPathA@12                         @143
    146. _DosPathToSessionPathW@12                         @144
    147. _DuplicateConsoleHandle@16                        @145
    148. _DuplicateHandle@28                               @146
    149. EncodePointer                                     @147
    150. EncodeSystemPointer                               @148
    151. _EndUpdateResourceA@8                             @149
    152. _EndUpdateResourceW@8                             @150
    153. EnterCriticalSection                              @151
    154. _EnumCalendarInfoA@16                             @152
    155. _EnumCalendarInfoExA@16                           @153
    156. _EnumCalendarInfoExW@16                           @154
    157. _EnumCalendarInfoW@16                             @155
    158. _EnumDateFormatsA@12                              @156
    159. _EnumDateFormatsExA@12                            @157
    160. _EnumDateFormatsExW@12                            @158
    161. _EnumDateFormatsW@12                              @159
    162. _EnumLanguageGroupLocalesA@16                     @160
    163. _EnumLanguageGroupLocalesW@16                     @161
    164. _EnumResourceLanguagesA@20                        @162
    165. _EnumResourceLanguagesW@20                        @163
    166. _EnumResourceNamesA@16                            @164
    167. _EnumResourceNamesW@16                            @165
    168. _EnumResourceTypesA@12                            @166
    169. _EnumResourceTypesW@12                            @167
    170. _EnumSystemCodePagesA@8                           @168
    171. _EnumSystemCodePagesW@8                           @169
    172. _EnumSystemGeoID@12                               @170
    173. _EnumSystemLanguageGroupsA@12                     @171
    174. _EnumSystemLanguageGroupsW@12                     @172
    175. _EnumSystemLocalesA@8                             @173
    176. _EnumSystemLocalesW@8                             @174
    177. _EnumTimeFormatsA@12                              @175
    178. _EnumTimeFormatsW@12                              @176
    179. _EnumUILanguagesA@12                              @177
    180. _EnumUILanguagesW@12                              @178
    181. _EnumerateLocalComputerNamesA@16                  @179
    182. _EnumerateLocalComputerNamesW@16                  @180
    183. _EraseTape@12                                     @181
    184. _EscapeCommFunction@8                             @182
    185. _ExitProcess@4                                    @183
    186. _ExitThread@4                                     @184
    187. _ExitVDM@8                                        @185
    188. _ExpandEnvironmentStringsA@12                     @186
    189. _ExpandEnvironmentStringsW@12                     @187
    190. _ExpungeConsoleCommandHistoryA@4                  @188
    191. _ExpungeConsoleCommandHistoryW@4                  @189
    192. _ExtendVirtualBuffer@8                            @190
    193. _FatalAppExitA@8                                  @191
    194. _FatalAppExitW@8                                  @192
    195. _FatalExit@4                                      @193
    196. _FileTimeToDosDateTime@12                         @194
    197. _FileTimeToLocalFileTime@8                        @195
    198. _FileTimeToSystemTime@8                           @196
    199. _FillConsoleOutputAttribute@20                    @197
    200. _FillConsoleOutputCharacterA@20                   @198
    201. _FillConsoleOutputCharacterW@20                   @199
    202. _FindActCtxSectionGuid@20                         @200
    203. _FindActCtxSectionStringA@20                      @201
    204. _FindActCtxSectionStringW@20                      @202
    205. _FindAtomA@4                                      @203
    206. _FindAtomW@4                                      @204
    207. _FindClose@4                                      @205
    208. _FindVolumeMountPointClose@4                      @206 ; FindCloseChangeNotification
    209. _FindFirstChangeNotificationA@12                  @207
    210. _FindFirstChangeNotificationW@12                  @208
    211. _FindFirstFileA@8                                 @209
    212. _FindFirstFileExA@24                              @210
    213. _FindFirstFileExW@24                              @211
    214. _FindFirstFileW@8                                 @212
    215. _FindFirstVolumeA@8                               @213
    216. _FindFirstVolumeMountPointA@12                    @214
    217. _FindFirstVolumeMountPointW@12                    @215
    218. _FindFirstVolumeW@8                               @216
    219. _FindNextChangeNotification@4                     @217
    220. _FindNextFileA@8                                  @218
    221. _FindNextFileW@8                                  @219
    222. _FindNextVolumeA@12                               @220
    223. _FindNextVolumeMountPointA@12                     @221
    224. _FindNextVolumeMountPointW@12                     @222
    225. _FindNextVolumeW@12                               @223
    226. _FindResourceA@12                                 @224
    227. _FindResourceExA@16                               @225
    228. _FindResourceExW@16                               @226
    229. _FindResourceW@12                                 @227
    230. _FindVolumeClose@4                                @228
    231. _FindVolumeMountPointClose@4                      @229 ; FindVolumeMountPointClose
    232. _FlushConsoleInputBuffer@4                        @230
    233. _FlushFileBuffers@4                               @231
    234. _FlushInstructionCache@12                         @232
    235. _FlushViewOfFile@8                                @233
    236. _FoldStringA@20                                   @234
    237. _FoldStringW@20                                   @235
    238. _FormatMessageA@28                                @236
    239. _FormatMessageW@28                                @237
    240. _FreeConsole@0                                    @238
    241. _FreeEnvironmentStringsA@4                        @239
    242. _FreeEnvironmentStringsW@4                        @240
    243. _FreeLibrary@4                                    @241
    244. _FreeLibraryAndExitThread@8                       @242
    245. _DnsApiSetDebugGlobals@4                          @243
    246. _FreeUserPhysicalPages@12                         @244
    247. _FreeVirtualBuffer@4                              @245
    248. _GenerateConsoleCtrlEvent@8                       @246
    249. _GetACP@0                                         @247
    250. _GetAtomNameA@12                                  @248
    251. _GetAtomNameW@12                                  @249
    252. _GetBinaryTypeA@8                                 @250 ; GetBinaryType
    253. _GetBinaryTypeA@8                                 @251 ; GetBinaryTypeA
    254. _GetBinaryTypeW@8                                 @252
    255. _GetCPFileNameFromRegistry@12                     @253
    256. _GetCPInfo@8                                      @254
    257. _GetCPInfoExA@12                                  @255
    258. _GetCPInfoExW@12                                  @256
    259. _GetCalendarInfoA@24                              @257
    260. _GetCalendarInfoW@24                              @258
    261. _GetComPlusPackageInstallStatus@0                 @259
    262. _GetCommConfig@12                                 @260
    263. _GetCommMask@8                                    @261
    264. _GetCommModemStatus@8                             @262
    265. _GetCommProperties@8                              @263
    266. _GetCommState@8                                   @264
    267. _GetCommTimeouts@8                                @265
    268. _GetCommandLineA@0                                @266
    269. _GetCommandLineW@0                                @267
    270. _GetCompressedFileSizeA@8                         @268
    271. _GetCompressedFileSizeW@8                         @269
    272. _GetComputerNameA@8                               @270
    273. _GetComputerNameExA@12                            @271
    274. _GetComputerNameExW@12                            @272
    275. _GetComputerNameW@8                               @273
    276. _GetConsoleAliasA@16                              @274
    277. _GetConsoleAliasExesA@8                           @275
    278. _GetConsoleAliasExesLengthA@0                     @276
    279. _GetConsoleAliasExesLengthW@0                     @277
    280. _GetConsoleAliasExesW@8                           @278
    281. _GetConsoleAliasW@16                              @279
    282. _GetConsoleAliasesA@12                            @280
    283. _GetConsoleAliasesLengthA@4                       @281
    284. _GetConsoleAliasesLengthW@4                       @282
    285. _GetConsoleAliasesW@12                            @283
    286. _GetConsoleCP@0                                   @284
    287. _GetConsoleCharType@12                            @285
    288. _GetConsoleCommandHistoryA@12                     @286
    289. _GetConsoleCommandHistoryLengthA@4                @287
    290. _GetConsoleCommandHistoryLengthW@4                @288
    291. _GetConsoleCommandHistoryW@12                     @289
    292. _GetConsoleCursorInfo@8                           @290
    293. _GetConsoleCursorMode@12                          @291
    294. _GetConsoleDisplayMode@4                          @292
    295. _GetConsoleFontInfo@16                            @293
    296. _GetConsoleFontSize@8                             @294
    297. _GetConsoleHardwareState@12                       @295
    298. _GetConsoleInputExeNameA@8                        @296
    299. _GetConsoleInputExeNameW@8                        @297
    300. _GetConsoleInputWaitHandle@0                      @298
    301. _GetConsoleKeyboardLayoutNameA@4                  @299
    302. _GetConsoleKeyboardLayoutNameW@4                  @300
    303. _GetConsoleMode@8                                 @301
    304. _GetConsoleNlsMode@8                              @302
    305. _GetConsoleOutputCP@0                             @303
    306. _GetConsoleProcessList@8                          @304
    307. _GetConsoleScreenBufferInfo@8                     @305
    308. _GetConsoleSelectionInfo@4                        @306
    309. _GetConsoleTitleA@8                               @307
    310. _GetConsoleTitleW@8                               @308
    311. _GetConsoleWindow@0                               @309
    312. _GetCurrencyFormatA@24                            @310
    313. _GetCurrencyFormatW@24                            @311
    314. _GetCurrentActCtx@4                               @312
    315. _GetCurrentConsoleFont@12                         @313
    316. _GetCurrentDirectoryA@8                           @314
    317. _GetCurrentDirectoryW@8                           @315
    318. _GetCurrentProcess@0                              @316
    319. _GetCurrentProcessId@0                            @317
    320. _GetCurrentThread@0                               @318
    321. _GetCurrentThreadId@0                             @319
    322. _GetDateFormatA@24                                @320
    323. _GetDateFormatW@24                                @321
    324. _GetDefaultCommConfigA@12                         @322
    325. _GetDefaultCommConfigW@12                         @323
    326. _GetDefaultSortkeySize@4                          @324
    327. _GetDevicePowerState@8                            @325
    328. _GetDiskFreeSpaceA@20                             @326
    329. _GetDiskFreeSpaceExA@16                           @327
    330. _GetDiskFreeSpaceExW@16                           @328
    331. _GetDiskFreeSpaceW@20                             @329
    332. _GetDllDirectoryA@8                               @330
    333. _GetDllDirectoryW@8                               @331
    334. _GetDriveTypeA@4                                  @332
    335. _GetDriveTypeW@4                                  @333
    336. _GetEnvironmentStrings@0                          @334 ; GetEnvironmentStrings
    337. _GetEnvironmentStrings@0                          @335 ; GetEnvironmentStringsA
    338. _GetEnvironmentStringsW@0                         @336
    339. _GetEnvironmentVariableA@12                       @337
    340. _GetEnvironmentVariableW@12                       @338
    341. _GetExitCodeProcess@8                             @339
    342. _GetExitCodeThread@8                              @340
    343. _GetExpandedNameA@8                               @341
    344. _GetExpandedNameW@8                               @342
    345. _GetFileAttributesA@4                             @343
    346. _GetFileAttributesExA@12                          @344
    347. _GetFileAttributesExW@12                          @345
    348. _GetFileAttributesW@4                             @346
    349. _GetFileInformationByHandle@8                     @347
    350. _GetFileSize@8                                    @348
    351. _GetFileSizeEx@8                                  @349
    352. _GetFileTime@16                                   @350
    353. _GetFileType@4                                    @351
    354. _GetFirmwareEnvironmentVariableA@16               @352
    355. _GetFirmwareEnvironmentVariableW@16               @353
    356. _GetFullPathNameA@16                              @354
    357. _GetFullPathNameW@16                              @355
    358. _GetGeoInfoA@20                                   @356
    359. _GetGeoInfoW@20                                   @357
    360. _GetHandleContext@4                               @358
    361. _GetHandleInformation@8                           @359
    362. _GetLargestConsoleWindowSize@4                    @360
    363. GetLastError                                      @361
    364. _GetLinguistLangSize@4                            @362
    365. _GetLocalTime@4                                   @363
    366. _GetLocaleInfoA@16                                @364
    367. _GetLocaleInfoW@16                                @365
    368. _GetLogicalDriveStringsA@8                        @366
    369. _GetLogicalDriveStringsW@8                        @367
    370. _GetLogicalDrives@0                               @368
    371. _GetLogicalProcessorInformation@8                 @369
    372. _GetLongPathNameA@12                              @370
    373. _GetLongPathNameW@12                              @371
    374. _GetMailslotInfo@20                               @372
    375. _GetModuleFileNameA@12                            @373
    376. _GetModuleFileNameW@12                            @374
    377. _GetModuleHandleA@4                               @375
    378. _GetModuleHandleExA@12                            @376
    379. _GetModuleHandleExW@12                            @377
    380. _GetModuleHandleW@4                               @378
    381. _GetNamedPipeHandleStateA@28                      @379
    382. _GetNamedPipeHandleStateW@28                      @380
    383. _GetNamedPipeInfo@20                              @381
    384. _GetNativeSystemInfo@4                            @382
    385. _GetNextVDMCommand@4                              @383
    386. _GetNlsSectionName@24                             @384
    387. _GetNumaAvailableMemory@12                        @385
    388. _GetNumaAvailableMemoryNode@8                     @386
    389. _GetNumaHighestNodeNumber@4                       @387
    390. _GetNumaNodeProcessorMask@8                       @388
    391. _GetNumaProcessorMap@12                           @389
    392. _GetNumaProcessorNode@8                           @390
    393. _GetNumberFormatA@24                              @391
    394. _GetNumberFormatW@24                              @392
    395. _GetNumberOfConsoleFonts@0                        @393
    396. _GetNumberOfConsoleInputEvents@8                  @394
    397. _GetNumberOfConsoleMouseButtons@4                 @395
    398. _GetOEMCP@0                                       @396
    399. _GetOverlappedResult@16                           @397
    400. _GetPriorityClass@4                               @398
    401. _GetPrivateProfileIntA@16                         @399
    402. _GetPrivateProfileIntW@16                         @400
    403. _GetPrivateProfileSectionA@16                     @401
    404. _GetPrivateProfileSectionNamesA@12                @402
    405. _GetPrivateProfileSectionNamesW@12                @403
    406. _GetPrivateProfileSectionW@16                     @404
    407. _GetPrivateProfileStringA@24                      @405
    408. _GetPrivateProfileStringW@24                      @406
    409. _GetPrivateProfileStructA@20                      @407
    410. _GetPrivateProfileStructW@20                      @408
    411. _GetProcAddress@8                                 @409
    412. _GetProcessAffinityMask@12                        @410
    413. _GetProcessDEPPolicy@12                           @411
    414. _GetProcessHandleCount@8                          @412
    415. _GetProcessHeap@0                                 @413
    416. _GetProcessHeaps@8                                @414
    417. _GetProcessId@4                                   @415
    418. _GetProcessIoCounters@8                           @416
    419. _GetProcessPriorityBoost@8                        @417
    420. _GetProcessShutdownParameters@8                   @418
    421. _GetProcessTimes@20                               @419
    422. _GetProcessVersion@4                              @420
    423. _GetProcessWorkingSetSize@12                      @421
    424. _GetProfileIntA@12                                @422
    425. _GetProfileIntW@12                                @423
    426. _GetProfileSectionA@12                            @424
    427. _GetProfileSectionW@12                            @425
    428. _GetProfileStringA@20                             @426
    429. _GetProfileStringW@20                             @427
    430. _GetQueuedCompletionStatus@20                     @428
    431. _GetShortPathNameA@12                             @429
    432. _GetShortPathNameW@12                             @430
    433. _GetStartupInfoA@4                                @431
    434. _GetStartupInfoW@4                                @432
    435. _GetStdHandle@4                                   @433
    436. _GetStringTypeA@20                                @434
    437. _GetStringTypeExA@20                              @435
    438. _GetStringTypeExW@20                              @436
    439. _GetStringTypeW@16                                @437
    440. _GetSystemDEPPolicy@0                             @438
    441. _GetSystemDefaultLCID@0                           @439
    442. _GetSystemDefaultLangID@0                         @440
    443. _GetSystemDefaultUILanguage@0                     @441
    444. _GetSystemDirectoryA@8                            @442
    445. _GetSystemDirectoryW@8                            @443
    446. _GetSystemInfo@4                                  @444
    447. _GetSystemPowerStatus@4                           @445
    448. _GetSystemRegistryQuota@8                         @446
    449. _GetSystemTime@4                                  @447
    450. _GetSystemTimeAdjustment@12                       @448
    451. _GetSystemTimeAsFileTime@4                        @449
    452. _GetSystemTimes@12                                @450
    453. _GetSystemWindowsDirectoryA@8                     @451
    454. _GetSystemWindowsDirectoryW@8                     @452
    455. _GetSystemWow64DirectoryA@8                       @453 ; GetSystemWow64DirectoryA
    456. _GetSystemWow64DirectoryA@8                       @454 ; GetSystemWow64DirectoryW
    457. _GetTapeParameters@16                             @455
    458. _GetTapePosition@20                               @456
    459. _GetTapeStatus@4                                  @457
    460. _GetTempFileNameA@16                              @458
    461. _GetTempFileNameW@16                              @459
    462. _GetTempPathA@8                                   @460
    463. _GetTempPathW@8                                   @461
    464. _GetThreadContext@8                               @462
    465. _GetThreadIOPendingFlag@8                         @463
    466. _GetThreadLocale@0                                @464
    467. _GetThreadPriority@4                              @465
    468. _GetThreadPriorityBoost@8                         @466
    469. _GetThreadSelectorEntry@12                        @467
    470. _GetThreadTimes@20                                @468
    471. _GetTickCount@0                                   @469
    472. _GetTimeFormatA@24                                @470
    473. _GetTimeFormatW@24                                @471
    474. _GetTimeZoneInformation@4                         @472
    475. _GetUserDefaultLCID@0                             @473
    476. _GetUserDefaultLangID@0                           @474
    477. _GetUserDefaultUILanguage@0                       @475
    478. _GetUserGeoID@4                                   @476
    479. _GetVDMCurrentDirectories@8                       @477
    480. _GetVersion@0                                     @478
    481. _GetVersionExA@4                                  @479
    482. _GetVersionExW@4                                  @480
    483. _GetVolumeInformationA@32                         @481
    484. _GetVolumeInformationW@32                         @482
    485. _GetVolumeNameForVolumeMountPointA@12             @483
    486. _GetVolumeNameForVolumeMountPointW@12             @484
    487. _GetVolumePathNameA@12                            @485
    488. _GetVolumePathNameW@12                            @486
    489. _GetVolumePathNamesForVolumeNameA@16              @487
    490. _GetVolumePathNamesForVolumeNameW@16              @488
    491. _GetWindowsDirectoryA@8                           @489
    492. _GetWindowsDirectoryW@8                           @490
    493. _GetWriteWatch@24                                 @491
    494. _GlobalAddAtomA@4                                 @492
    495. _GlobalAddAtomW@4                                 @493
    496. _GlobalAlloc@8                                    @494
    497. _LocalCompact@4                                   @495 ; GlobalCompact
    498. _GlobalDeleteAtom@4                               @496
    499. _GlobalFindAtomA@4                                @497
    500. _GlobalFindAtomW@4                                @498
    501. _GlobalFix@4                                      @499
    502. _GlobalFlags@4                                    @500
    503. _GlobalFree@4                                     @501
    504. _GlobalGetAtomNameA@12                            @502
    505. _GlobalGetAtomNameW@12                            @503
    506. _GlobalHandle@4                                   @504
    507. _GlobalLock@4                                     @505
    508. _GlobalMemoryStatus@4                             @506
    509. _GlobalMemoryStatusEx@4                           @507
    510. _GlobalReAlloc@12                                 @508
    511. _GlobalSize@4                                     @509
    512. _GlobalUnWire@4                                   @510
    513. _GlobalUnfix@4                                    @511
    514. _GlobalUnlock@4                                   @512
    515. _GlobalWire@4                                     @513
    516. _Heap32First@12                                   @514
    517. _Heap32ListFirst@8                                @515
    518. _Heap32ListNext@8                                 @516
    519. _Heap32Next@4                                     @517
    520. HeapAlloc                                         @518
    521. _HeapCompact@8                                    @519
    522. _HeapCreate@12                                    @520
    523. _HeapCreateTagsW@16                               @521
    524. _HeapDestroy@4                                    @522
    525. _HeapExtend@16                                    @523
    526. HeapFree                                          @524
    527. _HeapLock@4                                       @525
    528. _HeapQueryInformation@20                          @526
    529. _HeapQueryTagW@20                                 @527
    530. HeapReAlloc                                       @528
    531. _HeapSetInformation@16                            @529
    532. _HeapSize@12                                      @530 ; Must be: HeapSize
    533. _HeapSummary@12                                   @531
    534. _HeapUnlock@4                                     @532
    535. _HeapUsage@20                                     @533
    536. _HeapValidate@12                                  @534
    537. _HeapWalk@8                                       @535
    538. _InitAtomTable@4                                  @536
    539. _InitializeCriticalSection@4                      @537
    540. _InitializeCriticalSectionAndSpinCount@8          @538
    541. InitializeSListHead                               @539
    542. _InterlockedCompareExchange@12                    @540
    543. _InterlockedDecrement@4                           @541
    544. _InterlockedExchange@8                            @542
    545. _InterlockedExchangeAdd@8                         @543
    546. InterlockedFlushSList                             @544
    547. _InterlockedIncrement@4                           @545
    548. InterlockedPopEntrySList                          @546
    549. InterlockedPushEntrySList                         @547
    550. _InvalidateConsoleDIBits@8                        @548
    551. _IsBadCodePtr@4                                   @549
    552. _IsBadHugeReadPtr@8                               @550
    553. _IsBadHugeWritePtr@8                              @551
    554. _IsBadReadPtr@8                                   @552
    555. _IsBadStringPtrA@8                                @553
    556. _IsBadStringPtrW@8                                @554
    557. _IsBadWritePtr@8                                  @555
    558. _IsDBCSLeadByte@4                                 @556
    559. _IsDBCSLeadByteEx@8                               @557
    560. _IsDebuggerPresent@0                              @558
    561. _IsProcessInJob@12                                @559
    562. _IsProcessorFeaturePresent@4                      @560
    563. _IsSystemResumeAutomatic@0                        @561
    564. _IsValidCodePage@4                                @562
    565. _IsValidLanguageGroup@8                           @563
    566. _IsValidLocale@8                                  @564
    567. _IsValidUILanguage@4                              @565
    568. _IsWow64Process@8                                 @566
    569. _LCMapStringA@24                                  @567
    570. _LCMapStringW@24                                  @568
    571. _LZClose@4                                        @569
    572. _LZCloseFile@4                                    @570
    573. _LZCopy@8                                         @571
    574. _LZCreateFileW@20                                 @572
    575. LZDone                                            @573 ; LZDone
    576. _LZInit@4                                         @574
    577. _LZOpenFileA@12                                   @575
    578. _LZOpenFileW@12                                   @576
    579. _LZRead@12                                        @577
    580. _LZSeek@12                                        @578
    581. _LZStart@0                                        @579
    582. LeaveCriticalSection                              @580
    583. _LoadLibraryA@4                                   @581
    584. _LoadLibraryExA@12                                @582
    585. _LoadLibraryExW@12                                @583
    586. _LoadLibraryW@4                                   @584
    587. _LoadModule@8                                     @585
    588. _LoadResource@8                                   @586
    589. _LocalAlloc@8                                     @587
    590. _LocalCompact@4                                   @588 ; LocalCompact
    591. _LocalFileTimeToFileTime@8                        @589
    592. _LocalFlags@4                                     @590
    593. _LocalFree@4                                      @591
    594. _LocalHandle@4                                    @592
    595. _LocalLock@4                                      @593
    596. _LocalReAlloc@12                                  @594
    597. _LocalShrink@8                                    @595
    598. _LocalSize@4                                      @596
    599. _LocalUnlock@4                                    @597
    600. _LockFile@20                                      @598
    601. _LockFileEx@24                                    @599
    602. _LockResource@4                                   @600 ; LockResource
    603. _MapUserPhysicalPages@12                          @601
    604. _MapUserPhysicalPagesScatter@12                   @602
    605. _MapViewOfFile@20                                 @603
    606. _MapViewOfFileEx@24                               @604
    607. _Module32First@8                                  @605
    608. _Module32FirstW@8                                 @606
    609. _Module32Next@8                                   @607
    610. _Module32NextW@8                                  @608
    611. _MoveFileA@8                                      @609
    612. _MoveFileExA@12                                   @610
    613. _MoveFileExW@12                                   @611
    614. _MoveFileW@8                                      @612
    615. _MoveFileWithProgressA@20                         @613
    616. _MoveFileWithProgressW@20                         @614
    617. _MulDiv@12                                        @615
    618. _MultiByteToWideChar@24                           @616
    619. _NlsConvertIntegerToString@20                     @617
    620. _NlsGetCacheUpdateCount@0                         @618
    621. _NlsResetProcessLocale@0                          @619
    622. _NumaVirtualQueryNode@16                          @620
    623. _OpenConsoleW@16                                  @621
    624. _OpenDataFile@8                                   @622
    625. _OpenEventA@12                                    @623
    626. _OpenEventW@12                                    @624
    627. _OpenFile@12                                      @625
    628. _OpenFileMappingA@12                              @626
    629. _OpenFileMappingW@12                              @627
    630. _OpenJobObjectA@12                                @628
    631. _OpenJobObjectW@12                                @629
    632. _OpenMutexA@12                                    @630
    633. _OpenMutexW@12                                    @631
    634. _OpenProcess@12                                   @632
    635. _OpenProfileUserMapping@0                         @633
    636. _OpenSemaphoreA@12                                @634
    637. _OpenSemaphoreW@12                                @635
    638. _OpenThread@12                                    @636
    639. _OpenWaitableTimerA@12                            @637
    640. _OpenWaitableTimerW@12                            @638
    641. _OutputDebugStringA@4                             @639
    642. _OutputDebugStringW@4                             @640
    643. _PeekConsoleInputA@16                             @641
    644. _PeekConsoleInputW@16                             @642
    645. _PeekNamedPipe@24                                 @643
    646. _PostQueuedCompletionStatus@16                    @644
    647. _PrepareTape@12                                   @645
    648. _PrivCopyFileExW@24                               @646
    649. _PrivMoveFileIdentityW@12                         @647
    650. _Process32First@8                                 @648
    651. _Process32FirstW@8                                @649
    652. _Process32Next@8                                  @650
    653. _Process32NextW@8                                 @651
    654. _ProcessIdToSessionId@8                           @652
    655. _PulseEvent@4                                     @653
    656. _PurgeComm@8                                      @654
    657. _QueryActCtxW@28                                  @655
    658. QueryDepthSList                                   @656
    659. _QueryDosDeviceA@12                               @657
    660. _QueryDosDeviceW@12                               @658
    661. _QueryInformationJobObject@20                     @659
    662. _QueryMemoryResourceNotification@8                @660
    663. _QueryPerformanceCounter@4                        @661
    664. _QueryPerformanceFrequency@4                      @662
    665. _QueryWin31IniFilesMappedToRegistry@16            @663
    666. _QueueUserAPC@12                                  @664
    667. _QueueUserWorkItem@12                             @665
    668. _RaiseException@16                                @666
    669. _ReadConsoleA@20                                  @667
    670. _ReadConsoleInputA@16                             @668
    671. _ReadConsoleInputExA@20                           @669
    672. _ReadConsoleInputExW@20                           @670
    673. _ReadConsoleInputW@16                             @671
    674. _ReadConsoleOutputA@20                            @672
    675. _ReadConsoleOutputAttribute@20                    @673
    676. _ReadConsoleOutputCharacterA@20                   @674
    677. _ReadConsoleOutputCharacterW@20                   @675
    678. _ReadConsoleOutputW@20                            @676
    679. _ReadConsoleW@20                                  @677
    680. _ReadDirectoryChangesW@32                         @678
    681. _ReadFile@20                                      @679
    682. _ReadFileEx@20                                    @680
    683. _ReadFileScatter@20                               @681
    684. _ReadProcessMemory@20                             @682
    685. _RegisterConsoleIME@8                             @683
    686. _RegisterConsoleOS2@4                             @684
    687. _RegisterConsoleVDM@44                            @685
    688. _RegisterWaitForInputIdle@4                       @686
    689. _RegisterWaitForSingleObject@24                   @687
    690. _RegisterWaitForSingleObjectEx@20                 @688
    691. _RegisterWowBaseHandlers@4                        @689
    692. _RegisterWowExec@4                                @690
    693. _ReleaseActCtx@4                                  @691
    694. _ReleaseMutex@4                                   @692
    695. _ReleaseSemaphore@12                              @693
    696. _RemoveDirectoryA@4                               @694
    697. _RemoveDirectoryW@4                               @695
    698. _RemoveLocalAlternateComputerNameA@8              @696
    699. _RemoveLocalAlternateComputerNameW@8              @697
    700. RemoveVectoredExceptionHandler                    @698
    701. _ReplaceFileW@24                                  @699 ; ReplaceFile
    702. _ReplaceFileA@24                                  @700
    703. _ReplaceFileW@24                                  @701 ; ReplaceFileW
    704. _RequestDeviceWakeup@4                            @702
    705. _RequestWakeupLatency@4                           @703
    706. _ResetEvent@4                                     @704
    707. _ResetWriteWatch@8                                @705
    708. RestoreLastError                                  @706
    709. _ResumeThread@4                                   @707
    710. RtlCaptureContext                                 @708
    711. RtlCaptureStackBackTrace                          @709
    712. RtlFillMemory                                     @710
    713. RtlMoveMemory                                     @711
    714. RtlUnwind                                         @712
    715. RtlZeroMemory                                     @713
    716. _ScrollConsoleScreenBufferA@20                    @714
    717. _ScrollConsoleScreenBufferW@20                    @715
    718. _SearchPathA@24                                   @716
    719. _SearchPathW@24                                   @717
    720. _SetCPGlobal@4                                    @718
    721. _SetCalendarInfoA@16                              @719
    722. _SetCalendarInfoW@16                              @720
    723. _SetClientTimeZoneInformation@4                   @721
    724. _SetComPlusPackageInstallStatus@4                 @722
    725. _SetCommBreak@4                                   @723
    726. _SetCommConfig@12                                 @724
    727. _SetCommMask@8                                    @725
    728. _SetCommState@8                                   @726
    729. _SetCommTimeouts@8                                @727
    730. _SetComputerNameA@4                               @728
    731. _SetComputerNameExA@8                             @729
    732. _SetComputerNameExW@8                             @730
    733. _SetComputerNameW@4                               @731
    734. _SetConsoleActiveScreenBuffer@4                   @732
    735. _SetConsoleCP@4                                   @733
    736. _SetConsoleCommandHistoryMode@4                   @734
    737. _SetConsoleCtrlHandler@8                          @735
    738. _SetConsoleCursor@8                               @736
    739. _SetConsoleCursorInfo@8                           @737
    740. _SetConsoleCursorMode@12                          @738
    741. _SetConsoleCursorPosition@8                       @739
    742. _SetConsoleDisplayMode@12                         @740
    743. _SetConsoleFont@8                                 @741
    744. _SetConsoleHardwareState@12                       @742
    745. _SetConsoleIcon@4                                 @743
    746. _SetConsoleInputExeNameA@4                        @744
    747. _SetConsoleInputExeNameW@4                        @745
    748. _SetConsoleKeyShortcuts@16                        @746
    749. _SetConsoleLocalEUDC@16                           @747
    750. _SetConsoleMaximumWindowSize@8                    @748
    751. _SetConsoleMenuClose@4                            @749
    752. _SetConsoleMode@8                                 @750
    753. _SetConsoleNlsMode@8                              @751
    754. _SetConsoleNumberOfCommandsA@8                    @752
    755. _SetConsoleNumberOfCommandsW@8                    @753
    756. _SetConsoleOS2OemFormat@4                         @754
    757. _SetConsoleOutputCP@4                             @755
    758. _SetConsolePalette@12                             @756
    759. _SetConsoleScreenBufferSize@8                     @757
    760. _SetConsoleTextAttribute@8                        @758
    761. _SetConsoleTitleA@4                               @759
    762. _SetConsoleTitleW@4                               @760
    763. _SetConsoleWindowInfo@12                          @761
    764. SetCriticalSectionSpinCount                       @762
    765. _SetCurrentDirectoryA@4                           @763
    766. _SetCurrentDirectoryW@4                           @764
    767. _SetDefaultCommConfigA@12                         @765
    768. _SetDefaultCommConfigW@12                         @766
    769. _SetDllDirectoryA@4                               @767
    770. _SetDllDirectoryW@4                               @768
    771. _SetEndOfFile@4                                   @769
    772. _SetEnvironmentVariableA@8                        @770
    773. _SetEnvironmentVariableW@8                        @771
    774. _SetErrorMode@4                                   @772
    775. _SetEvent@4                                       @773
    776. _SetFileApisToANSI@0                              @774
    777. _SetFileApisToOEM@0                               @775
    778. _SetFileAttributesA@8                             @776
    779. _SetFileAttributesW@8                             @777
    780. _SetFilePointer@16                                @778
    781. _SetFilePointerEx@20                              @779
    782. _SetFileShortNameA@8                              @780
    783. _SetFileShortNameW@8                              @781
    784. _SetFileTime@16                                   @782
    785. _SetFileValidData@12                              @783
    786. _SetFirmwareEnvironmentVariableA@16               @784
    787. _SetFirmwareEnvironmentVariableW@16               @785
    788. _GetSystemWow64DirectoryA@8                       @786 ; SetHandleContext
    789. _LockResource@4                                   @787 ; SetHandleCount
    790. _SetHandleInformation@12                          @788
    791. _SetInformationJobObject@16                       @789
    792. _SetLastConsoleEventActive@0                      @790
    793. SetLastError                                      @791
    794. _SetLocalPrimaryComputerNameA@8                   @792
    795. _SetLocalPrimaryComputerNameW@8                   @793
    796. _SetLocalTime@4                                   @794
    797. _SetLocaleInfoA@12                                @795
    798. _SetLocaleInfoW@12                                @796
    799. _SetMailslotInfo@8                                @797
    800. _SetMessageWaitingIndicator@8                     @798
    801. _SetNamedPipeHandleState@16                       @799
    802. _SetPriorityClass@8                               @800
    803. _SetProcessAffinityMask@8                         @801
    804. _SetProcessDEPPolicy@4                            @802
    805. _SetProcessPriorityBoost@8                        @803
    806. _SetProcessShutdownParameters@8                   @804
    807. _SetProcessWorkingSetSize@12                      @805
    808. _SetStdHandle@8                                   @806
    809. _SetSystemPowerState@8                            @807
    810. _SetSystemTime@4                                  @808
    811. _SetSystemTimeAdjustment@8                        @809
    812. _SetTapeParameters@12                             @810
    813. _SetTapePosition@24                               @811
    814. _SetTermsrvAppInstallMode@4                       @812
    815. _SetThreadAffinityMask@8                          @813
    816. _SetThreadContext@8                               @814
    817. _SetThreadExecutionState@4                        @815
    818. _SetThreadIdealProcessor@8                        @816
    819. _SetThreadLocale@4                                @817
    820. _SetThreadPriority@8                              @818
    821. _SetThreadPriorityBoost@8                         @819
    822. _SetThreadUILanguage@4                            @820
    823. _SetTimeZoneInformation@4                         @821
    824. _SetTimerQueueTimer@24                            @822
    825. _SetUnhandledExceptionFilter@4                    @823
    826. _SetUserGeoID@4                                   @824
    827. _SetVDMCurrentDirectories@8                       @825
    828. _SetVolumeLabelA@8                                @826
    829. _SetVolumeLabelW@8                                @827
    830. _SetVolumeMountPointA@8                           @828
    831. _SetVolumeMountPointW@8                           @829
    832. _SetWaitableTimer@24                              @830
    833. _SetupComm@12                                     @831
    834. _ShowConsoleCursor@8                              @832
    835. _SignalObjectAndWait@16                           @833
    836. _SizeofResource@8                                 @834
    837. _Sleep@4                                          @835
    838. _SleepEx@8                                        @836
    839. _SuspendThread@4                                  @837
    840. _SwitchToFiber@4                                  @838
    841. _SwitchToThread@0                                 @839
    842. _SystemTimeToFileTime@8                           @840
    843. _SystemTimeToTzSpecificLocalTime@12               @841
    844. _TerminateJobObject@8                             @842
    845. _TerminateProcess@8                               @843
    846. _TerminateThread@8                                @844
    847. _TermsrvAppInstallMode@0                          @845
    848. _Thread32First@8                                  @846
    849. _Thread32Next@8                                   @847
    850. _TlsAlloc@0                                       @848
    851. _TlsFree@4                                        @849
    852. _TlsGetValue@4                                    @850
    853. _TlsSetValue@8                                    @851
    854. _Toolhelp32ReadProcessMemory@20                   @852
    855. _TransactNamedPipe@28                             @853
    856. _TransmitCommChar@8                               @854
    857. _TrimVirtualBuffer@4                              @855
    858. TryEnterCriticalSection                           @856
    859. _TzSpecificLocalTimeToSystemTime@12               @857
    860. _UTRegister@28                                    @858
    861. _UTUnRegister@4                                   @859
    862. _UnhandledExceptionFilter@4                       @860
    863. _UnlockFile@20                                    @861
    864. _UnlockFileEx@20                                  @862
    865. _UnmapViewOfFile@4                                @863
    866. _UnregisterConsoleIME@0                           @864
    867. _UnregisterWait@4                                 @865
    868. _UnregisterWaitEx@8                               @866
    869. _UpdateResourceA@24                               @867
    870. _UpdateResourceW@24                               @868
    871. _VDMConsoleOperation@8                            @869
    872. _VDMOperationStarted@4                            @870
    873. _ValidateLCType@16                                @871
    874. _ValidateLocale@4                                 @872
    875. _VerLanguageNameA@12                              @873
    876. _VerLanguageNameW@12                              @874
    877. VerSetConditionMask                               @875
    878. _VerifyConsoleIoHandle@4                          @876
    879. _VerifyVersionInfoA@16                            @877
    880. _VerifyVersionInfoW@16                            @878
    881. _VirtualAlloc@16                                  @879
    882. _VirtualAllocEx@20                                @880
    883. _VirtualBufferExceptionHandler@12                 @881
    884. _VirtualFree@12                                   @882
    885. _VirtualFreeEx@16                                 @883
    886. _VirtualLock@8                                    @884
    887. _VirtualProtect@16                                @885
    888. _VirtualProtectEx@20                              @886
    889. _VirtualQuery@12                                  @887
    890. _VirtualQueryEx@16                                @888
    891. _VirtualUnlock@8                                  @889
    892. _WTSGetActiveConsoleSessionId@0                   @890
    893. _WaitCommEvent@12                                 @891
    894. _WaitForDebugEvent@8                              @892
    895. _WaitForMultipleObjects@16                        @893
    896. _WaitForMultipleObjectsEx@20                      @894
    897. _WaitForSingleObject@8                            @895
    898. _WaitForSingleObjectEx@12                         @896
    899. _WaitNamedPipeA@8                                 @897
    900. _WaitNamedPipeW@8                                 @898
    901. _WideCharToMultiByte@32                           @899
    902. _WinExec@8                                        @900
    903. _WriteConsoleA@20                                 @901
    904. _WriteConsoleInputA@16                            @902
    905. _WriteConsoleInputVDMA@16                         @903
    906. _WriteConsoleInputVDMW@16                         @904
    907. _WriteConsoleInputW@16                            @905
    908. _WriteConsoleOutputA@20                           @906
    909. _WriteConsoleOutputAttribute@20                   @907
    910. _WriteConsoleOutputCharacterA@20                  @908
    911. _WriteConsoleOutputCharacterW@20                  @909
    912. _WriteConsoleOutputW@20                           @910
    913. _WriteConsoleW@20                                 @911
    914. _WriteFile@20                                     @912
    915. _WriteFileEx@20                                   @913
    916. _WriteFileGather@20                               @914
    917. _WritePrivateProfileSectionA@12                   @915
    918. _WritePrivateProfileSectionW@12                   @916
    919. _WritePrivateProfileStringA@16                    @917
    920. _WritePrivateProfileStringW@16                    @918
    921. _WritePrivateProfileStructA@20                    @919
    922. _WritePrivateProfileStructW@20                    @920
    923. _WriteProcessMemory@20                            @921
    924. _WriteProfileSectionA@8                           @922
    925. _WriteProfileSectionW@8                           @923
    926. _WriteProfileStringA@12                           @924
    927. _WriteProfileStringW@12                           @925
    928. _WriteTapemark@16                                 @926
    929. _ZombifyActCtx@4                                  @927
    930. __lread@12                                        @928 ; _hread
    931. __lwrite@12                                       @929 ; _hwrite
    932. __lclose@4                                        @930
    933. __lcreat@8                                        @931
    934. __llseek@12                                       @932
    935. __lopen@8                                         @933
    936. __lread@12                                        @934 ; _lread
    937. __lwrite@12                                       @935 ; _lwrite
    938. _lstrcatA@8                                       @936 ; lstrcat
    939. _lstrcatA@8                                       @937 ; lstrcatA
    940. _lstrcatW@8                                       @938
    941. _lstrcmpA@8                                       @939 ; lstrcmp
    942. _lstrcmpA@8                                       @940 ; lstrcmpA
    943. _lstrcmpW@8                                       @941
    944. _lstrcmpiA@8                                      @942 ; lstrcmpi
    945. _lstrcmpiA@8                                      @943 ; lstrcmpiA
    946. _lstrcmpiW@8                                      @944
    947. _lstrcpyA@8                                       @945 ; lstrcpy
    948. _lstrcpyA@8                                       @946 ; lstrcpyA
    949. _lstrcpyW@8                                       @947
    950. _lstrcpynA@12                                     @948 ; lstrcpyn
    951. _lstrcpynA@12                                     @949 ; lstrcpynA
    952. _lstrcpynW@12                                     @950
    953. _lstrlenA@4                                       @951 ; lstrlen
    954. _lstrlenA@4                                       @952 ; lstrlenA
    955. _lstrlenW@4                                       @953
    Заметим, что одну строчку нам пришлось поправить вручную:

    Код (Text):
    1. _HeapSize@12                                      @530 ; Must be: HeapSize
    У «Иды» этот кусок кода представлен следующим образом:

    Код (Text):
    1. .text:7C80911A ; Exported entry 530. HeapSize
    2. .text:7C80911A                 public HeapSize
    3. .text:7C80911A ; SIZE_T __stdcall HeapSize(HANDLE hHeap, DWORD dwFlags, LPCVOID lpMem)
    4. .text:7C80911A HeapSize        db 'NTDLL.RtlSizeHeap',0 ; DATA XREF: .text:off_7C802654 o
    Т.е. мы имеем переходник на функцию из другого модуля, которая в kernel32.dll совершенно не используется, потому, видимо, Ильфак поленился вместо HeapSize написать _HeapSize@12. Поэтому это пришлось делать нам, так как иначе не проходит компиляция в lib-файл. Однако для других использованных библиотек, особенно, для такого тяжеловеса как shell32.dll, подобных правок мне делать больше не пришлось. shell32.dll это особый случай, но там у меня все прошло успешно, если не считать того, что копировать листинг этого файла через буфер обмена мне пришлось несколько раз (четырьмя кусками), так как объем листинга составлял порядка 60 мегабайт и за один раз копироваться не захотел.

    Ну, вот и всё. Полученные либы я проверил на нескольких своих ассемблерных проектах. Вроде все работает. Так что, если возникнут какие-либо нюансы, всегда можно будет подредактировать получаемые def-файлы. Ну, а чтобы из дефов получить либы, используем утилиту polib.exe из бесплатного пакета MASM32, например, с помощью командного файла def2lib.bat:

    Код (Text):
    1. SET FILENAME=kernel32
    2.  
    3. :: Создание lib файла из def файла
    4. Bin\polib /DEF:%FILENAME%.def /OUT:%FILENAME%.lib /MACHINE:X86 > a.a
    P.S. Анализируя файл kernel32.def, можно заметить, что встречаются неоднократно одинаковые имена некоторых функций (до 3-х раз), но с разными ординалами. Это говорит о том, что одному и тому же коду некоторой функции из kernel32.dll соответствует несколько различных имен и ординалов. Другими словами, можно через различные имена и ординалы обращаться к одному и тому же коду. Однако экспортирование новых имен в библиотеке kernel32.dll не происходит. Фактически происходит только экспортирование различных ординалов, поэтому и «Ида» и мы показываем для