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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

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

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

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

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

提问于
用户回答回答于

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

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

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

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

热门问答

腾讯云GPU服务器不能联外网吗?

小爱同学

腾讯云 · 技术支持 (已认证)

推荐
腾讯云GPU服务器可连外网,GPU 云服务器提供和标准CVM 云服务器一致的方便快捷的管理方式。 图片.png GPU云服务器作为CVM云服务器的一类特殊实例,购买、 操作、维护等方式与CVM云服务器一致 图片.png GPU 云服务器(GPU Cloud Computin...... 展开详请

win服务器怎么给文件夹配置755权限?

推荐
下面以腾讯云win服务器(Windows Server 2016 数据中心版 64位中文版)为文件夹配置755权限为例 1.右击【属性】 图片.png 2 .选择【安全】- 【编辑】 图片.png 3. 可对当前文件进行755权限配置 图片.png 要修改某个文件的权...... 展开详请

腾讯云sdk 兼容JDK6?

推荐

如果你说的是https://cloud.tencent.com/document/sdk/Java的话,jdk最低版本是1.7,不支持1.6

android 离线推送 为什么setOfflinePushListener不回调?

嗨喽你好摩羯座
推荐
您好,使用云通信 IM SDK 的通知栏提醒,建议参考:https://cloud.tencent.com/document/product/269/9234 中的描述来操作,通知栏提醒的内容由类 TIMOfflinePushNotification 来定义,可以通过这个类对外...... 展开详请

为什么cmq的topic配置订阅者为queue,向topic发送消息无法到达queue?

是的, 向topic发送消息应该会立即投递到订阅者。您可以检查您配置的队列名称是否正确且是真实存在的队列。如还不能解决您的问题,您可以点击控制台右上角的“工单”,进行问题进一步的排查,腾讯云会有专业的售后24小时为您服务。

脏字过滤只支持 TIMTextElem 消息,对自定义消息无效,请问有接口可以主动检查吗?

学生路人
推荐
您好,脏字检查的内容包括单聊和群组消息(只检查文本消息 TIMTextElem,不支持对自定义消息 TIMCustomElem 的过滤)、群名片、群组资料(群名称、群简介、群公告)用户资料和好友关系链中 bytes 类型的数据(如昵称、好友备注和好友分组等)。目前没有这样的接口喔...... 展开详请

所属标签

扫码关注云+社区