К сожалению, никакой спецификации на него найти не удалось.
Есть только такой файл для преобразования обычного PE в StrippedPE "/data/common/pestrip.asm"
А также в "kernel/trunk/const.inc" есть определения:
Spoiler:
Code: Select all
struct STRIPPED_PE_HEADER
Signature dw ?
Characteristics dw ?
AddressOfEntryPoint dd ?
ImageBase dd ?
SectionAlignmentLog db ?
FileAlignmentLog db ?
MajorOSVersion db ?
MinorOSVersion db ?
SizeOfImage dd ?
SizeOfStackReserve dd ?
SizeOfHeapReserve dd ?
SizeOfHeaders dd ?
Subsystem db ?
NumberOfRvaAndSizes db ?
NumberOfSections dw ?
ends
STRIPPED_PE_SIGNATURE = 0x4503 ; 'PE' xor 'S'
SPE_DIRECTORY_IMPORT = 0
SPE_DIRECTORY_EXPORT = 1
SPE_DIRECTORY_BASERELOC = 2
Для примера, скомпилированный "/drivers/mouse/commouse.asm" преобразовать можно так:
Code: Select all
Set EXENAME=commouse.sys
fasm pestrip.asm %EXENAME%
В данный момент драйвера в KolibriOS имеют такой формат, кроме того, есть возможность собрать "programs/develop/libraries/console" в StrippedPE.
В принципе pestrip.asm должен преобразовывать и любые другие(не только для KolibriOS) файлы PE формата.
Утилита SPEDump выводит заголовок файла, заголовки секций, список импортируемых и экспортируемых функций.
Code: Select all
Simple Stripped PE Binary File Dumper Version 0.1; 2018.
Usage: SPEDump [<file>]
Spoiler:
Spoiler:
Code: Select all
Simple Stripped PE Binary File Dumper Version 0.1; 2018.
Dump of "/rd/1/DRIVERS/UHCI.SYS"
File header
-----------
Signature = 4503
Characteristics = 210E
AddressOfEntryPoint = 3D3
ImageBase = 400000
SectionAlignmentLog = 5
FileAlignmentLog = 5
MajorOSVersion = 3
MinorOSVersion = A
SizeOfImage = 1740
SizeOfStackReserve = 1000
SizeOfHeapReserve = 10000
SizeOfHeaders = A0
Subsystem = 1
NumberOfRvaAndSizes = 3
NumberOfSections = 3
Section #1
-----------
Name = .reloc
VirtualSize = 12A
VirtualAddress = 200
SizeOfRawData = 140
PointerToRawData = A0
Flags = 42000040
Section #2
-----------
Name = .text
VirtualSize = FFA
VirtualAddress = 340
SizeOfRawData = 1000
PointerToRawData = 1E0
Flags = 60000020
Section #3
-----------
Name = .data
VirtualSize = 3F4
VirtualAddress = 1340
SizeOfRawData = 400
PointerToRawData = 11E0
Flags = C0000000
Imports
-------
OriginalFirstThunk = 0
TimeDateStamp = 0
ForwarderChain = 0
Name = core.dll
FirstThunk = 1374
AttachIntHandler
MutexInit
MutexLock
MutexUnlock
PciRead16
PciRead8
PciWrite16
GetPhysAddr
Kmalloc
Kfree
SysMsgBoardStr
SysMsgBoard
Sleep
GetTimerTicks
RegUSBDriver
USBHCFunc
Spoiler:
Code: Select all
Simple Stripped PE Binary File Dumper Version 0.1; 2018.
Dump of "vmwgfx.dll"
File header
-----------
Signature = 4503
Characteristics = 230E
AddressOfEntryPoint = A658
ImageBase = 0
SectionAlignmentLog = C
FileAlignmentLog = 9
MajorOSVersion = 4
MinorOSVersion = 0
SizeOfImage = 1D000
SizeOfStackReserve = 200000
SizeOfHeapReserve = 100000
SizeOfHeaders = 400
Subsystem = 3
NumberOfRvaAndSizes = 3
NumberOfSections = 7
Section #1
-----------
Name = .text
VirtualSize = 14C78
VirtualAddress = 1000
SizeOfRawData = 14E00
PointerToRawData = 400
Flags = 60500060
Section #2
-----------
Name = .text.un
VirtualSize = B30
VirtualAddress = 16000
SizeOfRawData = C00
PointerToRawData = 15200
Flags = 60300020
Section #3
-----------
Name = .rdata
VirtualSize = 230
VirtualAddress = 17000
SizeOfRawData = 400
PointerToRawData = 15E00
Flags = 40300040
Section #4
-----------
Name = .data
VirtualSize = 12CC
VirtualAddress = 18000
SizeOfRawData = 1400
PointerToRawData = 16200
Flags = C0300040
Section #5
-----------
Name = .bss
VirtualSize = FC0
VirtualAddress = 1A000
SizeOfRawData = 0
PointerToRawData = 0
Flags = C0400080
Section #6
-----------
Name = .idata
VirtualSize = 3AC
VirtualAddress = 1B000
SizeOfRawData = 400
PointerToRawData = 17600
Flags = C0300040
Section #7
-----------
Name = .reloc
VirtualSize = D1C
VirtualAddress = 1C000
SizeOfRawData = E00
PointerToRawData = 17A00
Flags = 42300040
Imports
-------
OriginalFirstThunk = 1B028
TimeDateStamp = 0
ForwarderChain = 0
Name = core.dll
FirstThunk = 1B0B0
AllocKernelSpace
AllocPage
CancelTimerHS
CreateEvent
CreateThread
Delay
DestroyEvent
FreeKernelSpace
FreePage
GetCpuFreq
GetDisplay
GetService
GetTimerTicks
KernelAlloc
KernelFree
MapIoMem
MapPage
MutexInit
MutexLock
MutexUnlock
PciApi
PciRead16
PciRead32
PciRead8
PciWrite16
PciWrite32
RaiseEvent
RegService
SetScreen
SysMsgBoardStr
TimerHS
WaitEvent
WaitEventTimeout
Spoiler:
Code: Select all
Simple Stripped PE Binary File Dumper Version 0.1; 2018.
Dump of "ablockc.dll"
File header
-----------
Signature = 4503
Characteristics = 230E
AddressOfEntryPoint = 1540
ImageBase = 400000
SectionAlignmentLog = C
FileAlignmentLog = 9
MajorOSVersion = 4
MinorOSVersion = 0
SizeOfImage = 6000
SizeOfStackReserve = 100000
SizeOfHeapReserve = 100000
SizeOfHeaders = 400
Subsystem = 2
NumberOfRvaAndSizes = 3
NumberOfSections = 4
Section #1
-----------
Name = .text
VirtualSize = 124E
VirtualAddress = 1000
SizeOfRawData = 1400
PointerToRawData = 400
Flags = 60000020
Section #2
-----------
Name = .data
VirtualSize = 31C
VirtualAddress = 3000
SizeOfRawData = 200
PointerToRawData = 1800
Flags = C0000040
Section #3
-----------
Name = .link
VirtualSize = 479
VirtualAddress = 4000
SizeOfRawData = 600
PointerToRawData = 1A00
Flags = C0000040
Section #4
-----------
Name = .rloc
VirtualSize = 7C
VirtualAddress = 5000
SizeOfRawData = 200
PointerToRawData = 2000
Flags = 42000040
Imports
-------
OriginalFirstThunk = 4078
TimeDateStamp = 0
ForwarderChain = 0
Name = ADVAPI32.DLL
FirstThunk = 4110
RegOpenKeyExA
RegCloseKey
OriginalFirstThunk = 4084
TimeDateStamp = 0
ForwarderChain = 0
Name = KERNEL32.DLL
FirstThunk = 411C
CloseHandle
ExitProcess
FlushFileBuffers
GetCommandLineA
GetEnvironmentStringsA
GetLastError
GetModuleHandleA
GetStartupInfoA
GetSystemInfo
GetVersionExA
GlobalAlloc
GlobalFree
ReadFile
SetEndOfFile
SetErrorMode
SetFilePointer
SetLastError
Sleep
WriteFile
OriginalFirstThunk = 40D4
TimeDateStamp = 0
ForwarderChain = 0
Name = OLEAUT32.DLL
FirstThunk = 416C
SysAllocStringByteLen
SysFreeString
SysStringByteLen
OriginalFirstThunk = 40E4
TimeDateStamp = 0
ForwarderChain = 0
Name = USER32.DLL
FirstThunk = 417C
CreateDialogIndirectParamA
CreateDialogParamA
CreateWindowExA
DialogBoxIndirectParamA
MessageBeep
MessageBoxA
SendMessageA
DialogBoxParamA
OriginalFirstThunk = 4108
TimeDateStamp = 0
ForwarderChain = 0
Name = GDI32.DLL
FirstThunk = 41A0
MoveToEx
Exports
-------
Characteristics = 0
TimeDateStamp = 3039
MajorVersion = 0
MinorVersion = 0
Name = ABLOCKC.DLL
Base = 1
NumberOfFunctions = 2
NumberOfNames = 2
AddressOfFunctions = 4448
AddressOfNames = 4450
AddressOfNameOrdinals = 4458
LIBMAIN
QePlugIn
- dcc32 — Delphi compiler
omf2d — utility for converting from Borland omf to Intel omf
link — Microsoft linker
ld — GNU linker
objcopy — utility to convert object files
- KOLIBRIOS_PAS - path to KolibriOS.pas
KOLIBRIOS_LIB - path to KolibriOS.lib
KolibriOS.lib можно взять из темы Delphi7 examples http://board.kolibrios.org/viewtopic.php?f=33&t=3469