iOS Theos的一些心得

之前在iOS逆向过程中,并不常用Hook方式去协助逆向,偶尔有用也是通过frida去定位打印一些固定算法的参数和结果。在iOS逆向领域,最基础的Hook方式或者说工具就要说到Theos了,本篇主要分享记录一下我在使用Theos Hook阿里系X-sign的一些心得。

Theos简介

Theos是一款跨平台的越狱开发工具包,可以在Win、Linux、MacOS等平台下工作。由于Theos实现了对Cydia Substrace的封装,因而能实现对Objective-C运行时的Hook,也能实现对C语言函数的Hook。iOS平台下的Hook插件主要依赖于Theos中的Tweak插件,实质就是iOS平台的动态库(dylib),利用Cydia Substrace提供的组件进行加载。
至于如何安装Theos以及创建工程这里就不在一一叙述了,网上可以查到的资料实在太多。

Tweak.xm编写

“.xm”后缀表示源文件支持Logos和C/C++语法,如果是”.x”后缀,说明源文件仅支持Logos和C语法。
我们的Hook代码都写在该文件当中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//将要Hook的类写在%hook之后
%hook SecurityGuardOpenUnifiedSecurity
// 需要Hook的类和函数写在下面
- (id)getSign:(id)arg1 data:(id)arg2 env:(int)arg3 api:(id)arg4{
//Log打印参数和结果
NSLog(@"-------------Hooked-------------");
NSLog(@"----arg1:%@ arg2:%@ arg3:%d arg4:%@-------------", arg1, arg2, arg3, arg4);
//%orig执行原函数逻辑,也可以修改传入参数
id result = %orig;
NSLog(@"-------result:%@--------", result);
NSLog(@"dddddddddddd");
return result;
}
%end

这里不得不提一下class-dump还是很有用的,通过该工具dump出来的类和函数用于辅助Tweak插件编写太方便了,参数个数、类型以及返回值类型一目了然。

总结

本篇主要简单记录一下自己Tweak Hook过程,相当于留个笔记,并没有太多的技术在内,后续有其他Tweak用法会加进去。

有钱的捧个钱场
0%