首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ARM64 撬开逆向大门

    为什么要学ARM64? android 5.0系统就开始引入Arm64-v8a,它用于支持全新的AArch64架构,这个架构也就是我们要学习的arm64汇编。...那么我们利用IDA(反汇编工具)进行静态逆向分析so文件、或者IDA动态调试so文件,都需要和arm64汇编代码打交道,因此对于学习掌握好ARM64汇编对阅读反汇编代码能达到事半功倍的效果。...ARM64的汇编指令集中,有一部分指令的执行时影响状态寄存器的,比如add、sub、or汇编指令等,他们大都是运算指令(进行逻辑或算数运算) ?...ARM64汇编的函数有那些需要重点关注? 1.函数调用约定是什么约定?...ARM64汇编代码: ? 3.3.2 函数中有九个参数的,需要用栈寄存器来传递参数 源代码: ? ARM64汇编代码: ? 4.函数中的堆栈怎么平衡?

    2.6K54

    arm64硬件架构支持总结

    而国产硬软件一般也就是代指arm64硬件架构及在此基础上的linux定制发行版,最近一周刚好完成了一些支持arm64硬件架构的工作,这里总结一下。...一些常用的arm64软件源地址如下: centos的arm64 yum源地址是:https://mirrors.aliyun.com/centos-altarch/ ubuntu的arm64 apt源地址是...k8s支持arm64架构 其实k8s要支持arm64还算是比较简单,由于Go语言里进行跨平台交叉编译很简单,所以k8s核心的一些二进制文件及docker镜像均有arm64架构的,将正常部署的k8s集群中这些二进制文件都替换成...arm64架构的,k8s也就可以在arm64上正常运行了。...c++程序支持arm64架构 系统中还有一些c++写的程序,需要在arm64架构的服务器上重新编译一下,编译方法也比较简单,就是用如下这些命令: sudo apt-get install xxxx-dev

    5.4K20

    汇编语言之ARM64汇编

    对于arm64系的CPU来说, 如果寄存器以x开头则表明的是一个64位的寄存器,如果以w开头则表明是一个32位的寄存器,在系统中没有提供16位和8位的寄存器供访问和使用。...() 注意:ARM64开始,取消32位的 LDM,STM,PUSH,POP指令! 取而代之的是ldr\ldp str\stp ARM64里面 对栈的操作是16字节对齐的!!...提供了一个mov指令(传送指令),可以用来修改大部分寄存器的值,比如 mov x0,#10、mov x1,#20 但是,mov指令不能用于设置pc的值,ARM64没有提供这样的功能 ARM64提供了另外的指令来修改...ARM64平台的特色指令,它面向硬件做了优化处理的 x30寄存器 x30寄存器存放的是函数的返回地址.当ret指令执行时刻,会寻找x30寄存器保存的地址值!...方法返回值 ARM64下,函数的参数通常情况下是存放在X0到X7(W0到W7)这8个寄存器里面的.如果超过8个参数,就会入栈.

    3.9K60

    iOS - Dissecting objc_msgSend on ARM64

    ARM64 有 31 个 64 位的寄存器。他们提供的符号从 x0 到 x30。它也可以使用 w0 到 w30 来访问寄存器的低 32 位。...标记指针在 ARM64 中通过设置高位指针来表示。 (这是一个和 x86-64 有意思的对比, x86-64 是设置在低位。) 如果高位被设置了1,当被作为有符号整数时,值就为负。...标记指针的前4位(在ARM64 中)代表对象的类。它们实际上是标记指针的 isa。当然,4位不够保存一个类的指针。实际上,有一个特殊的表来存放可用的标记指针类。...标记指针(至少在 ARM64 中)也指针额外的类。当前四位都被设置为1 那么下 8 位 被用来作为标记指针类表的扩展索引。这也让运行时去支持更多的标记指针类,减少更多的存储成本。...ARM64 需要两个命令来读取一个符号的地址。这是一个类似 RISC 架构的标准技术。在 ARM64 中指针是64位的,然而指令仅仅是32位的。一句指令是无法保存一个完整的指针。

    85740

    ARM64 SMP多核启动(下)- PSCI

    说他简单是相对于功能来说的,因为他只是实现了从处理器的启动,仅此而已,所以,现在社区几乎很少使用spin-table这种方式,取而代之的是psci,他不仅可以启动从处理器,还可以关闭,挂起等其他核操作,现在基本上arm64...首先,我们先来看下设备树cpu节点对psci的支持: arch/arm64/boot/dts/xxx.dtsi: cpu0: cpu@0 { device_type...boot_cpu_init //引导cpu初始化 设置引导cpu的位掩码 online active present possible都为true ->setup_arch // arch/arm64...->cpu_boot(cpu) ->cpu_psci_ops.cpu_boot ->cpu_psci_cpu_boot //arch/arm64...,然后从处理器进入内核后需要自身做一些必要的初始化,就进入idle状态等待有任务来 调度,我们主要以分析源代码的方式讲解了spin-table和psci两种方式来启动多核,而arm64平台使用psci更为广泛

    3.4K20
    领券