Skip to content

Commit b79d724

Browse files
committed
r0.6.5
1 parent f32a371 commit b79d724

File tree

6 files changed

+23
-10
lines changed

6 files changed

+23
-10
lines changed

AMDRyzenCPUPowerManagement/AMDRyzenCPUPowerManagement.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ bool AMDRyzenCPUPowerManagement::init(OSDictionary *dictionary){
4242

4343
pmRyzen_symtable_ready = 0;
4444

45+
find_mach_header_addr(getKernelVersion() >= KernelVersion::BigSur);
4546
pmRyzen_symtable._wrmsr_carefully = lookup_symbol("_wrmsr_carefully");
4647
pmRyzen_symtable._KUNCUserNotificationDisplayAlert = lookup_symbol("_KUNCUserNotificationDisplayAlert");
4748
pmRyzen_symtable._cpu_to_processor = lookup_symbol("_cpu_to_processor");

AMDRyzenCPUPowerManagement/AMDRyzenCPUPowerManagement.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include <Headers/kern_cpu.hpp>
1919
#include <Headers/kern_time.hpp>
2020

21+
2122
#include <Headers/kern_api.hpp>
2223
#define LILU_CUSTOM_KMOD_INIT
2324
#define LILU_CUSTOM_IOKIT_INIT

AMDRyzenCPUPowerManagement/Info.plist

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
<key>OSBundleLibraries</key>
5151
<dict>
5252
<key>as.vit9696.Lilu</key>
53-
<string>1.4.6</string>
53+
<string>1.3.9</string>
5454
<key>com.apple.iokit.IOPCIFamily</key>
5555
<string>2.9</string>
5656
<key>com.apple.kec.Libm</key>

AMDRyzenCPUPowerManagement/symresolver/kernel_resolver.c

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,30 +21,39 @@ seg_command_64_t *find_segment_64(mach_header_64_t *mh, const char *segname);
2121
load_command_t *find_load_command(mach_header_64_t *mh, uint32_t cmd);
2222
void *find_symbol(mach_header_64_t *mh, const char *name);
2323

24-
void *lookup_symbol(const char *symbol)
25-
{
24+
static uint64_t mh_base_addr = 0;
25+
26+
void find_mach_header_addr(uint8_t kc){
2627
uint64_t slide = 0;
2728
vm_offset_t slide_address = 0;
2829
vm_kernel_unslide_or_perm_external((unsigned long long)(void *)printf, &slide_address);
2930
slide = (uint64_t)(void *)printf - slide_address;
3031
uint64_t base_address = (uint64_t)slide + KERNEL_BASE;
3132

33+
if(!kc){
34+
mh_base_addr = base_address;
35+
return;
36+
}
37+
3238
mach_header_64_t* mach_header = (mach_header_64_t*)base_address;
33-
mach_header_64_t* actual_header = NULL;
3439

3540
load_command_t* lcp = (load_command_t*)(base_address + sizeof(mach_header_64_t));
3641
for (uint32_t i = 0; i < mach_header->ncmds; i++) {
3742
if (lcp->cmd == LC_SEGMENT_64) {
3843
seg_command_64_t *sc = (seg_command_64_t*)lcp;
3944
if (!strncmp(sc->segname, "__PRELINK_TEXT", sizeof(sc->segname))) {
40-
actual_header = (mach_header_64_t*)sc->vmaddr;
45+
mh_base_addr = sc->vmaddr;
4146
break;
4247
}
4348
}
4449
lcp = (load_command_t*)((uint64_t)lcp + (uint64_t)lcp->cmdsize);
4550
}
51+
}
4652

53+
void *lookup_symbol(const char *symbol)
54+
{
4755

56+
if(!mh_base_addr) return NULL;
4857
// IOLog("%s: aslr slide: 0x%0llx\n", __func__, slide);
4958
// print_pointer((void*)slide);
5059
// IOLog("%s: base address: 0x%0llx\n", __func__, base_address);
@@ -53,7 +62,7 @@ void *lookup_symbol(const char *symbol)
5362
// IOLog("%s: actual address: 0x%0llx\n", __func__, (uint64_t)actual_header);
5463
// print_pointer((void*)actual_header);
5564

56-
return find_symbol(actual_header, symbol);
65+
return find_symbol((mach_header_64_t*)mh_base_addr, symbol);
5766
}
5867

5968
seg_command_64_t *

AMDRyzenCPUPowerManagement/symresolver/kernel_resolver.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
#include <vm/vm_kern.h>
1111
#include <sys/sysctl.h>
1212

13+
14+
1315
typedef struct mach_header_64 mach_header_64_t;
1416
typedef struct load_command load_command_t;
1517
typedef struct segment_command_64 seg_command_64_t;
@@ -19,8 +21,8 @@ typedef struct symtab_command symtab_command_t;
1921
#ifdef __cplusplus
2022
extern "C" {
2123
#endif
22-
23-
void *lookup_symbol(const char *symbol);
24+
void find_mach_header_addr(uint8_t kc);
25+
void *lookup_symbol(const char *symbol);
2426
void print_pointer(void *ptr);
2527

2628
#ifdef __cplusplus

SMCAMDProcessor.xcodeproj/project.pbxproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -564,7 +564,7 @@
564564
"@executable_path/../Frameworks",
565565
);
566566
MACOSX_DEPLOYMENT_TARGET = 10.13;
567-
MARKETING_VERSION = 1.6;
567+
MARKETING_VERSION = 1.6.1;
568568
PRODUCT_BUNDLE_IDENTIFIER = "wtf.spinach.AMD-Power-Gadget";
569569
PRODUCT_NAME = "$(TARGET_NAME)";
570570
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
@@ -588,7 +588,7 @@
588588
"@executable_path/../Frameworks",
589589
);
590590
MACOSX_DEPLOYMENT_TARGET = 10.13;
591-
MARKETING_VERSION = 1.6;
591+
MARKETING_VERSION = 1.6.1;
592592
PRODUCT_BUNDLE_IDENTIFIER = "wtf.spinach.AMD-Power-Gadget";
593593
PRODUCT_NAME = "$(TARGET_NAME)";
594594
SWIFT_COMPILATION_MODE = wholemodule;

0 commit comments

Comments
 (0)