运行时的IOS修补程序指令是什么?

  • 回答 (3)
  • 关注 (0)
  • 查看 (52)

如何在应用程序运行时修改单个程序集指令?

我有一个移动基板的调整,我正在为一个现有的应用程序编写。的构造函数中(MSInitialize),我需要能够在应用程序的代码中重写单独的指令。我的意思是,在应用程序的地址空间中可能有多个位置,我希望修改这些位置,但是在每种情况下,只需要修改一个指令。我已经为应用程序禁用了aslr,并且知道要修补的指令的确切内存地址,并且我有十六进制字节(作为char[]),但这是不重要的,如果有必要,可以更改新指令。我只需要弄清楚怎么做改变。

我知道IOS使用数据执行预防(DEP)来指定可执行内存页也不能写,反之亦然,但我知道在越狱设备上可以绕过这一点。我还知道iDevice使用的ARM处理器有一个指令缓存,需要更新以反映变化。然而,我甚至不知道从哪里开始这样做。

婷留婷留提问于
晴空在腾讯云多数时候是在看回答于

从处理器寄存器写入指令内存,正如其他人所说,有点棘手。尤其是iPhone,因为苹果试图对处理器细节保密。

内存访问权限是第一个问题。可执行内存通常是不可写的。但是,如果克服了这一问题,那么就有一小部分需要完成,从处理器寄存器中获取数据并进入指令管道。通常,有同步指令,强制在访问之前和之后对内存进行特定的顺序,以及缓存命令,这些命令强制向内存输出脏的写入数据,并清除干净的和可能陈旧的读取数据。这两者都高度依赖于处理器的详细实现。

ARM在网络上有很好的手册,可以为特定处理器详细解释这些内容。

这里有一个地方可以开始理解一个处理器的ARM内存同步模型:http://infotenter.arm.com/Help/index.jsp?Topic=/com.arm.doc.ddi0092b/ch04s03s04.html然后告诉我们如何通过写控制寄存器来刷新指令缓存。

回答过的其他问题

如何看待家用智能机器人的飞速发展?

晴空在腾讯云多数时候是在看
智能机器人需要的技术太多了,但它能像现在一样飞速发展也离不开这些技术的突破。 先不说硬件方面各种传感器,红外线定位等等,因为硬件领域我不太了解,单说软件方面,它就需要: 1.人工智能技术 人工智能的发展,为智能机器人向更高智能领域的发展提供了保障。人工智能需要对语言识别和处理、图...... 展开详请

在物联网中如何通过http的方式接入设备,并实现数据上报和下发,是否有协议的具体说明?

晴空在腾讯云多数时候是在看

您好,经核实物联接入这里使用的是HTTPS协议, 和控制台api不一样。 同时https协议现在不支持数据下发, 只能用于数据上报。 如果要用到数据下发的能力,最好选择mqtt协议。

C ++:我如何创建一个接受连接字符串作为参数的函数?

晴空在腾讯云多数时候是在看
除非您使用宏,否则无法使用您要求的确切语法。 但是,如果你不介意更换<<用,,那么你可以做以下操作: #include <iostream> #include <string> #include <sstream> void log_impl(const std::strin...... 展开详请

如何显示从当前时间添加30分钟的时间

晴空在腾讯云多数时候是在看
使用"HH:mm"24小时格式和"hh:mm a"12小时格式 更新 下面是一个完整的示例,在textview上显示您想要的内容: TextView timeNow = findViewById(R.id.time_now); Calendar cal, at...... 展开详请

google_endpoints_service.map:googleapi:错误403:调用方在项目上没有权限'servicemanagement.services.create',禁止

晴空在腾讯云多数时候是在看

在GCP上创建项目时,它可能会为您分配一个不同的项目ID以使其唯一。您可以在卡上查看https://console.cloud.google.com/home/dashboardproject info。使用通话中的Project IDset-project

在Python中获取计算机的UTC偏移量

晴空在腾讯云多数时候是在看
hours_delta = (time.mktime(time.localtime()) - time.mktime(time.gmtime())) / 60 / 60

关于作者

晴空

在腾讯云多数时候是在看

所属标签

扫码关注云+社区