Code Monkey home page Code Monkey logo

vergiliusproject / vergilius-project Goto Github PK

View Code? Open in Web Editor NEW
158.0 158.0 32.0 18.45 MB

This project provides a collection of Microsoft Windows kernel structures, unions and enumerations. Most of them are not officially documented and cannot be found in Windows Driver Kit (WDK) headers. The target audience of this site is driver developers and kernel researches.

Home Page: https://www.vergiliusproject.com

Java 57.63% CSS 15.22% Shell 0.35% Pug 26.80%

vergilius-project's People

Contributors

revjay avatar sergiusthebest avatar u32luke avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

vergilius-project's Issues

struct _MIPFNBLINK incorrect offsets.

Version

Edition Windows 10 Pro
Version 20H2
OS build 19042.746

lkd> version
Windows 10 Kernel Version 19041 MP (8 procs) Free x64
Product: WinNt, suite: TerminalServer SingleUserTS
Edition build lab: 19041.1.amd64fre.vb_release.191206-1406

Problem

Home / Kernels / x64 / Windows 10 | 2016 / 2009 20H2 (October 2020 Update) / _MIPFNBLINK
build: 10.0.19041.508 - I'm not sure if the reason for the change is in the build version.
date: 2020-09-27

Described structure

incorrect offsets

Fix solution

Move the fields ShareCount, PageShareCountDeleteBit, PageShareCountLockBit to a separate structure inside the union.

//0x8 bytes (sizeof)
    struct _MIPFNBLINK
    {
        union
        {
            struct
            {
                ULONGLONG Blink : 36;                                             //0x0
                ULONGLONG NodeBlinkHigh : 20;                                     //0x0
                ULONGLONG TbFlushStamp : 4;                                       //0x0
                ULONGLONG Unused : 2;                                             //0x0
                ULONGLONG PageBlinkDeleteBit : 1;                                 //0x0
                ULONGLONG PageBlinkLockBit : 1;                                   //0x0
            };
            struct
            {
                ULONGLONG ShareCount : 62;                                        //0x0
                ULONGLONG PageShareCountDeleteBit : 1;                            //0x0
                ULONGLONG PageShareCountLockBit : 1;                              //0x0
            };
            ULONGLONG EntireField;                                              //0x0
            volatile LONGLONG Lock;                                             //0x0
            struct
            {
                ULONGLONG LockNotUsed : 62;                                       //0x0
                ULONGLONG DeleteBit : 1;                                          //0x0
                ULONGLONG LockBit : 1;                                            //0x0
            };
        };
    };

fixed offsets

Ability to switch between x86 and x64 quickly

I often find myself looking at an x64 version of a structure and quickly want to check the x86 version for the same Windows release. My default instinct is always to swap the value in URL, but because the paths differ this doesn't typically work.

Ex:

It would be nice if the URLs used consistent paths across architectures or a button was added to quickly switch to the same Windows version and structure on the other architecture.

Add ARM64 data

it seems Microsoft treats ARM64 seriously, so it makes sense to add ARM64 kernel structure too.

Export to C header file

sometimes is needed to get the struct in a C header file - for loading it to Ida Pro or something.
However there are a lot of dependencies for each struct and in could lead for a dependencies hell trying to this manually.
An Export feature will be great

No Support for Diffing Releases

Having something like what the Terminus Project supports for readily showing changes made to a structure over time might be useful. At the moment one has to copy the text into a file and then diff these changes manually which is not a huge issue but from a usability perspective this could be done server side.

_ADAPTER_OBJECT is empty

However it the raw data it's not:

    name: _ADAPTER_OBJECT
    id: 1339
    kind: STRUCT
    sizeof: 640
    data:
      -
        name: AdapterObject
        id: 1340
        offset: 0
        ordinal: 0

API to retrieve structs

I’m interested whether or not it’s possible to retrieve structs based on Windows version from your website using an API.

[Feature request] Search structure by its size

Possibility to search by the size of a structure would help in cases when you know its size but not which structure it exactly is(or which possible structures there are with that size).

Thank you!

Add Support for Dumping Additional Data Types using DIA SDK

Right now the DIA SDK is only being run against ntoskrnl.exe, and not against other files such as win32kfull.sys. This means that often times more undocumented or hidden structures aren't being picked up and documented, despite tools from Microsoft themselves being available to gather this information.

Would like to propose that updates be made so that this tool is run against these extra files and the information be uploaded to the public website.

Speaking to the maintainers I was told that whilst one can do this with dia2dump.exe, they are using their own custom tool which uses the same DIA SDK that dia2dump.exe uses but outputs the data into YAML for easier parsing.

Feature request: diff view between kernel versions

As mentioned in issue #3, the ability to view differences between kernels would be very welcomed.
It helps interested readers to distinguish changes, especially when there's a git-alike diff view between structs.

union _KIDTENTRY64 different from Intel manual and WinDbg

VERSION
Windows 10 21H1

PROBLEM

the current union _KIDTENTRY64 is different from WinDbg and Intel Manual (p.3014 of 4778)
IDT_Descriptor

FIX

//0x10 bytes (sizeof)
union _KIDTENTRY64
{
    struct
    {
        USHORT OffsetLow;                                                   //0x0
        USHORT Selector;                                                    //0x2
        struct
        {
            USHORT IstIndex:3;                                              //0x4
            USHORT Reserved0:5;                                             //0x4
            USHORT Type:5;                                                  //0x4
            USHORT Dpl:2;                                                   //0x4
            USHORT Present:1;                                               //0x4
        };
                                                                                                             
        USHORT OffsetMiddle;                                                //0x6
        ULONG OffsetHigh;                                                   //0x8
        ULONG Reserved1;                                                    //0xc
    };
    ULONGLONG Alignment;                                                    //0x0
}; 

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.