Welcome, Guest. Please login or register.

Author Topic: Extracting OS4.x API information from publicly available executables  (Read 7185 times)

Description:

0 Members and 1 Guest are viewing this topic.

Offline PiruTopic starter

  • \' union select name,pwd--
  • Hero Member
  • *****
  • Join Date: Aug 2002
  • Posts: 6946
    • Show only replies by Piru
    • http://www.iki.fi/sintonen/
This post attempts to counter the claims that Ilkka 'itix' Lehtoranta would have somehow pirated the OS4.x development files or would have lied while developing the OS4Emu 2.0.

While I have no detailed knowledge of the OS4.x itself, I'm making some assumptions here:
1. I assume that the latest OS4 SDK includes OS 4.0 function calls and structures.
2. I assume that if some new functions or structures not included in the OS 4.0 SDK are found, they are included in the OS 4.1 SDK.

I know it might well be that OS4.0 already implements most of this functionality and that it has only stayed private for now. Regardless, since it has stayed private, one can assume it has not been deemed ready for use until the new OS4.1 release (for reasons unknown).

The claim has been that Ilkka would not have been able to obtain any information about the new function calls or OS structures without having the access to the OS4 internal and private files, which are obviously guarded quite well.
It might come as a surprise that one of the leaking binaries was in fact released by Xeron himself.

Observe:

(The following was done under linux, but the tools used are available for most platforms. Just the element names are displayed here, for brevity.)
Code: [Select]

% wget http://www.petergordon.org.uk/files/ht14.lha
% lha -xi ht14.lha HivelyTracker/Replayer/play_hvl
% readelf --debug-dump=info play_hvl | grep DW_AT_name > names.txt

Now lets examine names.txt

Exec interface:
Code: [Select]

  <10fb>     DW_AT_name        : ExecIFace
  <110a>     DW_AT_name        : Data
  <1119>     DW_AT_name        : (indirect string, offset: 0x14): Obtain
  <1127>     DW_AT_name        : (indirect string, offset: 0x1b): Release
  <1135>     DW_AT_name        : (indirect string, offset: 0x36): Expunge
  <1143>     DW_AT_name        : Clone
  <1153>     DW_AT_name        : AddHead
  <1165>     DW_AT_name        : AddMemHandler
  <117d>     DW_AT_name        : AddMemList
  <1192>     DW_AT_name        : AddTail
  <11a4>     DW_AT_name        : AllocAbs
  <11b7>     DW_AT_name        : Allocate
  <11ca>     DW_AT_name        : AllocEntry
  <11df>     DW_AT_name        : AllocMem
  <11f2>     DW_AT_name        : AllocPooled
  <1208>     DW_AT_name        : AllocVec
  <121b>     DW_AT_name        : AllocVecPooled
  <1234>     DW_AT_name        : AvailMem
  <1247>     DW_AT_name        : CopyMem
  <1259>     DW_AT_name        : CopyMemQuick
  <1271>     DW_AT_name        : CreatePool
  <1287>     DW_AT_name        : Deallocate
  <129d>     DW_AT_name        : DeletePool
  <12b3>     DW_AT_name        : Enqueue
  <12c6>     DW_AT_name        : FindName
  <12da>     DW_AT_name        : FindIName
  <12ef>     DW_AT_name        : Forbid
  <1301>     DW_AT_name        : FreeEntry
  <1316>     DW_AT_name        : FreeMem
  <1329>     DW_AT_name        : FreePooled
  <133f>     DW_AT_name        : FreeVec
  <1352>     DW_AT_name        : FreeVecPooled
  <136b>     DW_AT_name        : InitData
  <137f>     DW_AT_name        : InitStruct
  <1395>     DW_AT_name        : Insert
  <13a7>     DW_AT_name        : MakeInterface
  <13c0>     DW_AT_name        : MakeInterfaceTags
  <13dd>     DW_AT_name        : Permit
  <13ef>     DW_AT_name        : RawDoFmt
  <1403>     DW_AT_name        : RemHead
  <1416>     DW_AT_name        : RemMemHandler
  <142f>     DW_AT_name        : Remove
  <1441>     DW_AT_name        : RemTail
  <1454>     DW_AT_name        : TypeOfMem
  <1469>     DW_AT_name        : InitResident
  <1481>     DW_AT_name        : InitCode
  <1495>     DW_AT_name        : SumKickData
  <14ac>     DW_AT_name        : AddTask
  <14bf>     DW_AT_name        : AddTaskTags
  <14d6>     DW_AT_name        : Disable
  <14e9>     DW_AT_name        : Enable
  <14fb>     DW_AT_name        : Private1
  <150f>     DW_AT_name        : FindTask
  <1523>     DW_AT_name        : RemTask
  <1536>     DW_AT_name        : SetTaskPri
  <154c>     DW_AT_name        : StackSwap
  <1561>     DW_AT_name        : AllocSignal
  <1578>     DW_AT_name        : FreeSignal
  <158e>     DW_AT_name        : SetExcept
  <15a3>     DW_AT_name        : SetSignal
  <15b8>     DW_AT_name        : Signal
  <15ca>     DW_AT_name        : Wait
  <15da>     DW_AT_name        : AddPort
  <15ed>     DW_AT_name        : CreatePort
  <1603>     DW_AT_name        : CreateMsgPort
  <161c>     DW_AT_name        : DeletePort
  <1632>     DW_AT_name        : DeleteMsgPort
  <164b>     DW_AT_name        : FindPort
  <165f>     DW_AT_name        : GetMsg
  <1671>     DW_AT_name        : PutMsg
  <1683>     DW_AT_name        : RemPort
  <1696>     DW_AT_name        : ReplyMsg
  <16aa>     DW_AT_name        : WaitPort
  <16be>     DW_AT_name        : Cause
  <16cf>     DW_AT_name        : AddSemaphore
  <16e7>     DW_AT_name        : AttemptSemaphore
  <1703>     DW_AT_name        : AttemptSemaphoreShared
  <1725>     DW_AT_name        : FindSemaphore
  <173e>     DW_AT_name        : InitSemaphore
  <1757>     DW_AT_name        : ObtainSemaphore
  <1772>     DW_AT_name        : ObtainSemaphoreList
  <1791>     DW_AT_name        : ObtainSemaphoreShared
  <17b2>     DW_AT_name        : Procure
  <17c5>     DW_AT_name        : ReleaseSemaphore
  <17e1>     DW_AT_name        : ReleaseSemaphoreList
  <1801>     DW_AT_name        : RemSemaphore
  <1819>     DW_AT_name        : Vacate
  <182b>     DW_AT_name        : CreateTask
  <1841>     DW_AT_name        : CreateTaskTags
  <185b>     DW_AT_name        : DeleteTask
  <1871>     DW_AT_name        : SumLibrary
  <1887>     DW_AT_name        : CreateLibrary
  <18a0>     DW_AT_name        : CreateLibraryTags
  <18bd>     DW_AT_name        : OpenLibrary
  <18d4>     DW_AT_name        : CloseLibrary
  <18ec>     DW_AT_name        : AddLibrary
  <1902>     DW_AT_name        : RemLibrary
  <1918>     DW_AT_name        : AddDevice
  <192d>     DW_AT_name        : RemDevice
  <1942>     DW_AT_name        : GetInterface
  <195a>     DW_AT_name        : GetInterfaceTags
  <1976>     DW_AT_name        : DropInterface
  <198f>     DW_AT_name        : AddInterface
  <19a7>     DW_AT_name        : RemInterface
  <19bf>     DW_AT_name        : SumInterface
  <19d7>     DW_AT_name        : FindResident
  <19ef>     DW_AT_name        : SetMethod
  <1a04>     DW_AT_name        : DeleteInterface
  <1a1f>     DW_AT_name        : DeleteLibrary
  <1a38>     DW_AT_name        : SetFunction
  <1a4f>     DW_AT_name        : CacheClearE
  <1a66>     DW_AT_name        : CacheClearU
  <1a7d>     DW_AT_name        : MakeFunctions
  <1a96>     DW_AT_name        : OpenDevice
  <1aac>     DW_AT_name        : CloseDevice
  <1ac3>     DW_AT_name        : CreateIORequest
  <1ade>     DW_AT_name        : DeleteIORequest
  <1af9>     DW_AT_name        : AbortIO
  <1b0c>     DW_AT_name        : CheckIO
  <1b1f>     DW_AT_name        : DoIO
  <1b2f>     DW_AT_name        : SendIO
  <1b41>     DW_AT_name        : BeginIO
  <1b54>     DW_AT_name        : WaitIO
  <1b66>     DW_AT_name        : AddResource
  <1b7d>     DW_AT_name        : RemResource
  <1b94>     DW_AT_name        : OpenResource
  <1bac>     DW_AT_name        : AddIntServer
  <1bc4>     DW_AT_name        : RemIntServer
  <1bdc>     DW_AT_name        : SetIntVector
  <1bf4>     DW_AT_name        : ObtainQuickVector
  <1c11>     DW_AT_name        : Alert
  <1c22>     DW_AT_name        : SuperState
  <1c38>     DW_AT_name        : UserState
  <1c4d>     DW_AT_name        : Supervisor
  <1c63>     DW_AT_name        : SetTaskTrap
  <1c7a>     DW_AT_name        : AllocTrap
  <1c8f>     DW_AT_name        : FreeTrap
  <1ca3>     DW_AT_name        : GetCC
  <1cb4>     DW_AT_name        : SetSR
  <1cc5>     DW_AT_name        : AVL_AddNode
  <1cdc>     DW_AT_name        : AVL_FindFirstNode
  <1cf9>     DW_AT_name        : AVL_FindLastNode
  <1d15>     DW_AT_name        : AVL_FindNextNodeByAddress
  <1d3a>     DW_AT_name        : AVL_FindNextNodeByKey
  <1d5b>     DW_AT_name        : AVL_FindNode
  <1d73>     DW_AT_name        : AVL_FindPrevNodeByAddress
  <1d98>     DW_AT_name        : AVL_FindPrevNodeByKey
  <1db9>     DW_AT_name        : AVL_RemNodeByAddress
  <1dd9>     DW_AT_name        : AVL_RemNodeByKey
  <1df5>     DW_AT_name        : CacheControl
  <1e0d>     DW_AT_name        : LockMem
  <1e20>     DW_AT_name        : UnlockMem
  <1e35>     DW_AT_name        : ReallocVec
  <1e4b>     DW_AT_name        : CachePreDMA
  <1e62>     DW_AT_name        : CachePostDMA
  <1e7a>     DW_AT_name        : StartDMA
  <1e8e>     DW_AT_name        : EndDMA
  <1ea0>     DW_AT_name        : GetDMAList
  <1eb6>     DW_AT_name        : AddTrackable
  <1ece>     DW_AT_name        : FindTrackable
  <1ee7>     DW_AT_name        : RemTrackable
  <1eff>     DW_AT_name        : DeleteTrackable
  <1f1a>     DW_AT_name        : AllocSysObject
  <1f34>     DW_AT_name        : AllocSysObjectTags
  <1f52>     DW_AT_name        : FreeSysObject
  <1f6b>     DW_AT_name        : SuspendTask
  <1f82>     DW_AT_name        : RestartTask
  <1f99>     DW_AT_name        : MoveList
  <1fad>     DW_AT_name        : NewList
  <1fc0>     DW_AT_name        : NewMinList
  <1fd6>     DW_AT_name        : ColdReboot
  <1fec>     DW_AT_name        : MakeLibrary
  <2003>     DW_AT_name        : Emulate
  <2016>     DW_AT_name        : EmulateTags
  <202d>     DW_AT_name        : DebugPrintF
  <2044>     DW_AT_name        : IsNative
  <2058>     DW_AT_name        : Private2
  <206c>     DW_AT_name        : Private3
  <2080>     DW_AT_name        : GetCPUInfo
  <2096>     DW_AT_name        : GetCPUInfoTags
  <20b0>     DW_AT_name        : OwnerOfMem
  <20c6>     DW_AT_name        : AddResetCallback
  <20e2>     DW_AT_name        : RemResetCallback
  <20fe>     DW_AT_name        : ItemPoolAlloc
  <2117>     DW_AT_name        : ItemPoolFree
  <212f>     DW_AT_name        : ItemPoolGC
  <2145>     DW_AT_name        : ItemPoolControl
  <2160>     DW_AT_name        : ItemPoolControlTags
  <217f>     DW_AT_name        : ItemPoolFlush
  <2198>     DW_AT_name        : GetHead
  <21ab>     DW_AT_name        : GetTail
  <21be>     DW_AT_name        : GetSucc
  <21d1>     DW_AT_name        : GetPred
  <21e4>     DW_AT_name        : IceColdReboot
  <21fd>     DW_AT_name        : Private4
  <2211>     DW_AT_name        : Private5
  <2225>     DW_AT_name        : Private6
  <2239>     DW_AT_name        : Private7
  <224d>     DW_AT_name        : Private8
  <2261>     DW_AT_name        : Private9
  <2275>     DW_AT_name        : Private10
  <228a>     DW_AT_name        : Private11
  <229f>     DW_AT_name        : Private12
  <22b4>     DW_AT_name        : Private13
  <22c9>     DW_AT_name        : Private14
  <22de>     DW_AT_name        : Private15
  <22f3>     DW_AT_name        : Private16
  <2308>     DW_AT_name        : Private17
  <231d>     DW_AT_name        : Private18
  <2332>     DW_AT_name        : Private19
  <2347>     DW_AT_name        : Private20
  <235c>     DW_AT_name        : Private21
  <2371>     DW_AT_name        : Obsolete1
  <2386>     DW_AT_name        : Obsolete2
  <239b>     DW_AT_name        : Obsolete3
  <23b0>     DW_AT_name        : RMapAlloc
  <23c5>     DW_AT_name        : RMapFree
  <23d9>     DW_AT_name        : Private22
  <23ee>     DW_AT_name        : Private23
  <2403>     DW_AT_name        : Private24
  <2418>     DW_AT_name        : AllocVecTagList
  <2433>     DW_AT_name        : AllocVecTags
  <244b>     DW_AT_name        : Private25
  <2460>     DW_AT_name        : RMapExtAlloc
  <2478>     DW_AT_name        : RMapExtFree
  <248f>     DW_AT_name        : Private26
  <24a4>     DW_AT_name        : AllocNamedMemory
  <24c0>     DW_AT_name        : AllocNamedMemoryTags
  <24e0>     DW_AT_name        : FreeNamedMemory
  <24fb>     DW_AT_name        : FindNamedMemory
  <2516>     DW_AT_name        : UpdateNamedMemory
  <2533>     DW_AT_name        : LockNamedMemory
  <254f>     DW_AT_name        : AttemptNamedMemory
  <256e>     DW_AT_name        : UnlockNamedMemory
  <258c>     DW_AT_name        : ScanNamedMemory
  <25a8>     DW_AT_name        : AllocTaskMemEntry
  <25c6>     DW_AT_name        : Private27
  <25dc>     DW_AT_name        : Private28
  <25f2>     DW_AT_name        : Private29
  <2608>     DW_AT_name        : Private30
  <261e>     DW_AT_name        : MutexObtain
  <2636>     DW_AT_name        : MutexAttempt
  <264f>     DW_AT_name        : MutexRelease
  <2668>     DW_AT_name        : MutexAttemptWithSignal
  <268b>     DW_AT_name        : NewStackRun
  <26a3>     DW_AT_name        : NewStackRunTags

DOS structure apparently related to the new 64bit stuff:
Code: [Select]

  <8b45>     DW_AT_name        : ExamineData
  <8b55>     DW_AT_name        : EXDnode
  <8b67>     DW_AT_name        : EXDinfo
  <8b79>     DW_AT_name        : FSPrivate
  <8b8d>     DW_AT_name        : DOSPrivate
  <8ba2>     DW_AT_name        : StructSize
  <8bb7>     DW_AT_name        : Type
  <8bc6>     DW_AT_name        : FileSize
  <8bd9>     DW_AT_name        : Date
  <8be8>     DW_AT_name        : UseCount
  <8bfb>     DW_AT_name        : (indirect string, offset: 0xb0): Reserved1
  <8c09>     DW_AT_name        : ObjectID
  <8c1c>     DW_AT_name        : Name
  <8c2b>     DW_AT_name        : NameSize
  <8c3e>     DW_AT_name        : Comment
  <8c50>     DW_AT_name        : CommentSize
  <8c66>     DW_AT_name        : Link
  <8c75>     DW_AT_name        : LinkSize
  <8c88>     DW_AT_name        : Protection
  <8c9d>     DW_AT_name        : OwnerUID
  <8cb0>     DW_AT_name        : OwnerGID

DOS interface:
Code: [Select]

      DW_AT_name        : DOSIFace
      DW_AT_name        : Data
      DW_AT_name        : (indirect string, offset: 0x8d): Obtain
      DW_AT_name        : (indirect string, offset: 0x63): Release
      DW_AT_name        : (indirect string, offset: 0x75): Expunge
      DW_AT_name        : Clone
      DW_AT_name        : Open
      DW_AT_name        : Close
      DW_AT_name        : Read
      DW_AT_name        : Write
      DW_AT_name        : Input
      DW_AT_name        : Output
      DW_AT_name        : Seek
      DW_AT_name        : DeleteFile
      DW_AT_name        : Rename
      DW_AT_name        : Lock
      DW_AT_name        : UnLock
      DW_AT_name        : DupLock
      DW_AT_name        : Examine
      DW_AT_name        : ExNext
      DW_AT_name        : Info
      DW_AT_name        : CreateDir
      DW_AT_name        : CurrentDir
      DW_AT_name        : IoErr
      DW_AT_name        : CreateProc
      DW_AT_name        : OBSOLETEExit
      DW_AT_name        : OBSOLETELoadSeg
      DW_AT_name        : UnLoadSeg
      DW_AT_name        : (indirect string, offset: 0xb0): Reserved1
      DW_AT_name        : LoadSeg
      DW_AT_name        : DeviceProc
      DW_AT_name        : SetComment
      DW_AT_name        : SetProtection
      DW_AT_name        : (indirect string, offset: 0x6b): DateStamp
      DW_AT_name        : Delay
      DW_AT_name        : WaitForChar
      DW_AT_name        : ParentDir
      DW_AT_name        : IsInteractive
      DW_AT_name        : Execute
      DW_AT_name        : AllocDosObject
      DW_AT_name        : AllocDosObjectTagList
      DW_AT_name        : AllocDosObjectTags
      DW_AT_name        : FreeDosObject
      DW_AT_name        : DoPkt
      DW_AT_name        : DoPkt0
      DW_AT_name        : DoPkt1
      DW_AT_name        : DoPkt2
      DW_AT_name        : DoPkt3
      DW_AT_name        : DoPkt4
      DW_AT_name        : SendPkt
      DW_AT_name        : WaitPkt
      DW_AT_name        : ReplyPkt
      DW_AT_name        : (indirect string, offset: 0xba): Reserved2
      DW_AT_name        : LockRecord
      DW_AT_name        : LockRecords
      DW_AT_name        : UnLockRecord
      DW_AT_name        : UnLockRecords
      DW_AT_name        : SelectInput
      DW_AT_name        : SelectOutput
      DW_AT_name        : FGetC
      DW_AT_name        : FPutC
      DW_AT_name        : UnGetC
      DW_AT_name        : FRead
      DW_AT_name        : FWrite
      DW_AT_name        : FGets
      DW_AT_name        : FPuts
      DW_AT_name        : OBSOLETEVFWritef
      DW_AT_name        : OBSOLETEFWritef
      DW_AT_name        : VFPrintf
      DW_AT_name        : FPrintf
      DW_AT_name        : FFlush
      DW_AT_name        : SetVBuf
      DW_AT_name        : DupLockFromFH
      DW_AT_name        : OpenFromLock
      DW_AT_name        : ParentOfFH
      DW_AT_name        : ExamineFH
      DW_AT_name        : SetFileDate
      DW_AT_name        : NameFromLock
      DW_AT_name        : NameFromFH
      DW_AT_name        : SplitName
      DW_AT_name        : SameLock
      DW_AT_name        : SetMode
      DW_AT_name        : ExAll
      DW_AT_name        : ReadLink
      DW_AT_name        : MakeLink
      DW_AT_name        : ChangeMode
      DW_AT_name        : SetFileSize
      DW_AT_name        : SetIoErr
      DW_AT_name        : Fault
      DW_AT_name        : PrintFault
      DW_AT_name        : ErrorReport
      DW_AT_name        : PRIVATERequester
      DW_AT_name        : Cli
      DW_AT_name        : CreateNewProc
      DW_AT_name        : CreateNewProcTagList
      DW_AT_name        : CreateNewProcTags
      DW_AT_name        : RunCommand
      DW_AT_name        : GetConsoleTask
      DW_AT_name        : SetConsoleTask
      DW_AT_name        : GetFileSysTask
      DW_AT_name        : SetFileSysTask
      DW_AT_name        : GetArgStr
      DW_AT_name        : SetArgStr
      DW_AT_name        : FindCliProc
      DW_AT_name        : MaxCli
      DW_AT_name        : SetCurrentDirName
      DW_AT_name        : GetCurrentDirName
      DW_AT_name        : SetProgramName
      DW_AT_name        : GetProgramName
      DW_AT_name        : SetPrompt
      DW_AT_name        : GetPrompt
      DW_AT_name        : SetProgramDir
      DW_AT_name        : GetProgramDir
      DW_AT_name        : SystemTagList
      DW_AT_name        : System
      DW_AT_name        : SystemTags
      DW_AT_name        : AssignLock
      DW_AT_name        : AssignLate
      DW_AT_name        : AssignPath
      DW_AT_name        : AssignAdd
      DW_AT_name        : RemAssignList
      DW_AT_name        : GetDeviceProc
      DW_AT_name        : FreeDeviceProc
      DW_AT_name        : LockDosList
      DW_AT_name        : UnLockDosList
      DW_AT_name        : AttemptLockDosList
      DW_AT_name        : RemDosEntry
      DW_AT_name        : AddDosEntry
      DW_AT_name        : FindDosEntry
      DW_AT_name        : NextDosEntry
      DW_AT_name        : MakeDosEntry
      DW_AT_name        : FreeDosEntry
      DW_AT_name        : IsFileSystem
      DW_AT_name        : Format
      DW_AT_name        : Relabel
      DW_AT_name        : Inhibit
      DW_AT_name        : AddBuffers
      DW_AT_name        : CompareDates
      DW_AT_name        : DateToStr
      DW_AT_name        : StrToDate
      DW_AT_name        : OBSOLETEInternalLoadSeg
      DW_AT_name        : OBSOLETEInternalUnLoadSeg
      DW_AT_name        : OBSOLETENewLoadSeg
      DW_AT_name        : OBSOLETENewLoadSegTagList
      DW_AT_name        : OBSOLETENewLoadSegTags
      DW_AT_name        : AddSegment
      DW_AT_name        : FindSegment
      DW_AT_name        : RemSegment
      DW_AT_name        : CheckSignal
      DW_AT_name        : ReadArgs
      DW_AT_name        : FindArg
      DW_AT_name        : ReadItem
      DW_AT_name        : StrToLong
      DW_AT_name        : MatchFirst
      DW_AT_name        : MatchNext
      DW_AT_name        : MatchEnd
      DW_AT_name        : ParsePattern
      DW_AT_name        : MatchPattern
      DW_AT_name        : (indirect string, offset: 0xc4): Reserved3
      DW_AT_name        : FreeArgs
      DW_AT_name        : (indirect string, offset: 0x83): Reserved4
      DW_AT_name        : FilePart
      DW_AT_name        : PathPart
      DW_AT_name        : AddPart
      DW_AT_name        : StartNotify
      DW_AT_name        : EndNotify
      DW_AT_name        : SetVar
      DW_AT_name        : GetVar
      DW_AT_name        : DeleteVar
      DW_AT_name        : FindVar
      DW_AT_name        : PRIVATECliInit
      DW_AT_name        : CliInitNewcli
      DW_AT_name        : CliInitRun
      DW_AT_name        : WriteChars
      DW_AT_name        : PutStr
      DW_AT_name        : VPrintf
      DW_AT_name        : Printf
      DW_AT_name        : Reserved5
      DW_AT_name        : ParsePatternNoCase
      DW_AT_name        : MatchPatternNoCase
      DW_AT_name        : PRIVATEDosGetString
      DW_AT_name        : SameDevice
      DW_AT_name        : ExAllEnd
      DW_AT_name        : SetOwner
      DW_AT_name        : GetEntryData
      DW_AT_name        : ReadLineItem
      DW_AT_name        : ReadLineItemTags
      DW_AT_name        : PRIVATEInternalRunCommand
      DW_AT_name        : GetCurrentDir
      DW_AT_name        : NonBlockingModifyDosEntry
      DW_AT_name        : SecondsToDateStamp
      DW_AT_name        : DateStampToSeconds
      DW_AT_name        : FixDateStamp
      DW_AT_name        : AddDates
      DW_AT_name        : SubtractDates
      DW_AT_name        : AddSegmentTagList
      DW_AT_name        : ParseCapturePattern
      DW_AT_name        : CapturePattern
      DW_AT_name        : ReleaseCapturedExpressions
      DW_AT_name        : FindTrackedAddress
      DW_AT_name        : TrackAddressList
      DW_AT_name        : TrackSegmentList
      DW_AT_name        : UnTrackAddress
      DW_AT_name        : UnTrackSegmentList
      DW_AT_name        : GetExitData
      DW_AT_name        : PutErrStr
      DW_AT_name        : ErrorOutput
      DW_AT_name        : SelectErrorOutput
      DW_AT_name        : MountDevice
      DW_AT_name        : MountDeviceTags
      DW_AT_name        : SetProcWindow
      DW_AT_name        : FindSegmentStackSize
      DW_AT_name        : CalculateSegmentChecksum
      DW_AT_name        : AllocSegList
      DW_AT_name        : GetSegListInfo
      DW_AT_name        : GetSegListInfoTags
      DW_AT_name        : AddSegListTail
      DW_AT_name        : DevNameFromLock
      DW_AT_name        : GetProcMsgPort
      DW_AT_name        : WaitForData
      DW_AT_name        : SetBlockingMode
      DW_AT_name        : SetCurrentCmdPathList
      DW_AT_name        : AllocateCmdPathList
      DW_AT_name        : FreeCmdPathList
      DW_AT_name        : RemoveCmdPathNode
      DW_AT_name        : AddCmdPathNode
      DW_AT_name        : SearchCmdPathList
      DW_AT_name        : SearchCmdPathListTags
      DW_AT_name        : ScanVars
      DW_AT_name        : GetProcSegList
      DW_AT_name        : HexToLong
      DW_AT_name        : GetDeviceProcFlags
      DW_AT_name        : DosControl
      DW_AT_name        : DosControlTags
      DW_AT_name        : CreateDirTree
      DW_AT_name        : NotifyVar
      DW_AT_name        : GetDiskFileSystemData
      DW_AT_name        : FreeDiskFileSystemData
      DW_AT_name        : FOpen
      DW_AT_name        : FClose
      DW_AT_name        : FOpenFromLock
      DW_AT_name        : Reserved6
      DW_AT_name        : TimedDosRequester
      DW_AT_name        : TimedDosRequesterTags
      DW_AT_name        : RenameDosEntry
      DW_AT_name        : DismountDevice
      DW_AT_name        : DupFileHandle
      DW_AT_name        : DevNameFromFH
      DW_AT_name        : AssignAddToList
      DW_AT_name        : SetFileHandleAttr
      DW_AT_name        : SetFileHandleAttrTags
      DW_AT_name        : FileSystemAttr
      DW_AT_name        : FileSystemAttrTags
      DW_AT_name        : FReadLine
      DW_AT_name        : CopyStringBSTRToC
      DW_AT_name        : CopyStringCToBSTR
      DW_AT_name        : GetFilePosition
      DW_AT_name        : ChangeFilePosition
      DW_AT_name        : ChangeFileSize
      DW_AT_name        : GetFileSize
      DW_AT_name        : Reserved7
      DW_AT_name        : PRIVATEDoPkt64
      DW_AT_name        : Reserved8
      DW_AT_name        : Reserved9
      DW_AT_name        : Reserved10
      DW_AT_name        : ProcessScan
      DW_AT_name        : NotifyDosListChange
      DW_AT_name        : NotifyProcListChange
      DW_AT_name        : GetDiskInfo
      DW_AT_name        : GetDiskInfoTags
      DW_AT_name        : WriteProtectVolume
      DW_AT_name        : ExamineObject
      DW_AT_name        : ExamineObjectTags
      DW_AT_name        : ExamineDir
      DW_AT_name        : ObtainDirContext
      DW_AT_name        : ObtainDirContextTags
      DW_AT_name        : ReleaseDirContext
      DW_AT_name        : Reserved11
      DW_AT_name        : Reserved12
      DW_AT_name        : Reserved13

Notes

There are interface functions embedded that are not included in the latest OS4 SDK.
There are structures embedded that are not included in the latest OS4 SDK.
The binary does not need to use the new functionality. It merely was built with the -ggdb debug switch which includes DWARF2 debug information for all the structures. This makes any binary built with -ggdb leak the SDK includes it was built with.
 

Offline Hans_

Re: Extracting OS4.x API information from publicly available executables
« Reply #1 on: July 19, 2008, 06:34:47 PM »
Aren't you posting this on the wrong site? I don't remember seeing any discussion about this on amiga.org.

Hans
Join the Kea Campus - upgrade your skills; support my work; enjoy the Amiga corner.
https://keasigmadelta.com/ - see more of my work
 

Offline Framiga

  • Hero Member
  • *****
  • Join Date: May 2003
  • Posts: 4096
    • Show only replies by Framiga
Re: Extracting OS4.x API information from publicly available executables
« Reply #2 on: July 19, 2008, 06:40:57 PM »
:popcorn:
 

Offline PiruTopic starter

  • \' union select name,pwd--
  • Hero Member
  • *****
  • Join Date: Aug 2002
  • Posts: 6946
    • Show only replies by Piru
    • http://www.iki.fi/sintonen/
Re: Extracting OS4.x API information from publicly available executables
« Reply #3 on: July 19, 2008, 06:42:28 PM »
@Hans_

1. http://www.amiga.org/forums/showthread.php?t=47455
2. I don't have an account on aw.net.
3. aw.net has (temporarily?) removed the discussion. [EDIT] It's  back now [/EDIT]
4. aw.net removed a thread linking to this post.
 

Offline Trev

  • Hero Member
  • *****
  • Join Date: May 2003
  • Posts: 1550
  • Country: 00
    • Show only replies by Trev
Re: Extracting OS4.x API information from publicly available executables
« Reply #4 on: July 19, 2008, 07:10:54 PM »
Since when is reverse engineering piracy? It still irks me that the term "piracy" was co-opted by the software industry in the first place.

Of course, commenting on the actions of a few megalomaniac moderators does nothing but legitimize their stance. ;-) (In the sense that it feeds their egos.)

So, who's going to publish Undocumented Amiga OS 4?
 

Offline xeron

  • Hero Member
  • *****
  • Join Date: Mar 2002
  • Posts: 2533
    • Show only replies by xeron
    • http://www.petergordon.org.uk
Re: Extracting OS4.x API information from publicly available executables
« Reply #5 on: July 19, 2008, 07:12:40 PM »
@Piru

OS4Emu claims to support OS4.1 specific features. The SDK that executable was compiled with does not have any OS4.1 specific anything at all. Every single thing in the SDK that i used to compile that is fully supported in OS4.0 final.
Playstation Network ID: xeron6
 

Offline PiruTopic starter

  • \' union select name,pwd--
  • Hero Member
  • *****
  • Join Date: Aug 2002
  • Posts: 6946
    • Show only replies by Piru
    • http://www.iki.fi/sintonen/
Re: Extracting OS4.x API information from publicly available executables
« Reply #6 on: July 19, 2008, 07:16:52 PM »
@xeron

But you agree that it does include things that are not available in the public OS4 SDK?

If that is the case, how could Ilkka possibly know that this new stuff isn't OS 4.1 specific, or meant to be released officially only with OS 4.1 release and the new OS 4.1 SDK?
 

Offline xeron

  • Hero Member
  • *****
  • Join Date: Mar 2002
  • Posts: 2533
    • Show only replies by xeron
    • http://www.petergordon.org.uk
Re: Extracting OS4.x API information from publicly available executables
« Reply #7 on: July 19, 2008, 07:19:05 PM »
OK, fine. But i'm telling you that i know for a fact that it isn't, and therefore itix is basing the feature list of OS4Emu on pure guesswork, and he guessed wrong.
Playstation Network ID: xeron6
 

Offline Trev

  • Hero Member
  • *****
  • Join Date: May 2003
  • Posts: 1550
  • Country: 00
    • Show only replies by Trev
Re: Extracting OS4.x API information from publicly available executables
« Reply #8 on: July 19, 2008, 07:19:26 PM »
@xeron

In the grand scheme of things, does it matter? The release of OS4.1 is imminent. Hell, even Hyperion's claim to ownership of the operating system is being challenged. Shouldn't *all* OS4.x related posts be removed until the law suit is resolved?

EDIT:

He's being penalized and humilitated for "guessing wrong?" Gee, that's a wonderful way to treat a fellow enthusiast.

And now I'll sit back and thumb through my copy of Andrew Schulman's Undocumented DOS, a book that ushered in a new era of competition against Microsoft.
 

Offline xeron

  • Hero Member
  • *****
  • Join Date: Mar 2002
  • Posts: 2533
    • Show only replies by xeron
    • http://www.petergordon.org.uk
Re: Extracting OS4.x API information from publicly available executables
« Reply #9 on: July 19, 2008, 07:22:12 PM »
No it doesn't matter. I fully agree that the discussion was blown waaaay out of proportion. I just wanted to point out that OS4Emu probably doesn't support OS4.1 specific API features, people seemed to get very touchy and hostile because i questioned it, that annoyed me and it blew up from there.

Edit: Penalised and humiliated is a bit extreme. But then AmigaZeux purposefully try to wind people up, and guess what, it works.
Playstation Network ID: xeron6
 

Offline PiruTopic starter

  • \' union select name,pwd--
  • Hero Member
  • *****
  • Join Date: Aug 2002
  • Posts: 6946
    • Show only replies by Piru
    • http://www.iki.fi/sintonen/
Re: Extracting OS4.x API information from publicly available executables
« Reply #10 on: July 19, 2008, 07:24:24 PM »
@xeron

So can we agree now that Itix isn't:
A) a liar or
B) pirate
?

(He might be a bad guesser though, but who wouldn't have guessed wrong from time to time)
 

Offline xeron

  • Hero Member
  • *****
  • Join Date: Mar 2002
  • Posts: 2533
    • Show only replies by xeron
    • http://www.petergordon.org.uk
Re: Extracting OS4.x API information from publicly available executables
« Reply #11 on: July 19, 2008, 07:26:04 PM »
OK, whatever.

I apologise for being wound up by the whole thing, i didn't set out to be so hostile, but people jumped on my initial comment and that annoyed me.
Playstation Network ID: xeron6
 

Offline xeron

  • Hero Member
  • *****
  • Join Date: Mar 2002
  • Posts: 2533
    • Show only replies by xeron
    • http://www.petergordon.org.uk
Re: Extracting OS4.x API information from publicly available executables
« Reply #12 on: July 19, 2008, 07:33:25 PM »
Quote

Trev wrote:
Since when is reverse engineering piracy?


BTW, at no point did I ever say reverse engineering is piracy. As someone who writes Wii Homebrew, that would be somewhat hypocritical ;-)
Playstation Network ID: xeron6
 

Offline itix

  • Hero Member
  • *****
  • Join Date: Oct 2002
  • Posts: 2380
    • Show only replies by itix
Re: Extracting OS4.x API information from publicly available executables
« Reply #13 on: July 19, 2008, 07:49:26 PM »
@Xeron

I have to admit that I made lot of assumptions about 4.1 but adding 4.1 compatibility line was too tempting. AFAIK universal notifications and automatic expunge does not add new DOS vectors. 64bit DOS support might add some new vectors but binary which I got few weeks ago did not reveal anything new so I thought it only completes existing API calls I knew about.

It is largely based on guesswork rather than cold hard facts but I have noted that betatesters get an access to the latest OS4 SDK always and they also update their SDK very often. Therefore it seemed good assumption that OS4Emu 2.0 has 4.1 API calls also.

OS4Emu itself does not add or implement any new functionality. It just only wraps OS4 calls to native MorphOS calls, translates taglists and so on. API compatible is not same as feature compatible: for example ExamineDir() is 64bit in MorphOS 2.0 but 32bit in MorphOS 1.x -- OS4Emu does not magically bring 64bit dos functionality to MorphOS 1.x users.
My Amigas: A500, Mac Mini and PowerBook
 

Offline Karlos

  • Sockologist
  • Global Moderator
  • Hero Member
  • *****
  • Join Date: Nov 2002
  • Posts: 16879
  • Country: gb
  • Thanked: 5 times
    • Show only replies by Karlos
Re: Extracting OS4.x API information from publicly available executables
« Reply #14 on: July 19, 2008, 07:56:41 PM »
Well, at least someone is developing something on their amigaos/compatible machines. Which is more than I've done in a long while :-(
int p; // A