appsync没有装是不能安装的,程序没有破解是不能运行的
Mach-O | 在 OS X, 几乎所有的包含可执行代码的文件,如:应用程序、框架、库、内核扩展……, 都是以Mach-O文件实现. Mach-O 是一种文件格式,也是一种描述可执行文件如何被内核加载并运行的ABI (应用程序二进制接口)
Mach-O为Mach Object文件格式的缩写,它是一种用于可执行文件,目标代码,动态库,内核转储的文件格式。作为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.
Mach-O 文件分为三个区域: 头部、载入命令区Section和原始段数据. 头部和载入命令区描述文件功能、布局和其他特性;原始段数据包含由载入命令引用的字节序列。为了研究和检查 Mach-O 文件的各部分, OS X 自带了一个很有用的程序otool,其位于/usr/bin目录下。 为了支持Dyld(Mac OS X的连接器) 运行时环境, 所有文件应该编译成Mach-O 可执行文件格式. |
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,修饰类型和成员的其他说明性元素。 |
原文地址:http://blog.csdn.net/astraylinux/article/details/24590501