给AppleRTC打补丁防止重置BIOS
安装完黑苹果会发现BIOS设置会被重置,这是因为AppleRTC导致的,解决这个办法有几种方案:
方案一:直接在EE目录加上这个防重置驱动ElliottForceLegacyRTC.kext
这种比较稳定可靠,目前在我的电脑上测试是没有问题的。
方案二:在变色龙配置文件kext.plist里加上<AppleRTCPatch></true>
这个方案在我的电脑上测试没有成功,可能与MacOS版本有关系。
方案三:手动给AppleRTC打上二进制补丁,并替换原生的AppleRTC文件
在网上找了几种补丁方案,用perl命令替换AppleRTC里面的二进制代码,结果都没有成功。
为了研究这个AppleRTC的二进制补丁,我找来了变色龙最新版本(Enoch_2921)的源代码,
在文件kernel_patcher_internal.c里发现了以下内容:
// ===================================
// (Clover)
// Patching AppleRTC to prevent CMOS reset
unsigned int AppleRTC_Patch(void *data, UInt32 DriverSize, UInt32 StartLocation)
{unsigned int count = 0;// as far as I know this works from Lion to SierraUInt8 LionSearch_X64[] = { 0x75, 0x30, 0x44, 0x89, 0xf8 };UInt8 LionReplace_X64[] = { 0xeb, 0x30, 0x44, 0x89, 0xf8 };UInt8 LionSearch_i386[] = { 0x75, 0x3d, 0x8b, 0x75, 0x08 };UInt8 LionReplace_i386[] = { 0xeb, 0x3d, 0x8b, 0x75, 0x08 };UInt8 MLSearch[] = { 0x75, 0x30, 0x89, 0xd8 };UInt8 MLReplace[] = { 0xeb, 0x30, 0x89, 0xd8 };//SunKi//752e0fb6 -> eb2e0fb6UInt8 MavSearch[] = { 0x75, 0x2e, 0x0f, 0xb6 };UInt8 MavReplace[] = { 0xeb, 0x2e, 0x0f, 0xb6};
从这部分代码能看出来,这个补丁是从Clover的代码里搬过来的,嗯有很多Clover用户也反馈RTC补丁没有作用。
看来它们使用的补丁是一样的,并且我在网上找到的手动补丁几乎都是上面的几种方法。
可能在老版本MacOS上面这个补丁是可以生效的,目前系统升级后,导致这个补丁失败。
为了进一步研究这个补丁,我又找来了MacOS 10.11.6的原生驱动文件,AppleRTC.kext。
用WinHEX搜索了以上补丁内容,发现只有0x75,0x2e,0x0f,0xb6这一组数据可以找到,其它几组数据是不存在的。
从系统开机的日志可以看出来,AppleRTC的Patch也成功了,说明替换了0x75,0x2e,0x0f,0xb6为0xeb, 0x2e, 0x0f, 0xb6
但是并没有解决问题。
我用WinHEX手动替换了原始文件的相关内容,再次重启系统,发现问题依旧。
看来这个补丁对于当前系统版本(10.11.6)的确是没有作用了。
为了再进一步研究这个补丁,我只好亲自对AppleRTC进行反汇编,定位到0x75,0x2e,0x0f,0xb6的指令。
发现这里刚好调用了两次RTC写数据的函数,补丁的作用是跳过这两次写数据的动作。
这样一来好像这个补丁没问题啊,为什么还会失效呢?
因为这个写函数的调用不止这一处,还有很多地址有引用,所以一不做二不休,我干脆把写函数给干掉。
直接使用JMP大法,让写数据的函数失效,再来测试一下。
果然,这回BIOS不会重置了!!!
所以这个二进制的补丁应该这样写:
搜索:41 89 d7 41 89 F6
替换:E9 9F 00 00 00 90
收工!
最后意外地发现网上有与这个补丁比较相似的内容:但这是对10.10的RTC补丁:
http://bbs.pcbeta.com/forum.php?mod=viewthread&tid=1551019
给AppleRTC打补丁防止重置BIOS相关推荐
- 服务器bios删除系统,服务器重置bios
服务器重置bios 内容精选 换一换 通过在BIOS中设置一些高级选项,可以有效提升虚拟化平台性能.表1列出了TaiShan服务器和性能相关的BIOS推荐配置项.开启CPU预取配置选项的目的在于CPU ...
- linux 重置bios密码忘记,Windows10专业版下重置BIOS密码的技巧
还有谁也不会在电脑的硬盘上保存带有个人或机密信息的文档或文件.我们不想要的信息可能落入任何人的手中,所以很多用户选择以某种方式保护他们的数据.有不同的方法,我们可以密码保护访问某些文件和文件夹,加密或 ...
- DELL 755重置BIOS设置教程
参考文档地址:http://tieba.baidu.com/p/721711019 Optiplex台式机系列 1.启动计算机,当看到DELL启动画面时,按"F2"键进入BIOS: ...
- 电脑关机状态重置BIOS
本文已迁移至:https://www.aflyingfish.top/articles/96b163f4b033/
- linux bios设置重置,如何将BIOS重置为默认设置 | MOS86
有时,用户会用尽所有选项,而不得不重置BIOS来修复计算机. BIOS可能由于更新不正确或恶意软件而损坏. 如果您需要对PC进行故障排除,那么了解如何重置BIOS至关重要. BIOS代表基本输入输出系 ...
- BIOS——[PXE-E61:Media test failure,check cable]解决方案
问题描述 PXE-E61: Media test failure, check cable PXE-M0F: Exiting Intel PXE ROM. PXE-M0F: Exiting Intel ...
- 『WIN11』出现问题,你的PIN不可用,请重置PIN,无限循环解决
自己配的主机 TUF B450M PRO GAMING + R5 3600大雕 前两天换了张GTX1650 然后--就点不亮了 逐步排查时扣了主板电池以重置BIOS 最后发现是内存条没插好 终于点亮进 ...
- bios设置使用集成显卡输出视频信号后,显示器黑屏了
背景:新到的服务器给它安装ubuntu 经过多次尝试,始终无法启动 然后脑袋被门挤了自己去设置bios 主机是戴尔的,点击了video->primary display->intel HD ...
- Dell清除BIOS密码及硬盘锁
1. 获取System Number F2进入BIOS,点击Unlock出现以下界面,记录System Number 2.获取password 访问https://bios-pw.org/,将记录的S ...
最新文章
- App-IOS与Android弱网环境测试
- 【Ubuntu入门到精通系列讲解】常用 Linux 命令的基本使用
- MySQL笔记2: count() 函数和 sum() 函数用法和区别
- 如何在窗体之间通讯的几种方法 ? VB.NET方案
- python读取字典元素笔记_Python中列表、字典、元组数据结构的简单学习笔记
- php+管道+pipe管道,angular2+管道pipe
- 不定方程(质数与因数)
- 商业 - 业务领先模型介绍(BLM)
- c#里listview里如何获取点击的是哪一列
- pycharm 无法安装模块 nothing to show
- ROS与Arduino:ros_arduino_bridge功能包的使用解读
- element table实现前端分页
- Word 技术篇-文档中不同级别标题自动重新编号设置方法,论文多级编号演示
- 实时立体匹配网络StereoNet
- c数组(结构体数组)定义与初始化
- 编译原理—实验二LL(1)语法分析(一)
- 从谷歌创始人的公开信中所学到的
- bootstrap-table自定义列排序
- html5 手机相册裁剪,H5的手机图片裁剪特效
- STS报错“HttpServlet cannot be resolved to a type”
热门文章
- 贾跃亭被法院列入“老赖”黑名单,这下真成“下周回国假药停”了?
- 自动驾驶浪潮下,如何给技术迭代插上数据的“翅膀”?
- [导入]千江有水千江月 万里无云万里天
- 鸟瞰图-BirdView及其在MATLAB中的表示与实例
- vivado中symthsis(综合)和implementation(执行)具体是为了完成什么操作?
- 组态王安装步骤及个别异常解决
- 【02】如何学习微服务
- 使用ElasticSearch完成百万级数据查询附近的人功能
- (1分钟速通面试) 矩阵分解相关内容
- 智慧商场精准客流统计系统