Skip to content

Commit

Permalink
bazel: Fix bitrotted migration for injector and IOUserClient for Darw…
Browse files Browse the repository at this point in the history
…inKit
  • Loading branch information
YungRaj committed Dec 14, 2024
1 parent 554740c commit 6c2f2d0
Show file tree
Hide file tree
Showing 10 changed files with 51 additions and 49 deletions.
4 changes: 2 additions & 2 deletions BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ genrule(
cd ..
cp capstone/libcapstone.a libcapstone_x86_64_universal.a
cd capstone
export ARCH=arm64
export ARCH=arm64e
export CFLAGS="-target $$ARCH-apple-macos"
export CXXFLAGS="-target $$ARCH-apple-macos"
export LDFLAGS="-target $$ARCH-apple-macos"
Expand Down Expand Up @@ -126,7 +126,7 @@ cc_library(
glob(["darwinkit/*.cc"]) +
glob(["arm64/*.s"]) +
glob(["arm64/*.cc"]) +
glob(["x86_64/*.cc"]),
glob(["x86_64/*.cc"]),
hdrs = glob(["user/*.h"]) + glob(["darwinkit/*.h"]) + glob(["arm64/*.h"]) + glob(["x86_64/*.h"]) + glob(["capstone/include/capstone/*.h"]),
includes = [
"user",
Expand Down
12 changes: 6 additions & 6 deletions kernel/kernel.cc
Original file line number Diff line number Diff line change
Expand Up @@ -82,23 +82,23 @@ UInt8 Kernel::tempExecutableMemory[tempExecutableMemorySize]
Kernel* Kernel::kernel = nullptr;

Kernel* Kernel::Create(xnu::mach::Port kernel_task_port) {
if (!kernel)
if (!kernel) {
kernel = new Kernel(kernel_task_port);

}
return kernel;
}

Kernel* Kernel::Create(xnu::mach::VmAddress cache, xnu::mach::VmAddress base, Offset slide) {
if (!kernel)
if (!kernel) {
kernel = new Kernel(cache, base, slide);

}
return kernel;
}

Kernel* Kernel::Create(xnu::mach::VmAddress base, Offset slide) {
if (!kernel)
if (!kernel) {
kernel = new Kernel(base, slide);

}
return kernel;
}

Expand Down
6 changes: 3 additions & 3 deletions kernel/kernel_darwin_kit.cc
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ static bool loaded = false;

OSDefineMetaClassAndStructors(IOKernelDarwinKitService, IOService)

bool IOKernelDarwinKitService::init(OSDictionary* properties) {
bool IOKernelDarwinKitService::init(OSDictionary* properties) {
userClients = OSSet::withCapacity(1);

if (!userClients)
Expand Down Expand Up @@ -137,7 +137,7 @@ IOReturn IOKernelDarwinKitService::createUserClient(task_t task, void* securityI

IOKernelDarwinKitUserClient* userClient;

userClient = IOKernelDarwinKitUserClient::rootKitUserClientWithKernel(kernel, task,
userClient = IOKernelDarwinKitUserClient::darwinKitUserClientWithKernel(kernel, task,
securityID, type);

if (userClient)
Expand All @@ -155,7 +155,7 @@ IOReturn IOKernelDarwinKitService::createUserClient(task_t task, void* securityI

IOKernelDarwinKitUserClient* userClient;

userClient = IOKernelDarwinKitUserClient::rootKitUserClientWithKernel(
userClient = IOKernelDarwinKitUserClient::darwinKitUserClientWithKernel(
kernel, task, securityID, type, properties);

if (userClient)
Expand Down
4 changes: 2 additions & 2 deletions kernel/kernel_darwin_kit.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@ extern darwin::DarwinKit* darwinkit_get_darwinkit();

class IOKernelDarwinKitService : public IOService {
OSDeclareDefaultStructors(IOKernelDarwinKitService)

public : virtual bool init(OSDictionary* properties) override;
public:
virtual bool init(OSDictionary* properties) override;

virtual void free() override;

Expand Down
22 changes: 12 additions & 10 deletions kernel/kernel_darwin_kit_user_client.cc
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ extern "C" {

OSDefineMetaClassAndStructors(IOKernelDarwinKitUserClient, IOUserClient)

IOKernelDarwinKitUserClient* IOKernelDarwinKitUserClient::rootKitUserClientWithKernel(
IOKernelDarwinKitUserClient* IOKernelDarwinKitUserClient::darwinKitUserClientWithKernel(
xnu::Kernel* kernel, task_t owningTask, void* securityToken, UInt32 type) {
IOKernelDarwinKitUserClient* client;

Expand All @@ -54,7 +54,7 @@ IOKernelDarwinKitUserClient* IOKernelDarwinKitUserClient::rootKitUserClientWithK
return client;
}

IOKernelDarwinKitUserClient* IOKernelDarwinKitUserClient::rootKitUserClientWithKernel(
IOKernelDarwinKitUserClient* IOKernelDarwinKitUserClient::darwinKitUserClientWithKernel(
xnu::Kernel* kernel, task_t owningTask, void* securityToken, UInt32 type,
OSDictionary* properties) {
IOKernelDarwinKitUserClient* client;
Expand All @@ -73,32 +73,34 @@ IOKernelDarwinKitUserClient* IOKernelDarwinKitUserClient::rootKitUserClientWithK
return client;
}

bool IOKernelDarwinKitUserClient::initDarwinKitUserClientWithKernel(xnu::Kernel* kernel,
bool IOKernelDarwinKitUserClient::initDarwinKitUserClientWithKernel(xnu::Kernel* kern,
task_t owningTask,
void* securityToken, UInt32 type) {
bool result = IOUserClient::initWithTask(owningTask, securityToken, type);

if (!kernel)
result = false;
kernel = kern;

kernel = kernel;
if (!kernel) {
result = false;
}

clientTask = owningTask;
kernelTask = *(task_t*)kernel->GetSymbolAddressByName("_kernel_task");

return result;
}

bool IOKernelDarwinKitUserClient::initDarwinKitUserClientWithKernel(xnu::Kernel* kernel,
bool IOKernelDarwinKitUserClient::initDarwinKitUserClientWithKernel(xnu::Kernel* kern,
task_t owningTask,
void* securityToken, UInt32 type,
OSDictionary* properties) {
bool result = IOUserClient::initWithTask(owningTask, securityToken, type, properties);

if (!kernel)
result = false;
kernel = kern;

kernel = kernel;
if (!kernel) {
result = false;
}

clientTask = owningTask;
kernelTask = *(task_t*)kernel->GetSymbolAddressByName("_kernel_task");
Expand Down
8 changes: 4 additions & 4 deletions kernel/kernel_darwin_kit_user_client.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,20 +42,20 @@ class IOKernelDarwinKitService;
class IOKernelDarwinKitUserClient : public IOUserClient {
OSDeclareDefaultStructors(IOKernelDarwinKitUserClient)
public:
static IOKernelDarwinKitUserClient* rootKitUserClientWithKernel(xnu::Kernel* kernel,
static IOKernelDarwinKitUserClient* darwinKitUserClientWithKernel(xnu::Kernel* kern,
task_t owningTask,
void* securityToken,
UInt32 type);

static IOKernelDarwinKitUserClient* rootKitUserClientWithKernel(xnu::Kernel* kernel,
static IOKernelDarwinKitUserClient* darwinKitUserClientWithKernel(xnu::Kernel* kern,
task_t owningTask,
void* securityToken, UInt32 type,
OSDictionary* properties);

virtual bool initDarwinKitUserClientWithKernel(xnu::Kernel* kernel, task_t owningTask,
virtual bool initDarwinKitUserClientWithKernel(xnu::Kernel* kern, task_t owningTask,
void* securityToken, UInt32 type);

virtual bool initDarwinKitUserClientWithKernel(xnu::Kernel* kernel, task_t owningTask,
virtual bool initDarwinKitUserClientWithKernel(xnu::Kernel* kern, task_t owningTask,
void* securityToken, UInt32 type,
OSDictionary* properties);

Expand Down
24 changes: 12 additions & 12 deletions kernel/task.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,20 +92,20 @@ class Task {
return pid;
}

void SetTask(task_t task) {
task = task;
void SetTask(task_t tsk) {
task = tsk;
}

void SetMap(vm_map_t map) {
map = map;
void SetMap(vm_map_t vm_map) {
map = vm_map;
}

void SetPmap(pmap_t pmap) {
pmap = pmap;
void SetPmap(pmap_t p_map) {
pmap = p_map;
}

void SetProc(proc_t proc) {
proc = proc;
void SetProc(proc_t p) {
proc = p;
}

virtual xnu::mach::VmAddress GetBase() {
Expand All @@ -116,12 +116,12 @@ class Task {
return slide;
}

void SetBase(xnu::mach::VmAddress base) {
base = base;
void SetBase(xnu::mach::VmAddress bse) {
base = bse;
}

void SetSlide(Offset slide) {
slide = slide;
void SetSlide(Offset s) {
slide = s;
}

virtual UInt64 Call(char* symbolname, UInt64* arguments, Size argCount);
Expand Down
9 changes: 6 additions & 3 deletions user/kern_user.c
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,17 @@ mach_port_t open_kernel_tfp0_connection()

IOObjectRelease(service);

if(kr == KERN_SUCCESS)
if(kr == KERN_SUCCESS) {
break;
}

IOServiceClose(connection);
}

if(kr != KERN_SUCCESS)
if(kr != KERN_SUCCESS) {
printf("Open IOService %s failed! %s\n", service_name, mach_error_string(kr));
return MACH_PORT_NULL;
}

connection = conn;

Expand Down Expand Up @@ -140,7 +143,7 @@ mach_vm_address_t get_kernel_base()

if(kr != KERN_SUCCESS)
{
printf("get_kernel_base failed!\n");
printf("get_kernel_base failed! %s\n", mach_error_string(kr));

return (mach_vm_address_t) 0;
}
Expand Down
8 changes: 4 additions & 4 deletions user/macho_userspace.h
Original file line number Diff line number Diff line change
Expand Up @@ -146,12 +146,12 @@ class MachOUserspace : public MachO {
return is_libobjc;
}

void SetIsObjectiveCLibrary(bool is_libobjc) {
is_libobjc = is_libobjc;
void SetIsObjectiveCLibrary(bool objc) {
is_libobjc = objc;
}

void SetObjectiveCLibrary(MachOUserspace* libobjc) {
libobjc = libobjc;
void SetObjectiveCLibrary(MachOUserspace* objc) {
libobjc = objc;
}

static MachO* TaskAt(xnu::mach::Port task);
Expand Down
3 changes: 0 additions & 3 deletions user/main.cc
Original file line number Diff line number Diff line change
Expand Up @@ -560,12 +560,9 @@ int main(int argc, char** argv) {

int c;

/*
kernel = new Kernel();

printf("Kernel base = 0x%llx slide = 0x%llx\n", kernel->GetBase(), kernel->GetSlide());
*/

/*
task = new Task(kernel, 614);
Expand Down

0 comments on commit 6c2f2d0

Please sign in to comment.