iOS crake dynamic ASM for ARM64 tongyong jicunqi.
really machine, : arm64 asm, jicunqi , zhiling duizhan 首先先要明确计算机是以二进制来进行计算的,下面的位是所以计算的系统32位(bit位),则二进制占满32位,也是需要32位的而16进制,是满16进1,而二进制是满2进1,则说明16进制的一个位置是需要二进制的4位才能占满的(16=2^4),则32位对于16进制来说需要8位(每一位是二进制的4个位) · 作者:C语言刘老师链接:https://www.zhihu.com/question/421682130/answer/1479334309来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 现在先引入一个计算机常识,那就是,无论是什么类型的指针变量,在32位系统下,寻址范围是32位,一个指针变量所占用的空间是4个字节,在64位下寻址范围是64位,一个指针变量所占用的空间是8个字节。 那么为何会是这个值呢?就听我给你细细讲来。 首先,我们得知道另一个计算机常识,那就是,一个字节(byte)占用多少位(bit),没错,是8位。这里,你可能会发现一个有趣的地方,32 bit == 4 byte , 64 == 8 byte。这不是巧合,哈哈哈。 现在我问你一个问题,64位能表示的数值个数是多少?很简单,2^64个,数值范围就是从0到2^64 - 1,这也是如今64位CPU的寻址范围,用16进制表示就是:0---FFFF FFFF FFFF FFFF(F是数值15,二进制就是1111,刚好是四位,所以2个16进制位就是一个字节),那么重点就从这儿开始了,如果想让一个指针变量存储的数值能表示完所有的寻址范围(也就是所有的地址值),那么毋庸置疑,他的存储空间必须是大于等于64bit,也就是8个字节,少一个bit,都不能完整的表示完所有的寻址范围,刚好,8个字节刚好能不多一位不少一位的表示完所有的寻址范围,因此就是8个字节。同理的32位下就是4个字节 外部建立一个汇编文件。 .text // 这是代码段, 证明这个以后是要放到代码段里面去的。 .data // 数据段 .stack // 栈段 如果你的返回值比较巨大,那么会放到堆栈里面去。 然后返回那段的内存的地址。这样的话 retn 多大的内容都可以。 x0, 又当参数又当返回值,不会乱套吗? A , 因为操作时间是分开的。 eg: 什么时候是参数, 进入函数的那一刻,里面装的是参数, ret的时候后,他就是返回值。 Q: _text 为什么plus 下划线, 应为这是非常底层的东西, 汇编是低级语言。语言特性。一但你的函数是公开的,就要在globe, 声明 。 公开。 Q:变量保护, 你要protect谁的值, 则先存起来对吧。 比如 line27 需要保护x0的值, 先move x0值到x2, 最后再 mov x0,x2,归还。 这个就是cpsr 状态的指令 使用 LLDB, 单步执行。 si, si, 输入两次, 就跳走了。 单纯使用B指令是不会跳到17th执行的 具体需要多多联系~ W0 是32位的寄存器, 只有4byte, 而 X0是64位寄存器,有8byte。8个字节。int只有4个字节 不管LDR,还是LDUR, 都是取内存中的数据,放到register中去, 区别在内存寻址的问题, 排序的话 W1 ,W0 所以, hex16进制 1,2,3,4, 所以倒着来 str指令, 从register 写入 RAM 。 如果w0 就是写入4个字节到RAM, 如果x0 就是写入8个字节到RAM。 格式: str ,register, 把寄存器的值写入 RAM-address MOV只能操作 寄存器~ 当函数执行完毕后, RET 指令, 直接返回到了LR 寄存器的值, 下一行 BL 执行时候,将下行代码地址赋值LR寄存器,函数完毕后,用RET 执行将 LR 的值赋值PC 寄存器,然后返回。关于bl和ret指令的作用 回收♻️函数栈底 bl带返回跳转指令会修改lr寄存器的内容。 本小节见上。 https://cloud.tencent.com/developer/news/836327。 iOS打包签名,你真的懂吗 iOS需要了解的ARM64汇编https://www.jianshu.com/p/23a9110cff96 起落落落起的春招找实习之旅 Object-C 编程从入门到精通(大神亲授) OC基础 ---- > 属性和点语法 OC-基础总结(一) iOS逆向:动态调试 当静态分析无法获取足够的信息时,就需要进行动态分析,在 app 运行时,追踪方法调用、查看内存信息。最后找到想要分析的关键函数 iOS符号表恢复&逆向支付宝 2016-08-25 MacOS 10.15安装IDA7 MacOS安装IDA Pro 7.0 Crack arm64 架构之入栈/出栈操作
