appsync没有装是不能安装的,程序没有破解是不能执行的
AppSync(作者:Dissident ,Apptrack站点的核心人物)
/usrlibexec/installd来处理,而AppSync 就是该运行文件的一个补丁,用来绕过签名校验。
MobileSubstrate来hook
libmis.dylib库的
MISValidateSignatureAndCopyInfo函数来绕过签名验证
Mach-O | 在 OS X, 差点儿全部的包括可运行代码的文件,如:应用程序、框架、库、内核扩展……, 都是以Mach-O文件实现. Mach-O 是一种文件格式,也是一种描写叙述可运行文件怎样被内核载入并运行的ABI (应用程序二进制接口)
Mach-O 为 Mach O bject 文件格式的 缩写 ,它是一种用于 可运行文件 , 目标代码 , 动态库 , 内核转储 的文件格式。作为 a.out 格式的替代,Mach-O提供了更强的扩展性,并提升了 符号表 中信息的訪问速度。 a.out是旧版类Unix系统中用于运行档、目的码和后来系统中的函数库的一种文件格式,这个名称的意思是汇编器输出。 虽然眼下大多数类Unix系统都已改用ELF格式,不再採用a.out格式,但编译器和链接器依旧会在用户未指定文件名称时,将输出文件取名为“a.out” ELF = Executable and Linkable Format,可运行连接格式,是UNIX系统实验室(USL)作为 应用程序二进制接口(Application Binary Interface,ABI)而开发和公布的,也是Linux的主要可运行文件格式。 Executable and linking format(ELF)文件是x86 Linux系统下的一种经常使用目标文件(object file)格式,有三种主要类型: (1)适于连接的可重定位文件(relocatable file),可与其他目标文件一起创建可运行文件和共享目标文件。 (2)适于运行的可运行文件(executable file),用于提供程序的进程映像,载入的内存运行。 (3)共享目标文件(shared object file),连接器可将它与其他可重定位文件和共享目标文件连接成其他的目标文件,动态连接器又可将它与可运行文件和其他共享目标文件结合起来创建一个进程映像。 |
专业一点讲, 它告诉系统: 1,使用哪个动态库载入器 2,载入哪个共享库. 3,怎样组织进程地址空间. 4,函数入口点地址,等. Mach-O 不是新事物. 最初由开放软件基金会 (OSF) 用于设计基于 Mach 微内核OSF/1 操作系统. 后来移植到 x86 系统OpenStep. 为了支持Dyld( Mac OS X的连接器) 执行时环境, 全部文件应该编译成Mach-O 可执行文件格式. Mach-O 文件分为三个区域: 头部、加载命令区Section和原始段数据. 头部和加载命令区描写叙述文件功能、布局和其它特性;原始段数据包括由加载命令引用的字节序列。为了研究和检查 Mach-O 文件的各部分, OS X 自带了一个非常实用的程序otool,其位于/usr/bin文件夹下。 |
ASLT 地址空间布局随机化 | 是一种针对缓冲区溢出的安全保护技术,通过对堆,栈,共享库映射等线性区布局的随机化,通过添加�攻击者预測目的址的难度,防止攻击击者直接定位攻击代码位置,达到阻止溢出攻击的目的。 | proc/sys/kernel/randomize_va_space用于控制Linux下 内存地址随机化机制(address space layout randomization),有下面三种情况
0 – 表示关闭进程地址空间随机化。 1 – 表示将mmap的基址,stack和vdso页面随机化。 2 – 表示在1的基础上添加�栈(heap)的随机化。 |
FAT ELF | 一个胖二进制(或多架构二进制)是一种已扩大能够在多个处理器类型上运行指令集的计算机可运行程序。运行通常的方法是包含一个版本号的机器代码的每一个指令集,前面代码的运行跳转到对应的节中的全部操作系统兼容。这将导致在一个文件比常规的单体系结构的二进制文件大。
利用胖的二进制结构的操作系统软件是不常见的;有几种方法来解决相同的问题,如使用一个安装程序,选择一个特定平台在安装时,以源码形式分发软件,在操作的系统编译,或者使用虚拟机(如通过Java),并仅在时间编译。 |
但核心过程例如以下:
第一步:获得cryptid,cryptoffset,cryptsize(用otool)
cryptid为加密状态,0表示未加密,1表示解密;
cryptoffset未加密部分的偏移量,单位bytes
cryptsize加密段的大小,单位bytes
第二步:将cryptid改动为0
第三步:gdb导出解密部分
第四步:用第二步中的解密部分替换掉加密部分
第五步:签名 (ldone)
第六步:打包成IPA安装包
名词 | 意义 | 备注 |
MetaData | 用于描写叙述要素、数据集或数据集系列的内容、覆盖范围、质量、管理方式、数据的全部者、数据的提供方式等有关的信息。 元数据被定义为:描写叙述数据及其环境的数据 | 元数据以非特定语言的方式描写叙述在代码中定义的每一类型和成员。存储下面信息: 1,程序集的说明。 2,标识(名称、版本号、区域性、公钥)。 3,导出的类型。 4,该程序集所依赖的其它程序集。 5,执行所需的安全权限。 6,类型的说明。 7,名称、可见性、基类和实现的接口。 8,成员(方法、字段、属性、事件、嵌套的类型)。 9,属性。 10,修饰类型和成员的其它说明性元素。 |
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/119086.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...