Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dehydratedpotato/ioreport_decompile
WIP decompile of private IOKit library, IOReport
https://github.com/dehydratedpotato/ioreport_decompile
decompiling iokit ioreg ioreport macos objective-c osx reverse-engineering
Last synced: 3 months ago
JSON representation
WIP decompile of private IOKit library, IOReport
- Host: GitHub
- URL: https://github.com/dehydratedpotato/ioreport_decompile
- Owner: dehydratedpotato
- Created: 2023-02-21T22:50:35.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2023-11-11T05:55:28.000Z (over 1 year ago)
- Last Synced: 2023-11-11T06:26:59.229Z (over 1 year ago)
- Topics: decompiling, iokit, ioreg, ioreport, macos, objective-c, osx, reverse-engineering
- Language: C
- Homepage:
- Size: 33.2 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# (WIP) IOReport decompile
## About
The **IOReport** is another undocumented thingamajig, a part of IOKit and whatnot.- **The IOReport kext** serves as a space for different parts of the system to report various metrics and counters on things, especially on Apple Silicon machines. Some data includes CPU and GPU voltage states, random Interrupt Statistics, and stinkin' histograms of stuff. This isn't a decompile of the kext, but the dylib.
- **The IOReport library** is a dylib with all the calls for reading reports and stuff.
I've done a whole lot of exploring with this thing, first learned about it from [freedomtan/test-ioreport](https://github.com/freedomtan/test-ioreport).
I then later disassimbled [powermetrics](https://www.unix.com/man-page/osx/1/powermetrics/) (made a project from that work too). Powermetrics is a cool MacOS utility that uses IOReport on Apple Silicon for fetching CPU frequencies and I learned a lot from that.
Then I took the plunge to try I decompile the dylib which got me to dig more into the kext for deeper understanding. I mostly get how it works at this point but there are certain aspects I just haven't gotten around to solving yet.
You can find references to the IOReport in source files in some [power management things](https://github.com/minombreesjeff/darwin_env/blob/142f2158ce2eb4d92b0ca9f98275ff73ea67ec0a/PowerManagement/pmconfigd/AggdDailyReport.h#L64) and you can see it's symbols in it's tbd file.
## Building to test
The test.m file is for testing the thing, obviously. Build it with the makefile. The file is pretty much just for me, but if you wanna experiment or something there ya go!