Skip to content

Commit

Permalink
daily commit
Browse files Browse the repository at this point in the history
周末很闲
  • Loading branch information
marlkiller committed Jul 19, 2024
2 parents b8ee819 + 382cdb7 commit 1452fee
Show file tree
Hide file tree
Showing 7 changed files with 199 additions and 27 deletions.
64 changes: 64 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ enable_language(C)
enable_language(CXX)
enable_language(OBJC)
enable_language(OBJCXX)
#enable_language(Swift)


set(CMAKE_C_STANDARD 17)
Expand All @@ -32,6 +33,7 @@ set(COMPILE_OPTION
-Wno-incompatible-pointer-types
-Wno-int-to-void-pointer-cast
-Wno-unguarded-availability-new # is only available on macOS 10.15 or newer
# -ftrivial-auto-var-init=zero
)

set(LINK_OPTION
Expand Down Expand Up @@ -71,6 +73,68 @@ add_library(${PROJECT_NAME} SHARED
${Utils}
${Apps}
)
set_target_properties(${PROJECT_NAME} PROPERTIES

EXECUTABLE_PREFIX "lib"
EXECUTABLE_EXTENSION "dylib"

# FRAMEWORK TRUE
# FRAMEWORK_VERSION A
# Mark which headers should public
# PUBLIC_HEADER "/usr/local/include"

## ----------------------------------
## Architecture
## ----------------------------------
XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH[variant=Debug] "YES"
XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH[variant=Release] "NO"
## ----------------------------------
## Build Option
## ----------------------------------

XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT[variant=Debug] "dwarf"
XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT[variant=Release] "dwarf-with-dsym"

## ----------------------------------
## Deployment
## ----------------------------------
XCODE_ATTRIBUTE_SKIP_INSTALL "YES"
# XCODE_ATTRIBUTE_INSTALL_PATH "$(LOCAL_LIBRARY_DIR)/Frameworks"

## ----------------------------------
## Link
## ----------------------------------
# /usr/local/lib
XCODE_ATTRIBUTE_DYLIB_INSTALL_NAME_BASE "$(INSTALL_PATH)"
XCODE_ATTRIBUTE_LD_DYLIB_INSTALL_NAME "$(DYLIB_INSTALL_NAME_BASE:standardizepath)/$(EXECUTABLE_PATH)"
XCODE_ATTRIBUTE_LD_RUNPATH_SEARCH_PATHS "@executable_path/"
XCODE_ATTRIBUTE_DYLIB_COMPATIBILITY_VERSION "1"
XCODE_ATTRIBUTE_DYLIB_CURRENT_VERSION "1"

## ----------------------------------
## Apple Clang - Language - C/C++
## ----------------------------------
XCODE_ATTRIBUTE_CLANG_GCC_C_LANGUAGE_STANDARD "gnu17"
XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "gnu++20"
XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++"
## ----------------------------------
## Apple Clang - Language - Modules
## ----------------------------------
XCODE_ATTRIBUTE_CLANG_ENABLE_MODULES "YES"
## ----------------------------------
## Apple Clang - Language - Objective-C
## ----------------------------------
# Enable ARC, cmake default is MRC
XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC "No"
XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_WEAK "YES"
## ----------------------------------
## Apple Clang - Language - Code Generation
## ----------------------------------
XCODE_ATTRIBUTE_GCC_GENERATE_DEBUGGING_SYMBOLS "YES"

# Xcode 的Run 指令会自动 link 已经 dependency 的 target,不需要 CMake 的指令再 link 一遍,如果不是 Xcode Generate 则需要 CMake 进行 Link

)


# 去掉lib前缀
Expand Down
65 changes: 45 additions & 20 deletions dylib_dobby_hook/apps/DevHack.m
Original file line number Diff line number Diff line change
Expand Up @@ -164,26 +164,51 @@ + (void)draw_event:(id)sender {

- (BOOL)hack {

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
// 在这里执行你的代码
NSLog(@">>>>>> 代码延迟执行了 1 秒");
NSLog(@">>>>>> 添加自定义菜单");

NSMenu *mainMenu = [NSApplication sharedApplication].mainMenu;
// 创建一个与独立的菜单项
NSMenuItem *newMenuItem = [[NSMenuItem alloc] initWithTitle:@"menu_new" action:nil keyEquivalent:@""];
NSMenuItem *subMenuItem1 = [[NSMenuItem alloc] initWithTitle:@"mem_event" action:NSSelectorFromString(@"mem_event:") keyEquivalent:@""];
[subMenuItem1 setTarget:self.class];
NSMenuItem *subMenuItem2 = [[NSMenuItem alloc] initWithTitle:@"draw_event" action:@selector(draw_event:) keyEquivalent:@""];
[subMenuItem2 setTarget:DevHack.class];
// 创建一个子菜单并将子菜单项添加进去
NSMenu *newMenu = [[NSMenu alloc] initWithTitle:@"New Menu [HOOK]"];
[newMenu addItem:subMenuItem1];
[newMenu addItem:subMenuItem2];
// 将子菜单添加到父菜单项
[newMenuItem setSubmenu:newMenu];
[mainMenu addItem:newMenuItem];
});
// 手动定时监测菜单
// dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// while (true) {
// // 每 5 秒执行一次
// sleep(5);
// NSLog(@">>>>>> allWindows");
// // 在主线程上异步执行窗口信息获取和日志记录
// dispatch_async(dispatch_get_main_queue(), ^{
// NSArray<NSWindow *> *allWindows = [NSApplication sharedApplication].windows;
// // 遍历所有窗口,打印窗口信息
// for (NSWindow *window in allWindows) {
// NSViewController *viewController = window.contentViewController;
// NSLog(@"窗口类名: %@, 关联视图控制器: %@", NSStringFromClass([window class]), viewController ? viewController : @"无");
// }
// });
// }
// });

// -[_TtC13App_Cleaner_822BaseFeaturesController onAppDidFinishLaunching]:





// 添加菜单
// dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
// // 在这里执行你的代码
// NSLog(@">>>>>> 代码延迟执行了 1 秒");
// NSLog(@">>>>>> 添加自定义菜单");
//
// NSMenu *mainMenu = [NSApplication sharedApplication].mainMenu;
// // 创建一个与独立的菜单项
// NSMenuItem *newMenuItem = [[NSMenuItem alloc] initWithTitle:@"menu_new" action:nil keyEquivalent:@""];
// NSMenuItem *subMenuItem1 = [[NSMenuItem alloc] initWithTitle:@"mem_event" action:NSSelectorFromString(@"mem_event:") keyEquivalent:@""];
// [subMenuItem1 setTarget:self.class];
// NSMenuItem *subMenuItem2 = [[NSMenuItem alloc] initWithTitle:@"draw_event" action:@selector(draw_event:) keyEquivalent:@""];
// [subMenuItem2 setTarget:DevHack.class];
// // 创建一个子菜单并将子菜单项添加进去
// NSMenu *newMenu = [[NSMenu alloc] initWithTitle:@"New Menu [HOOK]"];
// [newMenu addItem:subMenuItem1];
// [newMenu addItem:subMenuItem2];
// // 将子菜单添加到父菜单项
// [newMenuItem setSubmenu:newMenu];
// [mainMenu addItem:newMenuItem];
// });


// Class WinControllerClass = NSClassFromString(@"mac_app_dev_swift.ViewController");
Expand Down
11 changes: 11 additions & 0 deletions dylib_dobby_hook/apps/HackProtocol.h
Original file line number Diff line number Diff line change
Expand Up @@ -57,5 +57,16 @@
NSLog(@">>>>>> called + ret");
}

- (BOOL)hack {
return NO;
}

- (NSString *)getAppName {
return nil;
}

- (NSString *)getSupportAppVersion {
return nil;
}

@end
68 changes: 68 additions & 0 deletions dylib_dobby_hook/apps/NavicatPremiumHack.m
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,54 @@ - (void)hk_displayRegisteredInfo {
// [mutableDict setObject:@"organization" forKey:@"organization"];
// *deviceIdPtr = mutableDict;
// }


// 指针转换 (void *)
// id object = self;
// NSString *user = *(NSString __strong **)((__bridge void *)object + 0x60);
// NSString *newUser = @"";
// *(NSString __strong **)((__bridge void *)object + 0x60) = newUser;


// 指针转换 (&)
// id object = self;
// NSString *user = *(NSString __strong **)(&object + 0x60);
// NSString *newUser = @"";
// *(NSString __strong **)((&object) + 0x60) = newUser;



// 指针转换 (uintptr_t)
// id object = self;
// NSString *user = *(NSString __strong **)(((void *)(uintptr_t)object) + 0x60);
// NSString *newUser = @"";
// *(NSString __strong **)(((void *)(uintptr_t)object) + 0x60) = newUser;

// 读写 id 类型
// id user = *(id __strong *)((__bridge void *)object + 0x60);
// id c = *(id __strong *)(&object + 0x60);
// id newC = @"";
// *(id __strong *)(&object + 0x60) = newC;


// 读写 int 属性对象
// int intValue = *(int *)((__bridge void *)object + 0x30);
// *(int *)((__bridge void *)object + 0x30) = 123;


// 读写 NSString 属性对象
// NSString __strong **propertyPtr = (NSString __strong **)(&object + 0x60);
// *propertyPtr = @"1";
// NSString *propertyA = *propertyPtr = @"1";


// demo
// std::string str = "123";
// std::string *ptr = &str;
//
// uintptr_t address = reinterpret_cast<uintptr_t>(ptr);
// void * address2 = (void *)ptr;
// void * address3 = &str;

((void(*)(id, SEL))displayRegisteredInfoIMP)(self, _cmd);

Expand All @@ -182,5 +230,25 @@ - (void)hk_displayRegisteredInfo {
[_appExtraInfoLabel setStringValue:[Constant G_EMAIL_ADDRESS]];

}
// id BaseFeaturesController = self;
//
//// r14 = *(r13 + *objc_ivar_offset__TtC13App_Cleaner_822BaseFeaturesController_licenseManager);
// id NKLicenseManager = *(id __strong *)((__bridge void *)BaseFeaturesController + 0x8);
//
//// r14 = *(rbx + 0x28);
//// r15 = r14 + 0x20;
// id LicenseStateStorage = *(id __strong *)((__bridge void *)NKLicenseManager + 0x28);
// id TtC16NKLicenseManager19LicenseStateStorage_serialKey = *(id __strong *)((__bridge void *)LicenseStateStorage + 0x20);
// if (!TtC16NKLicenseManager19LicenseStateStorage_serialKey) {
//
//
//// *(id __strong *)((__bridge void *)LicenseStateStorage + 0x20) = @"123456";
// Ivar serialKeyIvar = class_getInstanceVariable([LicenseStateStorage class], "serialKey");
// const char *ivarTypeEncoding = ivar_getTypeEncoding(serialKeyIvar);
// NSString *ivarType = [NSString stringWithUTF8String:ivarTypeEncoding];
// id currentValue = object_getIvar(LicenseStateStorage, serialKeyIvar);
// object_setIvar(LicenseStateStorage, serialKeyIvar, @"2222222222");
// *(int *)((__bridge void *)LicenseStateStorage + 0x28) = 1;
// }
}
@end
2 changes: 1 addition & 1 deletion dylib_dobby_hook/dobby.h
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ int DobbyInstrument(void *address, dobby_instrument_callback_t pre_handler);
// destroy and restore code patch
int DobbyDestroy(void *address);

const char *DobbyGetVersion();
const char *DobbyGetVersion(void);

// symbol resolver
void *DobbySymbolResolver(const char *image_name, const char *symbol_name);
Expand Down
6 changes: 5 additions & 1 deletion dylib_dobby_hook/utils/Constant.m
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,11 @@ static void __attribute__ ((constructor)) initialize(void){
@dynamic G_EMAIL_ADDRESS;
@dynamic G_EMAIL_ADDRESS_FMT;
@dynamic G_DYLIB_NAME;

@dynamic currentAppPath;
@dynamic currentAppName;
@dynamic currentAppVersion;
@dynamic currentAppCFBundleVersion;
@dynamic arm;

+ (NSString *)G_EMAIL_ADDRESS {
return love69(G_EMAIL_ADDRESS);
Expand Down
10 changes: 5 additions & 5 deletions dylib_dobby_hook/utils/MemoryUtils.m
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ + (NSArray *)searchMachineCodeOffsets:(NSString *)searchFilePath machineCode:(NS
searchFilePath,
searchMachineCode];

[self exAlart:@"特征吗匹配 异常 ??!!" message:message];
[self exAlart:@"特征吗匹配 异常 ?!!!" message:message];
return offsets;
}
if (CACHE_MACHINE_CODE_OFFSETS) {
Expand Down Expand Up @@ -518,7 +518,7 @@ + (void)hookInstanceMethod:(Class)originalClass originalSelector:(SEL)originalSe
NSStringFromClass(swizzledClass),
NSStringFromSelector(swizzledSelector),
swizzledMethod];
[self exAlart:@"hookInstanceMethod 异常 ??!!" message:message];
[self exAlart:@"hookInstanceMethod 异常 ?!!!" message:message];
}
}

Expand Down Expand Up @@ -551,7 +551,7 @@ + (void)hookClassMethod:(Class)originalClass originalSelector:(SEL)originalSelec
NSStringFromClass(swizzledClass),
NSStringFromSelector(swizzledSelector),
swizzledMethod];
[self exAlart:@"hookClassMethod 异常 ??!!" message:message];
[self exAlart:@"hookClassMethod 异常 ?!!!" message:message];
}
}

Expand Down Expand Up @@ -587,7 +587,7 @@ + (void)replaceInstanceMethod:(Class)originalClass originalSelector:(SEL)origina
NSStringFromClass(swizzledClass),
NSStringFromSelector(swizzledSelector),
swizzledImplementation];
[self exAlart:@"replaceInstanceMethod 异常 ??!!" message:message];
[self exAlart:@"replaceInstanceMethod 异常 ?!!!" message:message];
}
}

Expand Down Expand Up @@ -622,7 +622,7 @@ + (void)replaceClassMethod:(Class)originalClass originalSelector:(SEL)originalSe
NSStringFromClass(swizzledClass),
NSStringFromSelector(swizzledSelector),
swizzledImplementation];
[self exAlart:@"replaceClassMethod 异常 ??!!" message:message];
[self exAlart:@"replaceClassMethod 异常 ?!!!" message:message];
}
}

Expand Down

0 comments on commit 1452fee

Please sign in to comment.