Skip to content

Commit

Permalink
Refactor code to support helper injection
Browse files Browse the repository at this point in the history
  • Loading branch information
marlkiller committed Jul 27, 2024
1 parent 70428e4 commit 57da4f8
Show file tree
Hide file tree
Showing 32 changed files with 632 additions and 349 deletions.
5 changes: 5 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -56,12 +56,15 @@ file(GLOB UtilsHeader ${CMAKE_SOURCE_DIR}/dylib_dobby_hook/utils/*.h)
file(GLOB Apps ${CMAKE_SOURCE_DIR}/dylib_dobby_hook/apps/*.m)
file(GLOB AppsHeader ${CMAKE_SOURCE_DIR}/dylib_dobby_hook/apps/*.h)

file(GLOB Helpers ${CMAKE_SOURCE_DIR}/dylib_dobby_hook/helpers/*.m)
file(GLOB HelpersHeader ${CMAKE_SOURCE_DIR}/dylib_dobby_hook/helpers/*.h)

file(GLOB StaticLibs ${CMAKE_SOURCE_DIR}/libs/*.a)

include_directories(
${CMAKE_SOURCE_DIR}/dylib_dobby_hook
${CMAKE_SOURCE_DIR}/dylib_dobby_hook/apps
${CMAKE_SOURCE_DIR}/dylib_dobby_hook/helpers
${CMAKE_SOURCE_DIR}/dylib_dobby_hook/utils
)

Expand All @@ -70,8 +73,10 @@ add_library(${PROJECT_NAME} SHARED
${MainHeader}
${UtilsHeader}
${AppsHeader}
${HelpersHeader}
${Utils}
${Apps}
${Helpers}
)
set_target_properties(${PROJECT_NAME} PROPERTIES

Expand Down
46 changes: 23 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@
2. libs: 项目依赖的开源 dobby 库
3. release: build 后的成品
4. script:
- hack.sh 自定义注入脚本 `sudo sh hack.sh`
- auto_hack.sh 妹妹全自动注入脚本 `sudo sh auto_hack.sh`
- hack.sh 自定义注入脚本 `sudo sh hack.sh`
- auto_hack.sh 妹妹全自动注入脚本 `sudo sh auto_hack.sh`
5. tools: insert_dylib 开源注入工具

## Feat
Expand All @@ -29,32 +29,31 @@
<details>
<summary>点击这里展开/收起</summary>

| App | version | x86 | arm | Download | remark | Author |
|-----------------|---------|-----|-----|----------------------------------------------|----------------------------------------------------------------------------------------------------------------------|---------------------|
| TablePlus | 6.* ||| https://tableplus.com/ | inject_bin="/Applications/TablePlus.app/Contents/Frameworks/Sparkle.framework/Versions/B/Sparkle" | |
| DevUtils | 1.* ||| https://devutils.com/ | | |
| AirBuddy | 2.* ||| https://v2.airbuddy.app/download | inject_bin="/Applications/AirBuddy.app/Contents/Frameworks/LetsMove.framework/Versions/A/LetsMove" | |
| Navicat Premium | 17.* ||| App Store | inject_bin="/Applications/Navicat Premium.app/Contents/Frameworks/EE.framework/Versions/A/EE" | QiuChenlyOpenSource |
| Paste | 4.1.3 ||| App Store | | LeeeMooo |
| Transmit | 5.* ||| https://panic.com/transmit/#download | | |
| AnyGo | 7.* ||| https://itoolab.com/gps-location-changer/ | DMCA | |
| Downie | 4.* ||| https://software.charliemonroe.net/downie/ | inject_bin="/Applications/Permute 3.app/Contents/Frameworks/Licensing.framework/Versions/A/Licensing" | |
| Permute | 3.* ||| https://software.charliemonroe.net/permute/ | inject_bin="/Applications/Downie 4.app/Contents/Frameworks/Licensing.framework/Versions/A/Licensing" | |
| ProxyMan | 5.2 ||| https://proxyman.io/ | inject_bin="/Applications/Proxyman.app/Contents/Frameworks/HexFiend.framework/Versions/A/HexFiend" | |
| Movist Pro | 2.* ||| https://movistprime.com/ | inject_bin="/Applications/Movist Pro.app/Contents/Frameworks/MediaKeyTap.framework/Versions/A/MediaKeyTap" | |
| Surge | 5.7.* ||| https://nssurge.com/ | DMCA | |
| Infuse | 7.7.* ||| App Store | inject_bin="/Applications/Infuse.app/Contents/Frameworks/Differentiator.framework/Versions/A/Differentiator" | |
| MacUpdater | 3. ||| https://www.corecode.io/macupdater/#download | inject_bin="/Applications/MacUpdater.app/Contents/Frameworks/Sparkle.framework/Versions/B/Sparkle" | |
| CleanShotX | 4. ||| https://updates.getcleanshot.com/v3/ | DMCA | |
| ForkLift | 4. ||| https://binarynights.com/ | inject_bin="/Applications/ForkLift.app/Contents/Frameworks/UniversalDetector.framework/Versions/A/UniversalDetector" | |
| App | version | x86 | arm | Download | SIP | Author |
|-----------------|---------|-----|-----|----------------------------------------------|-----|---------------------|
| TablePlus | 6.* ||| https://tableplus.com/ | | |
| DevUtils | 1.* ||| https://devutils.com/ | | |
| AirBuddy | 2.* ||| https://v2.airbuddy.app/download | | |
| Navicat Premium | 17.* ||| App Store | | QiuChenlyOpenSource |
| Paste | 4.1.3 ||| App Store | | LeeeMooo |
| Transmit | 5.* ||| https://panic.com/transmit/#download | | |
| AnyGo | 7.* ||| https://itoolab.com/gps-location-changer/ | | |
| Downie | 4.* ||| https://software.charliemonroe.net/downie/ | | |
| Permute | 3.* ||| https://software.charliemonroe.net/permute/ | | |
| ProxyMan | 5. ||| https://proxyman.io/ | | |
| Movist Pro | 2.* ||| https://movistprime.com/ | | |
| Surge | 5.7.* ||| https://nssurge.com/ | | |
| Infuse | 7.7.* ||| App Store | | |
| MacUpdater | 3. ||| https://www.corecode.io/macupdater/#download | | |
| CleanShotX | 4. ||| https://updates.getcleanshot.com/v3/ | | |
| ForkLift | 4. ||| https://binarynights.com/ | ON | |

</details>


## Usage


[download latest release](https://github.com/marlkiller/dylib_dobby_hook/releases/download/latest/dylib_dobby_hook.tar.gz)

```shell
tar -xzvf dylib_dobby_hook.tar.gz
cd script
Expand All @@ -76,7 +75,7 @@ sudo sh auto_hack.sh
#import "HackProtocol.h"


@interface XXXHack : NSObject <HackProtocol>
@interface XXXHack : HackProtocolDefault

@end

Expand Down Expand Up @@ -156,6 +155,7 @@ cp -f "${BUILT_PRODUCTS_DIR}/${prefix}${dylib_name}.dylib" "${app_bundle_framewo
```

## Sponsor

[![JetBrains](jetbrains.svg)](https://www.jetbrains.com/?from=dylib_dobby_hook "JetBrains")

## Ref
Expand Down
60 changes: 56 additions & 4 deletions dylib_dobby_hook.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,13 @@
B546A6582BC4F0CD0012338D /* ProxyManHack.m in Sources */ = {isa = PBXBuildFile; fileRef = B546A6572BC4F0CD0012338D /* ProxyManHack.m */; };
B55407272B653DCB005C08E6 /* NavicatPremiumHack.m in Sources */ = {isa = PBXBuildFile; fileRef = B55407262B653DCB005C08E6 /* NavicatPremiumHack.m */; };
B554D7BC2B63F2A300B7EFEA /* DevUtilsHack.m in Sources */ = {isa = PBXBuildFile; fileRef = B554D7BB2B63F2A300B7EFEA /* DevUtilsHack.m */; };
B580D3CA2BE3579300979568 /* LightRoomHack.m in Sources */ = {isa = PBXBuildFile; fileRef = B580D3C72BE3579300979568 /* LightRoomHack.m */; };
B58160172BE88569001DDB9B /* encryp_utils.m in Sources */ = {isa = PBXBuildFile; fileRef = B58160112BE88569001DDB9B /* encryp_utils.m */; };
B581601B2BE88569001DDB9B /* encryp_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = B58160162BE88569001DDB9B /* encryp_utils.h */; };
B5A7D30F2C548B71003D4C7F /* HackProtocolDefault.h in Headers */ = {isa = PBXBuildFile; fileRef = B5A7D30E2C548B71003D4C7F /* HackProtocolDefault.h */; };
B5A7D3112C548BAB003D4C7F /* HackProtocolDefault.m in Sources */ = {isa = PBXBuildFile; fileRef = B5A7D3102C548BAB003D4C7F /* HackProtocolDefault.m */; };
B5A7D3142C549130003D4C7F /* ForkLiftHelperHack.m in Sources */ = {isa = PBXBuildFile; fileRef = B5A7D3132C549130003D4C7F /* ForkLiftHelperHack.m */; };
B5A7D3172C5491A0003D4C7F /* HackHelperProtocolDefault.m in Sources */ = {isa = PBXBuildFile; fileRef = B5A7D3152C5491A0003D4C7F /* HackHelperProtocolDefault.m */; };
B5A7D3182C5491A0003D4C7F /* HackHelperProtocolDefault.h in Headers */ = {isa = PBXBuildFile; fileRef = B5A7D3162C5491A0003D4C7F /* HackHelperProtocolDefault.h */; };
B5D0C0BB2C4B553500881398 /* ForkLiftHack.m in Sources */ = {isa = PBXBuildFile; fileRef = B5D0C0BA2C4B553500881398 /* ForkLiftHack.m */; };
B5D2ED3F2BC0252D0030CBCA /* DevHack.m in Sources */ = {isa = PBXBuildFile; fileRef = B5D2ED3E2BC0252D0030CBCA /* DevHack.m */; };
B5F06B1D2BEF591E0079E68D /* InfuseHack.m in Sources */ = {isa = PBXBuildFile; fileRef = B5F06B1C2BEF591E0079E68D /* InfuseHack.m */; };
Expand Down Expand Up @@ -76,9 +80,22 @@
B554D7BB2B63F2A300B7EFEA /* DevUtilsHack.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DevUtilsHack.m; sourceTree = "<group>"; };
B56968C62BEA4E2A0022FAC6 /* libdylib_dobby_hook.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = libdylib_dobby_hook.dylib; sourceTree = "<group>"; };
B56968C72BEA4E4D0022FAC6 /* cmake_debugger.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = cmake_debugger.sh; sourceTree = "<group>"; };
B580D3C72BE3579300979568 /* LightRoomHack.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LightRoomHack.m; sourceTree = "<group>"; };
B57AEDBA2C5009E400B9C5FB /* forklift_hack.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = forklift_hack.sh; sourceTree = "<group>"; };
B57AEDBB2C5009F200B9C5FB /* dtrace_kill.d */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.dtrace; path = dtrace_kill.d; sourceTree = "<group>"; };
B57AEDBC2C5009F200B9C5FB /* SMJobBlessUtil-python3.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = "SMJobBlessUtil-python3.py"; sourceTree = "<group>"; };
B57AEDBD2C5009F200B9C5FB /* mac_patch_helper */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; path = mac_patch_helper; sourceTree = "<group>"; };
B57AEDBE2C5009F200B9C5FB /* patch.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = patch.json; sourceTree = "<group>"; };
B58160112BE88569001DDB9B /* encryp_utils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = encryp_utils.m; sourceTree = "<group>"; };
B58160162BE88569001DDB9B /* encryp_utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = encryp_utils.h; sourceTree = "<group>"; };
B5A7D30E2C548B71003D4C7F /* HackProtocolDefault.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HackProtocolDefault.h; sourceTree = "<group>"; };
B5A7D3102C548BAB003D4C7F /* HackProtocolDefault.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HackProtocolDefault.m; sourceTree = "<group>"; };
B5A7D3132C549130003D4C7F /* ForkLiftHelperHack.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ForkLiftHelperHack.m; sourceTree = "<group>"; };
B5A7D3152C5491A0003D4C7F /* HackHelperProtocolDefault.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HackHelperProtocolDefault.m; sourceTree = "<group>"; };
B5A7D3162C5491A0003D4C7F /* HackHelperProtocolDefault.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HackHelperProtocolDefault.h; sourceTree = "<group>"; };
B5BE2D582C52A5E40056B3E2 /* build.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = build.sh; sourceTree = "<group>"; };
B5BE2D592C52A5E40056B3E2 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
B5BE2D5A2C52A5E40056B3E2 /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = "<group>"; };
B5BE2D5B2C52A5E40056B3E2 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
B5D0C0BA2C4B553500881398 /* ForkLiftHack.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ForkLiftHack.m; sourceTree = "<group>"; };
B5D2ED3E2BC0252D0030CBCA /* DevHack.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DevHack.m; sourceTree = "<group>"; };
B5F06B1C2BEF591E0079E68D /* InfuseHack.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InfuseHack.m; sourceTree = "<group>"; };
Expand Down Expand Up @@ -111,6 +128,10 @@
38350BE92B53F73A00DD52B3 = {
isa = PBXGroup;
children = (
B5BE2D582C52A5E40056B3E2 /* build.sh */,
B5BE2D592C52A5E40056B3E2 /* CMakeLists.txt */,
B5BE2D5A2C52A5E40056B3E2 /* LICENSE */,
B5BE2D5B2C52A5E40056B3E2 /* README.md */,
38350C0B2B5407CD00DD52B3 /* release */,
38350C082B54047F00DD52B3 /* script */,
38350C062B53F93D00DD52B3 /* tools */,
Expand All @@ -133,6 +154,7 @@
isa = PBXGroup;
children = (
B581601D2BE894A2001DDB9B /* utils */,
B5A7D3122C54911C003D4C7F /* helpers */,
B581601C2BE8949B001DDB9B /* apps */,
38350BF52B53F73A00DD52B3 /* dylib_dobby_hook.h */,
38350BF72B53F73A00DD52B3 /* dylib_dobby_hook.m */,
Expand All @@ -152,6 +174,10 @@
38350C062B53F93D00DD52B3 /* tools */ = {
isa = PBXGroup;
children = (
B57AEDBB2C5009F200B9C5FB /* dtrace_kill.d */,
B57AEDBD2C5009F200B9C5FB /* mac_patch_helper */,
B57AEDBE2C5009F200B9C5FB /* patch.json */,
B57AEDBC2C5009F200B9C5FB /* SMJobBlessUtil-python3.py */,
38350C072B53F96100DD52B3 /* insert_dylib */,
);
path = tools;
Expand All @@ -160,6 +186,7 @@
38350C082B54047F00DD52B3 /* script */ = {
isa = PBXGroup;
children = (
B5BE2D572C52A4530056B3E2 /* apps */,
B56968C72BEA4E4D0022FAC6 /* cmake_debugger.sh */,
38350C092B54047F00DD52B3 /* hack.sh */,
38E793632B6C7AB8005677AA /* all_in_one.sh */,
Expand All @@ -179,10 +206,10 @@
B581601C2BE8949B001DDB9B /* apps */ = {
isa = PBXGroup;
children = (
B5D0C0BA2C4B553500881398 /* ForkLiftHack.m */,
B5F06B1C2BEF591E0079E68D /* InfuseHack.m */,
38D1AC312B54D1CC00E6CB9E /* AirBuddyHack.m */,
38D1AC2B2B54D03B00E6CB9E /* HackProtocol.h */,
B580D3C72BE3579300979568 /* LightRoomHack.m */,
B5FE3B842BA2A571001AE437 /* TransmitHack.m */,
382A25842B6918DF0083F28C /* PasteHack.m */,
38B83E302B5505B300919735 /* TablePlusHack.m */,
Expand All @@ -193,6 +220,8 @@
B546A6572BC4F0CD0012338D /* ProxyManHack.m */,
B502BD5C2BCFB35200DAD97F /* MovistProHack.m */,
B53522452C2FE4D4001CA305 /* MacUpdaterHack.m */,
B5A7D30E2C548B71003D4C7F /* HackProtocolDefault.h */,
B5A7D3102C548BAB003D4C7F /* HackProtocolDefault.m */,
);
path = apps;
sourceTree = "<group>";
Expand All @@ -212,6 +241,24 @@
path = utils;
sourceTree = "<group>";
};
B5A7D3122C54911C003D4C7F /* helpers */ = {
isa = PBXGroup;
children = (
B5A7D3162C5491A0003D4C7F /* HackHelperProtocolDefault.h */,
B5A7D3152C5491A0003D4C7F /* HackHelperProtocolDefault.m */,
B5A7D3132C549130003D4C7F /* ForkLiftHelperHack.m */,
);
path = helpers;
sourceTree = "<group>";
};
B5BE2D572C52A4530056B3E2 /* apps */ = {
isa = PBXGroup;
children = (
B57AEDBA2C5009E400B9C5FB /* forklift_hack.sh */,
);
path = apps;
sourceTree = "<group>";
};
/* End PBXGroup section */

/* Begin PBXHeadersBuildPhase section */
Expand All @@ -221,8 +268,10 @@
files = (
B5FECEAD2BC4FC29008916D6 /* common_ret.h in Headers */,
B581601B2BE88569001DDB9B /* encryp_utils.h in Headers */,
B5A7D30F2C548B71003D4C7F /* HackProtocolDefault.h in Headers */,
38350BF62B53F73A00DD52B3 /* dylib_dobby_hook.h in Headers */,
3816BBB72B54FED80051CF39 /* MemoryUtils.h in Headers */,
B5A7D3182C5491A0003D4C7F /* HackHelperProtocolDefault.h in Headers */,
38350C022B53F78900DD52B3 /* dobby.h in Headers */,
38D1AC282B54C9C100E6CB9E /* Constant.h in Headers */,
38D1AC2C2B54D03B00E6CB9E /* HackProtocol.h in Headers */,
Expand Down Expand Up @@ -313,17 +362,20 @@
B50E935E2BBD024F0073FEAA /* PaddleBaseHack.m in Sources */,
38D1AC322B54D1CC00E6CB9E /* AirBuddyHack.m in Sources */,
B5D2ED3F2BC0252D0030CBCA /* DevHack.m in Sources */,
B5A7D3112C548BAB003D4C7F /* HackProtocolDefault.m in Sources */,
B546A6582BC4F0CD0012338D /* ProxyManHack.m in Sources */,
B58160172BE88569001DDB9B /* encryp_utils.m in Sources */,
B53522462C2FE4D4001CA305 /* MacUpdaterHack.m in Sources */,
B5A7D3142C549130003D4C7F /* ForkLiftHelperHack.m in Sources */,
38350BF82B53F73A00DD52B3 /* dylib_dobby_hook.m in Sources */,
B5A7D3172C5491A0003D4C7F /* HackHelperProtocolDefault.m in Sources */,
382A25862B6918DF0083F28C /* PasteHack.m in Sources */,
B554D7BC2B63F2A300B7EFEA /* DevUtilsHack.m in Sources */,
B5D0C0BB2C4B553500881398 /* ForkLiftHack.m in Sources */,
B5F06B1D2BEF591E0079E68D /* InfuseHack.m in Sources */,
B55407272B653DCB005C08E6 /* NavicatPremiumHack.m in Sources */,
3816BBB92B54FF090051CF39 /* MemoryUtils.m in Sources */,
38B83E312B5505B300919735 /* TablePlusHack.m in Sources */,
B580D3CA2BE3579300979568 /* LightRoomHack.m in Sources */,
B5FECEAE2BC4FC29008916D6 /* common_ret.m in Sources */,
38D1AC2A2B54CA4D00E6CB9E /* Constant.m in Sources */,
B502BD5D2BCFB35200DAD97F /* MovistProHack.m in Sources */,
Expand Down
4 changes: 2 additions & 2 deletions dylib_dobby_hook/apps/AirBuddyHack.m
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,14 @@
#import "Constant.h"
#import "dobby.h"
#import "MemoryUtils.h"
#import "HackProtocol.h"
#include "common_ret.h"
#include <sys/ptrace.h>
#import <objc/runtime.h>
#include <mach-o/dyld.h>
#import <Cocoa/Cocoa.h>
#import "HackProtocolDefault.h"

@interface AirBuddyHack : NSObject <HackProtocol>
@interface AirBuddyHack : HackProtocolDefault

@end
@implementation AirBuddyHack
Expand Down
4 changes: 2 additions & 2 deletions dylib_dobby_hook/apps/DevHack.m
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
#import "MemoryUtils.h"
#import <objc/runtime.h>
#include <mach-o/dyld.h>
#import "HackProtocol.h"
#import "HackProtocolDefault.h"
#include <sys/ptrace.h>
#import <AppKit/AppKit.h>
#import "common_ret.h"
Expand Down Expand Up @@ -72,7 +72,7 @@ - (void)drawRect:(NSRect)dirtyRect {
@end


@interface DevHack : NSObject <HackProtocol>
@interface DevHack : HackProtocolDefault

//+ (NSWindow *)myWindow;
@end
Expand Down
Loading

0 comments on commit 57da4f8

Please sign in to comment.