了解了Mach-O的文件格式,肯定需要了解Mach-O的加载流程,既然要研究OSX,这就是必不可少的一步,那么通过阅读源码可以比较清晰的认识这一流程
用户态在加载新的可执行文件时会有一种方式是通过exec*
系列函数,所以我们先从exec*
说起,由于exec*是都只是对系统调用execve()库的封装,所以我们先从一张流程图来看起
好久不见,SherlockHolmes
No results found
了解了Mach-O的文件格式,肯定需要了解Mach-O的加载流程,既然要研究OSX,这就是必不可少的一步,那么通过阅读源码可以比较清晰的认识这一流程
用户态在加载新的可执行文件时会有一种方式是通过exec*
系列函数,所以我们先从exec*
说起,由于exec*是都只是对系统调用execve()库的封装,所以我们先从一张流程图来看起
简介:此app名称为EasyCost,是笔者目前为止用过的用户界面相对友好的一款记账app,奈何用了很久之后才发现有个所谓的高级功能,咦,看到自动账单这个功能,很高级有木有,鉴于最近才转逆向,于是抱着研究的心态尝试破解,也希望对一些同时刚接触逆向的新手朋友一点点启发。
众所周知,我们用Xcode构建一个程序过程中,会把源文件转换成一个可执行文件,这个可执行文件中包含的字节码会被CPU执行。
就像Windows上的PE和Linux上的ELF,OS X系统可执行文件的格式为Mach-O,接下来简单谈谈Mach-O。
先来看看苹果官方文档对Mach-O结构组成的描述
关于ptrace,ptrace是一个系统函数,它提供了一种可以使父进程监控其他进程的方式,还可以改变
子进程中的寄存器和内核印象,因而可以实现断点调试和系统调用的跟踪。
使用ptrace,可以在用户层拦截和修改系统调用。