4 Replies to “Publications”

  1. Alex

    Looking forward to the article on LPC 🙂
    Can you recommend any good books to a newbie who wants to develop operating systems?

    thanks & good luck!

  2. Hi,

    There’s a lot of good sites for OS-development, although I haven’t read any books myself. OsNews.com is a good source of information on projects, and OsDever.net has some good tutorials. Also take a look at John Fine’s stuff. It’s old, but it’s what got me started. And make sure you have Intel’s Programming Manuals, especially Volume 3, since it has all the low-level information you’ll need for an OS.

  3. Found some errors in this paper, but overall, this is really good and has helped me tremendously.

    Some things I’d like to point out:

    In your Obect Info structure, you say that offset 0x34 is lpConstants (pointer to constants pool). This is incorrect. ObjectInfo structures are stored as a linked list inside the VB executable. Offset 0x34 is the NEXT pointer to the next ObjectInfo structure. Finally, the last ObjectInfo structure’s NEXT pointer in this singly-linked list points to the same location as 0x24 (lpArrMethods) for that ObjectInfo.

    Do you know any resources available that describe the FormDescriptor structure (or ModuleDescriptor structure)? I checked out Andrea Geddon’s paper, but he does not fully describe all the fields, though he (is it he? or she? My apologies if I was incorrect.), too, has a lot of good information.

    Currently, I’m trying to reverse engineer a 4MB exe for which the source code is no longer available so that it can be rewritten in .NET.

  4. INETRESTING! I was snooping round the VB EXE and found something even more interesting.

    At offset 0x34 of the ObjectInfo structure, it’s not always a pointer to NEXT. _IF_ there’s an OptionalObjectInfo structure that follows the ObjectInfo structure, the last entry of the ObjectInfo structure will instead contain a pointer to a pointer to a GUID.

    Perhaps the definition of the ObjectInfo structure needs to change to the following:

    struct ObjectInfo
    {
    USHORT wRefCount;
    USHORT wObectIndex;
    *ObjectTable lpObjectTable;
    *IdeData lpIdeData;
    *PrivateObjectDescriptor lpPrivObjDesc;
    DWORD reserved;
    DWORD unused;
    *ObjectDescriptor lpObjectDesc;
    *ProjectData lpProjectData;
    USHORT wMethodCount;
    USHORT wMethodCount2;
    *Methods lpMethods; //Couldn’t think of the syntax off the cuff… 😉
    USHORT wConstants;
    USHORT wMaxConstants;
    *IdeData lpIdeData2;
    *IdeData lpIdeData3;
    OptionalInfo optionalInfo;
    }

    union OptionalInfo
    {
    *ObjectInfo lpNext; // Pointer to next ObjectInfo in the linked list.
    struct OptionalObjectInfo
    {
    // Optional Info fields
    // Also found what appear to be 2 reference fields that occur
    // right before this structure. Looks like one is a **NextObjectInfo
    // while the other is a pointer to more GUIDs (?).
    }
    }

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.