TheOS Logos Hook MacOS Application (TheOS注入Objective-C编写的Mac应用)
背景介绍:打算尝试一下Swift hook,那么先从Objective-C Hook开始吧,iOS越狱不想折腾了,所以直接拿Mac的程序开搞。
一、效果展示



二、TheOS工具准备
安装TheOS,参考TheOS的github即可《Installation macOS》
注:MacOS的环境变量我是设置在~/.bash_profile里面,与上面的链接不一样。
三、详细过程
1、使用Xcode创建SimpleEcho命令行项目
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
// // main.m // SimpleEcho // // Created by BarryNg on 2019/7/3. // Copyright © 2019 BarryNg. All rights reserved. // #import <Foundation/Foundation.h> @interface SimpleEcho : NSObject +(NSString *)GetMyName; @end @implementation SimpleEcho +(id)GetMyName { return @"BarryNg"; } @end int main(int argc, const char * argv[]) { @autoreleasepool { NSLog(@"My name is %@.", [SimpleEcho GetMyName]); } return 0; } |
2、使用Sublime创建tweak.x文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
// TheOS logos 代码 %config(generator=internal) %hook SimpleEcho +(id)GetMyName { return @"Handy"; } %end %ctor { NSLog(@"构造函数输出:Hook Success!"); } |
3、采用logos.pl把tweak.x转换为普通代码:
1 2 3 4 5 6 7 |
logos.pl tweak.x > tweak.mm // 注意:需要给tweak.mm文件手动加上以下代码,否则下一步编译会报错 #import <Foundation/Foundation.h> #include <stdlib.h> |
4、编译tweak.mm为dylib:
1 2 3 |
clang -shared -undefined dynamic_lookup -o ./tweak.dylib ./tweak.mm |
5、insert_dylib给SimpleEcho添加tweak.dylib
1 2 3 |
./insert_dylib tweak.dylib SimpleEcho |
6、测试:

四、总结
TheOS这个框架已经很久了,但是我一直懒癌发作不想学习,用其他方法实现Hook,现在终于写了个HelloWorld了,真香。。。
结尾上个彩蛋,之前给Mac版微信加了个功能,可以通过http协议查询微信群/通讯录里面联系人的信息:
