Jump to content
8 posts in this topic

Recommended Posts

Hi all — Kernel Inspector has had a good run of updates since the 1.1.0 post; the latest is 1.1.4. It still opens a .kext bundle or any Mach-O binary and lets you dig through it (think a lightweight Hopper), but the Hackintosh side has grown a lot: it generates SSDTs, derives OpenCore patches from your own machine, and maps USB ports — on top of the install/maintenance chores it already did. And as of 1.1.4 it updates itself — it tells you when a new build is out and installs it in one click (details below).

Download: https://github.com/luminadevapps/KernelInspector/releases


Source: https://github.com/luminadevapps/KernelInspector

 

 IN 1.1.0
- SSDT Generator — pick your hardware, generate the maintenance SSDTs (AWAC, PMC, USBX, EC, PNLF, GPRW, RHUB, ALS0…), compile DSL → AML with iasl, then install the .aml straight into a mounted OpenCore EFI and register it under config.plist → ACPI → Add. It even adds the required renames (EC→EC0, _GPRW→XGPW) for you.
- USB Ports — live view of your USB controllers from IOKit. Toggle which ports to keep, set each connector type, and auto-trim to the 15-port cap.
- XCPM / CPU — the verified CPU power-management + topology patch set (AppleXcpmExtraMsrs, AppleCpuPmCfgLock, core-count fixes). Copy any entry as a config.plist patch, or verify it against your live Kernel Collection after a macOS update.
- Port-Limit Patch — derives the XHCI port-limit patch from real bytes (a loaded binary or your live Kernel Collection) instead of a hard-coded pattern that only matches one build, with an optional universal (masked) variant.
- Install Kexts now also targets a mounted OpenCore EFI and can restore AppleHDA on Tahoe via a KDK root patch; Maintenance gained per-volume config.plist access.

WHAT IT DOES
Analyze
- Info.plist — kext identifier, version, UUID, linked libs, full searchable Info.plist
- Hex Editor — byte view with hex find & replace and patch-to-file
- Symbols — full nlist_64 table with global/local/undefined/debug filters
- Disassembly — ARM64 / x86-64 of __text, colour-coded by branch/call/return
- Control Flow — per-function basic-block graph
- Pseudocode — heuristic pseudo-C (readability aid, not a decompiler)
- Port-Limit Patch — derive an XHCI port-limit OpenCore patch from real bytes
System (Hackintosh)
- Install Kexts — readiness dashboard (SIP / macOS build / target / cache tool), install a .kext to /Library/Extensions or into your OpenCore EFI (auto-adds Kernel→Add + plugins to config.plist, backs it up first), rebuild caches, restore AppleHDA (Tahoe/KDK), uninstall
- Maintenance — ESP-mounter style EFI partition mount/unmount, Kernel Debug Kit manager, per-volume config.plist viewer, APFS snapshot cleanup
- USB Ports — live IOKit port map with keep/trim and the 15-port cap check
- XCPM / CPU — verified CPU/XCPM patch set, checked against your live kernel
- SSDT Generator — generate, compile and install OpenCore SSDTs from your hardware
All privileged steps use the standard macOS admin prompt — the app never sees your password.

INSTALL
1. Download KernelInspector-1.1.4.dmg from the Releases page
2. Drag Kernel Inspector into Applications
3. First launch only: right-click → Open → Open (it's ad-hoc signed, not notarized)
After that first launch, updates are automatic — the app tells you when a new build is out and installs it for you (see NEW IN 1.1.4).
Needs macOS 13+ and the Xcode Command Line Tools (xcode-select --install) — the disassembler shells out to otool/llvm-objdump. The SSDT Generator's compile step needs iasl (e.g. brew install acpica).

NOTES
Pseudocode/CFG are heuristic. Parser targets 64-bit Mach-O. The XCPM/CPU patches are verified on a specific machine (i9-13900K, macOS 26.x) — always re-verify against your own kernel after an update. The port-limit patch is a temporary aid for USB mapping; drop it once you've built a proper USBMap. It's a study/RE + Hackintosh aid for hardware you own. Feedback and bug reports welcome — cheers!

 IN 1.1.1
- Disassembly — new "Go to" box: jump to any address (0x…) or a function by name (Return or ⌘G); the line you land on is highlighted.
- Disassembly — Symbols are now clickable: click one to jump straight to it in the disassembly.
- Disassembly — Filter and Go-to are now separate fields, and an empty filter explains itself instead of showing a blank list.
- USB Ports — exported USBPorts.kext now uses AppleUSBXHCIPCI matching, kUSBMuxEnabled, and the full port/type keys, so maps attach correctly. "Ports per controller" now sets the exported port-count.
- USB Ports — new "Import from kext…": load the full port set from an existing USBMap.kext / USBPorts.kext, enable what you need, and export.
Download: https://github.com/luminadevapps/KernelInspector/releases/download/v1.1.1/KernelInspector-1.1.1.dmg

 IN 1.1.2
- Automatic updates — Kernel Inspector now checks GitHub on launch and lets you know when a newer build is out. A one-click Download & Install grabs the new DMG, swaps the app in place, and relaunches it — no dragging. Also available any time from Kernel Inspector → Check for Updates…. Draft/pre-release builds are ignored; Later defers the reminder, Skip This Version hides a specific release.

 IN 1.1.4
- Automatic updates — install & relaunch is now fully reliable: the app quits cleanly past the update dialog and relaunches itself into the new version. If it can't write to its own location it falls back to opening the download page instead.
- Reliability fixes across the updater.
Download: https://github.com/luminadevapps/KernelInspector/releases/download/v1.1.4/KernelInspector-1.1.4.dmg


 

 

Screenshot2026-07-26at19_03_45.thumb.png.f6755ab58d26940384d2c07b69a8bc64.png

 

Screenshot2026-07-26at19_16_51.thumb.png.d0f69687e66b37f9b33631d0cc8534ac.png

Screenshot2026-07-26at19_16_58.thumb.png.2a3a1becac02380086fc042686dccf3c.png

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

Edited by Luminadevapps
  • Like 3

Great work!

Will be nice to have a column with a hex value of the instruction before disassemble.

address |  hex         | instruction

0x1234     0x0bfe     BR .-2

It was in HopperD version 3 but escaped in new versions.

  • Like 2

Hi all 👋

Started as a simple kext / Mach-O analyzer (Info.plist, hex, symbols, disassembly, control flow, pseudocode) and grew into a full toolbox:

  • Mount EFI + install kexts and auto-register them in config.plist
  • SSDT generator (compiles to .aml with iasl)
  • XHCI port-limit patch — reads your live kernel and spits out the exact Find/Replace + config.plist entry for yourbuild. Optional masked mode so it survives macOS updates.
  • USB port viewer + map exporter
  • XCPM / CPU patch verifier — one click tells you if your CPU patches still match after an update

Screenshot2026-07-23at08_33_54.thumb.png.440cdde07fc82efe2ef0a282bd10d53f.png

 

Screenshot2026-07-23at08_35_49.thumb.png.bfd797fcb2bbda7ba2ae654c526f2f52.png

 

Screenshot2026-07-23at08_36_01.thumb.png.16c0e76a3f39438cd1ca140246b24587.png

 

 

Screenshot 2026-07-23 at 08.35.27.png

 

The whole idea: stop hunting for byte patterns that break on every macOS update — derive them from your own kernel and verify them in seconds.

Running great here on Z790 + i9-13900K, macOS 26.5. Still improving it — what would you want added?

Edited by Luminadevapps
On 7/21/2026 at 2:29 AM, Slice said:

Great work!

Will be nice to have a column with a hex value of the instruction before disassemble.

address |  hex         | instruction

0x1234     0x0bfe     BR .-2

It was in HopperD version 3 but escaped in new versions.

Thanks! 🙏 Great suggestion — just added it. New Hex column in the Disassembly view (Address | Hex | Instruction), Hopper-v3 style. You can even filter by the hex bytes now to jump straight to an instruction. Screenshot below 👇

Screenshot2026-07-23at09_13_45.thumb.png.ce6df71b0db1feaf86d4b953faf090d6.png

 

Screenshot2026-07-23at09_14_05.thumb.png.1a82351779067b3b6097f0e35bf74664.png

 

 

  • Like 2
  • Thanks 1

Hi all — Kernel Inspector just got a big update (1.1.0). It still opens a .kext bundle or any Mach-O binary and lets you dig through it (think a lightweight Hopper), but the Hackintosh side has grown a lot: it now generates SSDTs, derives OpenCore patches from your own machine, and maps USB ports — on top of the install/maintenance chores it already did.

Download: https://github.com/luminadevapps/KernelInspector/releases
Source: https://github.com/luminadevapps/KernelInspector


NEW IN 1.1.0

- SSDT Generator — pick your hardware, generate the maintenance SSDTs (AWAC, PMC, USBX, EC, PNLF, GPRW, RHUB, ALS0…), compile DSL → AML with iasl, then install the .aml straight into a mounted OpenCore EFI and register it under config.plist → ACPI → Add. It even adds the required renames (EC→EC0, _GPRW→XGPW) for you.
- USB Ports — live view of your USB controllers from IOKit. Toggle which ports to keep, set each connector type, and auto-trim to the 15-port cap.
- XCPM / CPU — the verified CPU power-management + topology patch set (AppleXcpmExtraMsrs, AppleCpuPmCfgLock, core-count fixes). Copy any entry as a config.plist patch, or verify it against your live Kernel Collection after a macOS update.
- Port-Limit Patch — derives the XHCI port-limit patch from real bytes (a loaded binary or your live Kernel Collection) instead of a hard-coded pattern that only matches one build, with an optional universal (masked) variant.
- Install Kexts now also targets a mounted OpenCore EFI and can restore AppleHDA on Tahoe via a KDK root patch; Maintenance gained per-volume config.plist access.


WHAT IT DOES

Analyze
- Info.plist — kext identifier, version, UUID, linked libs, full searchable Info.plist
- Hex Editor — byte view with hex find & replace and patch-to-file
- Symbols — full nlist_64 table with global/local/undefined/debug filters
- Disassembly — ARM64 / x86-64 of __text, colour-coded by branch/call/return
- Control Flow — per-function basic-block graph
- Pseudocode — heuristic pseudo-C (readability aid, not a decompiler)
- Port-Limit Patch — derive an XHCI port-limit OpenCore patch from real bytes

System (Hackintosh)
- Install Kexts — readiness dashboard (SIP / macOS build / target / cache tool), install a .kext to /Library/Extensions or into your OpenCore EFI (auto-adds Kernel→Add + plugins to config.plist, backs it up first), rebuild caches, restore AppleHDA (Tahoe/KDK), uninstall
- Maintenance — ESP-mounter style EFI partition mount/unmount, Kernel Debug Kit manager, per-volume config.plist viewer, APFS snapshot cleanup
- USB Ports — live IOKit port map with keep/trim and the 15-port cap check
- XCPM / CPU — verified CPU/XCPM patch set, checked against your live kernel
- SSDT Generator — generate, compile and install OpenCore SSDTs from your hardware

All privileged steps use the standard macOS admin prompt — the app never sees your password.


INSTALL

1. Download KernelInspector-1.1.0.dmg from the Releases page
2. Drag Kernel Inspector into Applications
3. First launch only: right-click → Open → Open (it's ad-hoc signed, not notarized)

Needs macOS 13+ and the Xcode Command Line Tools (xcode-select --install) — the disassembler shells out to otool/llvm-objdump. The SSDT Generator's compile step needs iasl (e.g. brew install acpica).


NOTES

Pseudocode/CFG are heuristic. Parser targets 64-bit Mach-O. The XCPM/CPU patches are verified on a specific machine (i9-13900K, macOS 26.x) — always re-verify against your own kernel after an update. The port-limit patch is a temporary aid for USB mapping; drop it once you've built a proper USBMap. It's a study/RE + Hackintosh aid for hardware you own. Feedback and bug reports welcome — cheers!
Screenshot2026-07-25at08_13_40.thumb.png.32dbe29f31c8e4d42a967bf885cae7c6.png

 

Screenshot2026-07-25at08_14_03.thumb.png.023fd411123c292b626373d94e7e4291.png

 

Screenshot2026-07-25at08_14_29.thumb.png.9f6d5a4d81c63e958c7ac594b5b458b3.png

 

Screenshot2026-07-25at08_14_44.thumb.png.f83edaa64b5f81712453f8d2678e9e31.png

 

Screenshot2026-07-25at08_15_03.thumb.png.0536c7da2df197bd20ce9a20424d03a0.png

 

Screenshot2026-07-25at08_15_17.thumb.png.bc32840913f5f9a4bb828db4fe9819b7.png

 

Screenshot2026-07-25at08_15_26.thumb.png.6a16408bee02910ac63c29cf251997c1.png

 

Screenshot2026-07-25at08_17_09.thumb.png.bd3c226e27c75ca53890735a7302e598.png

 

Screenshot2026-07-25at08_17_22.thumb.png.702eecef8adaa6483028d77736d2ebaa.png

 

Screenshot 2026-07-25 at 08.16.49.png

On 7/25/2026 at 4:12 PM, Luminadevapps said:

Hi all — Kernel Inspector just got a big update (1.1.0). It still opens a .kext bundle or any Mach-O binary and lets you dig through it (think a lightweight Hopper), but the Hackintosh side has grown a lot: it now generates SSDTs, derives OpenCore patches from your own machine, and maps USB ports — on top of the install/maintenance chores it already did.

Download: https://github.com/luminadevapps/KernelInspector/releases
Source: https://github.com/luminadevapps/KernelInspector


NEW IN 1.1.0

- SSDT Generator — pick your hardware, generate the maintenance SSDTs (AWAC, PMC, USBX, EC, PNLF, GPRW, RHUB, ALS0…), compile DSL → AML with iasl, then install the .aml straight into a mounted OpenCore EFI and register it under config.plist → ACPI → Add. It even adds the required renames (EC→EC0, _GPRW→XGPW) for you.
- USB Ports — live view of your USB controllers from IOKit. Toggle which ports to keep, set each connector type, and auto-trim to the 15-port cap.
- XCPM / CPU — the verified CPU power-management + topology patch set (AppleXcpmExtraMsrs, AppleCpuPmCfgLock, core-count fixes). Copy any entry as a config.plist patch, or verify it against your live Kernel Collection after a macOS update.
- Port-Limit Patch — derives the XHCI port-limit patch from real bytes (a loaded binary or your live Kernel Collection) instead of a hard-coded pattern that only matches one build, with an optional universal (masked) variant.
- Install Kexts now also targets a mounted OpenCore EFI and can restore AppleHDA on Tahoe via a KDK root patch; Maintenance gained per-volume config.plist access.


WHAT IT DOES

Analyze
- Info.plist — kext identifier, version, UUID, linked libs, full searchable Info.plist
- Hex Editor — byte view with hex find & replace and patch-to-file
- Symbols — full nlist_64 table with global/local/undefined/debug filters
- Disassembly — ARM64 / x86-64 of __text, colour-coded by branch/call/return
- Control Flow — per-function basic-block graph
- Pseudocode — heuristic pseudo-C (readability aid, not a decompiler)
- Port-Limit Patch — derive an XHCI port-limit OpenCore patch from real bytes

System (Hackintosh)
- Install Kexts — readiness dashboard (SIP / macOS build / target / cache tool), install a .kext to /Library/Extensions or into your OpenCore EFI (auto-adds Kernel→Add + plugins to config.plist, backs it up first), rebuild caches, restore AppleHDA (Tahoe/KDK), uninstall
- Maintenance — ESP-mounter style EFI partition mount/unmount, Kernel Debug Kit manager, per-volume config.plist viewer, APFS snapshot cleanup
- USB Ports — live IOKit port map with keep/trim and the 15-port cap check
- XCPM / CPU — verified CPU/XCPM patch set, checked against your live kernel
- SSDT Generator — generate, compile and install OpenCore SSDTs from your hardware

All privileged steps use the standard macOS admin prompt — the app never sees your password.


INSTALL

1. Download KernelInspector-1.1.0.dmg from the Releases page
2. Drag Kernel Inspector into Applications
3. First launch only: right-click → Open → Open (it's ad-hoc signed, not notarized)

Needs macOS 13+ and the Xcode Command Line Tools (xcode-select --install) — the disassembler shells out to otool/llvm-objdump. The SSDT Generator's compile step needs iasl (e.g. brew install acpica).


NOTES

Pseudocode/CFG are heuristic. Parser targets 64-bit Mach-O. The XCPM/CPU patches are verified on a specific machine (i9-13900K, macOS 26.x) — always re-verify against your own kernel after an update. The port-limit patch is a temporary aid for USB mapping; drop it once you've built a proper USBMap. It's a study/RE + Hackintosh aid for hardware you own. Feedback and bug reports welcome — cheers!
Screenshot2026-07-25at08_13_40.thumb.png.32dbe29f31c8e4d42a967bf885cae7c6.png

 

Screenshot2026-07-25at08_14_03.thumb.png.023fd411123c292b626373d94e7e4291.png

 

Screenshot2026-07-25at08_14_29.thumb.png.9f6d5a4d81c63e958c7ac594b5b458b3.png

 

Screenshot2026-07-25at08_14_44.thumb.png.f83edaa64b5f81712453f8d2678e9e31.png

 

Screenshot2026-07-25at08_15_03.thumb.png.0536c7da2df197bd20ce9a20424d03a0.png

 

Screenshot2026-07-25at08_15_17.thumb.png.bc32840913f5f9a4bb828db4fe9819b7.png

 

Screenshot2026-07-25at08_15_26.thumb.png.6a16408bee02910ac63c29cf251997c1.png

 

Screenshot2026-07-25at08_17_09.thumb.png.bd3c226e27c75ca53890735a7302e598.png

 

Screenshot2026-07-25at08_17_22.thumb.png.702eecef8adaa6483028d77736d2ebaa.png

 

Screenshot 2026-07-25 at 08.16.49.png

I tested.

How to go to an address?

Or to a function begin?

  • Like 1
8 hours ago, Slice said:

I tested.

How to go to an address?

Or to a function begin?

Good suggestion — I've added this in the latest build.

There are now two ways to jump around in the Disassembly view:

Go to box — there's a field in the Disassembly toolbar (the one with the ⇥ arrow and a "Go" button). Type a hex address like 0x3EB0 (the 0x is optional) and it jumps straight there. Type a function name instead — e.g. _decode — and it jumps to that function's first instruction. Exact name matches win, otherwise it takes the first partial match. Press Return or ⌘G to trigger it, and it highlights the line it lands on.

Click a symbol — open the Symbols tab and just click any function in the list. It switches to Disassembly and jumps right to that function's start.

If the exact address falls inside an instruction it snaps to the next one, so a mid-function address still lands somewhere sensible. Let me know if that covers what you were after.

https://github.com/luminadevapps/KernelInspector/releases/download/v1.1.1/KernelInspector-1.1.1.dmg

 

Screenshot 2026-07-26 at 19.03.45.png

Screenshot 2026-07-26 at 19.16.39.png

Screenshot 2026-07-26 at 19.16.51.png

Screenshot 2026-07-26 at 19.16.58.png

  • Thanks 1

 IN 1.1.4
- Automatic updates — install & relaunch is now fully reliable: the app quits cleanly past the update dialog and relaunches itself into the new version. If it can't write to its own location it falls back to opening the download page instead.
- Reliability fixes across the updater.
Download: https://github.com/luminadevapps/KernelInspector/releases/download/v1.1.4/KernelInspector-1.1.4.dmg

  • Like 1
×
×
  • Create New...