From 5f495ac293e4fa03f6b69622e0acb8f45e169f98 Mon Sep 17 00:00:00 2001 From: zhoucong Date: Sun, 16 Apr 2023 17:43:41 +0800 Subject: [PATCH 1/2] =?UTF-8?q?[FIX]=20=E4=BF=AE=E5=A4=8Dchoose=E6=8A=A5?= =?UTF-8?q?=E9=94=99=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/choose.py | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/choose.py b/src/choose.py index d87967b..1752f24 100644 --- a/src/choose.py +++ b/src/choose.py @@ -50,10 +50,8 @@ def handle_command(debugger, command, exe_ctx, result, internal_dict): return def choose(debugger, classname): - command_script = '@import Foundation;NSString * className = @"' + classname + '";' + command_script = '@import Foundation; NSString * className = @"' + classname + '";' command_script += r''' - - // define #define KERN_SUCCESS 0 // typedef @@ -99,11 +97,10 @@ def choose(debugger, classname): size_t (*pressure_relief)(struct _malloc_zone_t *zone, size_t goal); } malloc_zone_t; - - struct XZChoice { - NSMutableArray * query_; // std::set query_; - NSMutableArray * result_; // std::set result_; - }; + typedef struct XZChoice { + void * query_; // std::set query_; + void * result_; // std::set result_; + }XZChoice ; struct XZObjectStruct { Class isa_; @@ -136,7 +133,7 @@ def choose(debugger, classname): data = copy; size = writ; } - } + }; // function void choose_(task_t task, void *baton, unsigned type, vm_range_t *ranges, unsigned count) typedef void (*choose__t)(task_t task, void *baton, unsigned type, vm_range_t *ranges, unsigned count); choose__t choose_ = [](task_t task, void *baton, unsigned type, vm_range_t *ranges, unsigned count) -> void { @@ -158,8 +155,9 @@ def choose(debugger, classname): //[choiz->result_ addObject:[@(p) stringValue]]; size_t needed; - for(unsigned i=0; i < [choiz->query_ count]; i++){ - void * result = (void *)[choiz->query_ objectAtIndex:i]; + NSMutableArray* query =(NSMutableArray*)(choiz->query_); + for(unsigned i=0; i < (int)[(NSMutableArray*)query count]; i++){ + void * result = (void *)[query objectAtIndex:i]; uint64_t result_intv = (uint64_t)result; uint64_t isa_intv = (uint64_t)isa; uint64_t data_intv = (uint64_t)data; @@ -183,19 +181,20 @@ def choose(debugger, classname): boundary *= 2; #endif - needed = (size_t)class_getInstanceSize((Class)result)); + needed = (size_t)class_getInstanceSize((Class)result); if ((needed <= boundary && (needed + 15) / 16 * 16 != size) || (needed > boundary && (needed + 511) / 512 * 512 != size)){ continue; } - [choiz->result_ addObject:(id)data]; + NSMutableArray* result_ =(NSMutableArray*)(choiz->result_); + [result_ addObject:(id)data]; } } } - } + }; XZChoice choice; - choice.query_ = (NSMutableArray*)[NSMutableArray array]; - choice.result_ = (NSMutableArray*)[NSMutableArray array]; + choice.query_ = (void*)[NSMutableArray array]; + choice.result_ = (void*)[NSMutableArray array]; Class _class = NSClassFromString(className); size_t number; @@ -204,7 +203,8 @@ def choose(debugger, classname): for (size_t i = 0; i != number; ++i) { for (Class current = classes[i]; current != Nil; current = (Class)class_getSuperclass(current)) { if (current == _class) { - [choice.query_ addObject:classes[i]]; + NSMutableArray* query_ =(NSMutableArray*)(choice.query_); + [query_ addObject:classes[i]]; break; } } @@ -223,7 +223,7 @@ def choose(debugger, classname): zone->introspect->enumerator((task_t)mach_task_self(), &choice, MALLOC_PTR_IN_USE_RANGE_TYPE, zones[i], task_peek, choose_); } - NSArray* choosed = choice.result_; + NSArray* choosed = (NSArray*)choice.result_; NSMutableString* retStr = [NSMutableString string]; unsigned choosedSize = [choosed count]; if(choosedSize == 0){ From 36bb9f0f11ad7eac2e7dee22d80c80b360bc3bbe Mon Sep 17 00:00:00 2001 From: zhoucong Date: Sun, 16 Apr 2023 19:12:52 +0800 Subject: [PATCH 2/2] =?UTF-8?q?[FIX]=20=E4=BF=AE=E5=A4=8Ddumpdecrypted?= =?UTF-8?q?=E6=8A=A5=E9=94=99=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/dumpdecrypted.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dumpdecrypted.py b/src/dumpdecrypted.py index dccfd00..8c40d9c 100644 --- a/src/dumpdecrypted.py +++ b/src/dumpdecrypted.py @@ -181,7 +181,7 @@ def get_macho_entry_offset(debugger): break; } } - char ret[50]; + char ret[50] = {0}; /* char textStartAddrStr[20];