iOS逆向工具推荐

还原符号表(作者blog)
https://github.com/tobefuturer/restore-symbol

转换成动态库(作者blog)
https://github.com/tobefuturer/app2dylib

iOS逆向-静态分析

OpenSSH (用于远程登录ssh和文件传输scp)
class-dump(用于简单分析出工程中的类名和函数名)
Hopper Disassembler(反编译工具)
Reveal (对越狱后的设备查看任意app的布局)

iOS逆向-动态分析

cycript (cycript是一个脚本语言,可以看做Objective-JavaScript,形容 的非常贴切。配合静态调试,可以调用运行中的app内的任意方法)

iOS逆向-内部钩子

  1. CaptainHook文档 https://github.com/rpetrich/CaptainHook/wiki
  2. https://github.com/steipete/Aspects
  3. Theos创建Tweak工程,Logos语法写Tweak.xm

其他

debug server
openssh

iOS逆向思路进展:使用InspectiveC来查看调用堆栈:

1
2
3
4
5
6
7
8
9
10
跟踪一个程序,看看这个程序的执行流程是什么样的,以及某个函数的调用参数是什么。
常规的方法是在汇编中寻找objc_msgSend,一层一层跟下去。这是比较笨的办法,而且不能动态查看函数的数。
通过InspectiveC,我们可以动态的查看:
* 某个类的所有方法调用情况
* 某个类的某个方法的调用情况
* 某个类的实例对象的所有方法的调用情况
* 某个类的实例对象的某个方法的调用情况
* 某个方法签名的调用情况

砸壳

  1. dumpdecrypted https://github.com/stefanesser/dumpdecrypted
  2. Clutch https://github.com/KJCracks/Clutch
  3. pp助手直接下载越狱app
1
2
3
4
5
6
7
8
* MobileHooker用于替换覆盖系统的方法,这个过程被称为Hooking(挂钩)
* 它主要包含两个函数:
void MSHookMessageEx(Class class, SEL selector, IMP replacement, IMP *result);
void MSHookFunction(void*function,void* replacement,void** p_original);
MSHookMessageEx 主要作用于Objective-C函数
MSHookFunction 主要作用于C和C++函数
Logos语法就是对此函数做了一层封装,让编写hook代码变的更直观,上面的例子用的就是logos语法。
MSHookMessageEx 和MSHookFunction 使用方法这里就不介绍了,大家可去看书籍或者查询相关资料。

介绍几个互联网安全圈内比较知名的网站