{"id":21557298,"url":"https://github.com/sweeticelolly/my_first_driver","last_synced_at":"2025-04-30T11:25:43.681Z","repository":{"id":159225868,"uuid":"235252555","full_name":"SweetIceLolly/My_First_Driver","owner":"SweetIceLolly","description":"Hello world from kernel!","archived":false,"fork":false,"pushed_at":"2020-01-21T18:08:24.000Z","size":45,"stargazers_count":6,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-30T15:47:02.361Z","etag":null,"topics":["driver","hello-world","kernel","kernel-driver","kmdf","tutorial"],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SweetIceLolly.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-01-21T04:01:59.000Z","updated_at":"2025-03-30T05:49:40.000Z","dependencies_parsed_at":"2023-07-29T16:15:11.353Z","dependency_job_id":null,"html_url":"https://github.com/SweetIceLolly/My_First_Driver","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SweetIceLolly%2FMy_First_Driver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SweetIceLolly%2FMy_First_Driver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SweetIceLolly%2FMy_First_Driver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SweetIceLolly%2FMy_First_Driver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SweetIceLolly","download_url":"https://codeload.github.com/SweetIceLolly/My_First_Driver/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251689704,"owners_count":21627963,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["driver","hello-world","kernel","kernel-driver","kmdf","tutorial"],"created_at":"2024-11-24T08:11:54.139Z","updated_at":"2025-04-30T11:25:43.648Z","avatar_url":"https://github.com/SweetIceLolly.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# My_First_Driver\nHello world from kernel!\n\n# [KmdfHelloWorld](KmdfHelloWorld) folder\nThis is my first kernel-mode driver. It does the following things:\n1. Say hello to you when it is loaded\n2. Handle major functions (IRP). Specifically, `IRP_MJ_CREATE`, `IRP_MJ_CLOSE`, and `IRP_MJ_WRITE`\n3. Setup an IO device so you can communicate with it\n4. For IRP_MJ_WRITE: the driver will obtain the received buffer and output it\n\nThe driver does nothing meaningful but it is meaningful to me :)\n\nA valuable experience.\n\n# [DriverTester](DriverTester) folder\nThis is my first driver loader. It does the following things:\n1. Ask you to input the driver (.sys) file\n2. Create service\n3. Start service\n4. Get an IO handle to the driver\n5. Allow you to type the message to be sent to the driver\n6. Close the IO handle\n7. Stop service\n8. Delete service\n\nThis driver tester is used to test the [KmdfHelloWorld](KmdfHelloWorld) driver.\n\nAgain, this program does nothing meaningful but it is meaningful to me :)\n\nA valuable experience, too.\n\n# Acknowledgment/Credits\nI found [this helpful tutorial](https://www.unknowncheats.me/forum/c-and-c/59147-writing-drivers-perform-kernel-level-ssdt-hooking.html), which helped me a lot. I followed the tutorial to implement my programs. Thank you for the valuable and detailed tutorial! ❤\n\nI tried to follow the tutorial to implement SSDT hook but I failed because my driver is x64 :(\n\nI heard that `KeServiceDescriptorTable` is not exported on x64 systems, so I can't do that on my computer :(\n\nI also tried some [methods](https://github.com/conix-security/zer0m0n/blob/master/src/driver/x64/hook.c#L96) but it didn't work :(\n\nAnyway, this is my first driver. I hope you can find what you need in this repo :)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsweeticelolly%2Fmy_first_driver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsweeticelolly%2Fmy_first_driver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsweeticelolly%2Fmy_first_driver/lists"}