--------------------------------------------------------------
概念或者文章记录部分:
a.out
Mach-O: 是Mach object文件格式的缩写,是一种可执行文件、目标代码、共享程序库、动态加载代码和核心DUMP。是a.out格式的一种替代。Mach-O提供更多的可扩展性和更快的符号表信息存取。Mach-O应用在基于Mach核心的系统上,目前NeXTSTEP、Darwin、Mac OS X(iPhone)都是使用这种可执行文件格式。
可参考:
《linux下的a.out文件》
《了解iOS上的可执行文件和Mach-O格式》
《Mach-O可执行文件》
《趣探 Mach-O:加载过程》
《浅谈 SDK 开发(一)五种 Mach-O 类型的凛冬之战》
一些比较基础的知识,可以通过阅读下面的文章get一些知识点:
1、《iOS安全攻防(一) 如何确保APP的安全性》
2、《iOS安全攻防(二十):越狱检测的攻与防》
3、一点越狱的知识,可以查看再见依然的几个入门级的文章
--------------------------------------------------------------
常用的终端命令:
1、strings :打印文件中可打印的字符,可参考《详解linux中的strings命令简介》
2、file :用来探测给定文件的类型。file命令对文件的检查分为文件系统、魔法幻数检查和语言检查3个过程。
3、clang/gcc :编译器前端,可以参考《编译器(GNU & GCC & clang & llvm)》
5、nm :查看符号表的工具,可以查看包括函数和方法名,以及他们的加载地址。这些信息可以用于在使用调试器时在内存中定位代码,文件对象可以是静态库、动态库、编译目标文件、可执行程序等任何包含符号信息的文件类型,可以参考《iOS 安全攻防系列(五): nm 命令详解》
6、otool :(object file displaying tool 的缩写)工具(对象文件显示工具)在Mac OS X桌面系统自带,它被移植到arm架构下,提供一系列的机制来查看对象文件和动态库文件的信息。这个有用的工具可以用于判断内存偏移值、段大小、目标加密等信息,枚举动态加载依赖性等。可以与调试器(例如gdb)结合起来解密并分析你的应用软件,也是用于反汇编 的重要工具,可参考《iOS 安全攻防系列(一):HelloWorld》
7、ps:显示进程状态,包括cpu使用情况,内存使用情况,进程标志位、内存限制,常驻进程数、处理时间等等
8、top:动态查看进程状态,包括cpu 使用情况,cpu空闲率、进程优先级等等
9、nice 和renice:用于为你的应用软件分配更高或更低优先级
10、lsof: 列举你的而应用软件打开的所有文件,使用的IP地址和打开的socket以及他们的状态
11、tcpdump:数据包抓取分析工具,相似的还有wireshark等
12、ifconfig:网络配置查看工具,windows 是ipconfig
13、route:查看或者配置路由
14、netstat:查看网络统计数据,打开端口、连接状态的工具
15、sysctl: 查看和修改内核状态的工具
--------------------------------------------------------------
常用的开源工具:
1、Fishhook: facebook提供的一个动态修改链接Mach-O符号表的开源工具。Mach-O为Mach Object文件格式的缩写,也是用于iOS可执行文件,目标代码,动态库,内核转储的文件格式。
Mach-O有自己的dylib规范。可参考:念茜《iOS安全攻防(十七):Fishhook》
2、class-dump: class-dump是用来dump目标文件的类信息的工具。它利用Objective-C语言的runtime的特性,将存储在mach-O文件中的@interface和@protocol信息提取出来,并生成对应的.h文件。可参考:《class-dump获取类信息》
3、IDA Pro: IDA是业界一个功能十分强大的反汇编工具,是安全渗透人员进行逆向安全测试的必备工具,其强大的静态反汇编和逆向调试功能能够帮助安全测试人员发现代码级别的高危致命安全漏洞。可参考《逆向安全基础之IDA使用简介》
4、Hopper Disassembler: 超级强大的反编译软件,不仅可以把机器码解析成汇编,还能解析出相似与Objc的伪代码。可参考《最简单的Hopper Disassembler玩转Mac逆向》
5、Charles: 一款代理服务器,通过过将自己设置成系统(电脑或者浏览器)的网络访问代理服务器,然后截取请求和请求结果达到分析抓包的目的。该软件是用Java写的,能够在Windows,Mac,Linux上使用。安装Charles的时候要先装好Java环境。可参考《使用Charles对iPhone进行Http(s)请求拦截(抓包)》