-
逆向工程的目的 1)分析竞品的最新研究或者产品原型(包括所用的技术所使用的框架) 2)学术/学习目的。 3)破解...
-
很久以前(下) 超短无剧情 主勋兴,副灿兴 完结 【一】 独角兽终于等到火烈鸟了 火烈鸟停在独角兽...
??分析iOS二进制文件的过程: ??由于class-dump等工具的流行,App Store上发布的软件都經过加密处理(LC_ENCRYPTION_INFO所标志的区域)加载器dyld对可执行文件校验,根据fat头选择合适的架构处理所有的command,使用posix_spawn函数启动进程ios上所有第三方代码都需要使用developer id代码签名,而代码签名作为数据存储在mach-o格式command结构中因此fat格式中得每个架构的文件都分别签名,并由内核验证如果验证失败则會收到停止信号而退出。在越狱机上可以通过ldid进行伪签名通过签名校验进行了加密后,无法直接用ida查看内部结构 header头指明每个cpu的文件位置因此一个mach-o文件的开头可能是mach_header结构,此时文件只包含一种cpu架构的可执行文件也可能是fat_header,存储不同mach_header的偏移 ??研究方式:命令行编译+二进制对比+调试 ??传参所用寄存器适用于普通函数和成员函數(id,sel) X86架构(默认调用约定): ‘V’-oneway 允许在不同线程和进程使鼡不可阻塞调用线程直到返回
??Objective-C是一种反射型语言,可以在运行时获取和修改自身状态其中的实现存在于libobjc.A.dylib库中,這些“运行时”能力源于objective-c类结构组织较为灵活并提供了操作自身结构的接口,同时在生成的可执行文件(mach-o)中存在_OBJC节这些节中提供了足够嘚类构成信息,而Mac端gdb可以解析这些结构而正由于objc提供了如此多的信息,因此也比c++在同等情况下逆向难度低一些
3种情况下DYLD环境变量会被忽视
??尝试用cycript附加会产生如下输入: ??而使用lldb则可以正常附加调试 ??iOS设备上,用户app安装在/var/mobile/Application中受沙盒限制而系统app安装在/Application中不受沙盒限制。越狱设备上很多第三方app也安装在/Application下从而不受沙盒限制而拥有更多权限一些越狱工具会移除沙盒限制以允许特定行为(如fork vfork popen) ??检测常见的越狱工具目录和文件是否存在 ??越狱工具会替换/etc/fstab文件导致变小,IOS5上正常为80字节 ??越狱时会增加2個内核环境变量用于绕过iOS代码签名机制sysctlbyname函数用于检测系统信息,在非越狱机上下面值应该为1 |