MacOs 双真机内核/驱动调试
一直在想这个macos可以windows一样使用windbg通过串口,1394和usb进行调试,这样就方便多了。看到资料, MacOs是可以使用以太网卡来调试的:
1. 先去developer.apple.com下载对应版本的KDK
2.安装KDK,文档和调试符号在/Library/Developer/KDKs/KDK_10.14.1_18B75.kdk/下.
3.安装的目录下有一个readme.html,里面详细说明了如何进行双机调试.
4. Host机器先执行: lldb /Library/Developer/KDKs/KDK_10.14.1_18B75.kdk/System/Library/Kernels/kernel
5.然后执行 kdp-remote host, host 就是你的目标机器的IP.
6. 如果连接不上,可以arp -a -n -i en0 这样可看arp, 因为这个时候,目标机器是不会处理相关的arp的who is arp包的,有时候你需要sudo arp -s 192.168.1. 5 1b:1b:1d:15:14:18 这样绑定ip和MAC地址.
7. 小提示,你可以在debug=0x146的情况下,使用ctrl+option+command+shift+escape, 随时把系统挂起, 然后使用kdp-remote连接上进行调试.
看起来这个不复杂,但是我一开始并没有成功,查了一下网上也没有什么人说可以成功进行双真机调试,但大部分只是调试了vmware安装的Mac,而非真机。
经过对比发现,原来这个能不能成功调试是取决了你的网卡的型号的,这个需要网卡驱动去实现IOKDP和IOKernelDebugger,同时实现kdp debug时通信的receivePacket和sendPacket这两个方法,只有少数几种以太网卡可以进行调试,如vmware模拟的Intel82574L, Yukon 的网卡, NVEthernet这几个,具体可以查nvenet.kext , Intel82574L.kext和 AppleYukon2.kext这三个kext的Info.plist的硬件id, 只有这三个驱动实现了内核debugger的相关功能。
手上的机器只一个macbookpro, 没有以太网卡,然后两台黑苹果是intel的 I218和I219网卡,第三方的驱动也没有实现这些功能。
本来是想直接淘宝买一个的,但是驱动是开源的,通过反汇编研究了上面那个驱动的相关功能实现,感觉实现只需要重载4个方法就可以了, 然后在驱动start的时候把IOKernelDebuger这个设备对象初始化好就可以了。
virtual IOReturn enable(IOKernelDebugger * debugger);virtual IOReturn disable(IOKernelDebugger * debugger);virtual void receivePacket(void * pkt, UInt32 * pktSize, UInt32 timeout);virtual void sendPacket(void * pkt, UInt32 pktSize);
学习了一下,终于搞定,并成功实现了双真机调试.
看了一下,我是这个世界第一个使用黑苹果非免驱的网卡实现MacOs真双机调试的人.
这个大大方便了的一些内核级的补丁制作和原理的研究工作, 对于MacOS驱动和内核开发者来说也是很大的提高了效率.
这个还是现学现写,驱动是基本上大部分时候可以工作的,也支持debugger停过之后(要不久),相关的网络通信还可以继续. 但是还是有一些bug, 欢迎有经验和有兴趣的开发者加入开发,可以私信我加入协作中。
1. 有时候kdp remote会连接不上, 原因未明,kdp-poll是在工作的但是一直收不到包。
2.有时候debug的过程中会出现kdp通信突然出错,并且无法恢复。
相关的驱动代码已经提交到了github, 请点个赞,如果这个帮上忙了。 https://github.com/aerror2/IntelMausiEthernetWithKernelDebugger
MacOs 双真机内核/驱动调试相关推荐
- VMware+Windgb+Win7内核驱动调试
-------------------------------------------------------------- VMware+Windgb+Win7内核驱动调试 ------------ ...
- VMware调试.【转】VMware+Windgb+Win7 内核驱动调试
ZC:我遇到的问题:com_1 怎么都不成功,记起来 貌似原来也遇到过这个问题,看了一下 VMware里面创建的是 "串行端口 2",于是 将 "com_1"改 ...
- Linux内核驱动调试,Linux内核设备驱动之内核的调试技术笔记整理
/****************** * 内核的调试技术 ******************/ (1)内核源代码中的一些与调试相关的配置选项 内核的配置选项中包含了一些与内核调试相关的选项,都集中 ...
- Eclipse中使用真机进行USB调试android程序
在android小程序的开发过程中,使用eclipse中的虚拟机进行程序开发速度较慢,用真机开发可以显著提高调试的速度. 这里我用的操作系统是win7专业版,手机型号华为G520: 进行USB调试的主 ...
- Xcode7 真机免证书调试Cocos2D游戏
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 假设认为写的不好请多提意见,假设认为不错请多多支持点赞.谢谢! hopy ;) 经过一番实验,如今最终能够在Xcode7上免证书真机调试了: ...
- 错误记录:自己创建activity时不能进行真机usb安装调试
1.状况 新建工程师不创建activity,自己新建activity.使用真机调试时不能安装app到手机. 2.问题 a.直接不能点击调试按钮,解决办法:错误记录:error running app ...
- Xcode真机设备无线调试
打开Xcode菜单:Windows->Device and Simulators.找到连接的硬件设备,Connect via network选项打勾. 然后断开数据线,设备仍热连接着 在Xcod ...
- appium android函数,appium连接Android真机,并调试
Android真机:华为pad2 Android和Windows连接同一个局域网 连接USB Android机设置: 打开USB调试 cmd>adb devices,显示Android序列号 , ...
- uni-app真机预览调试:关于ios系统真机调试的操作步骤
介绍: 因手机差异较大,HBuilder并没有提供App的模拟器.不管uni-app或5+App/wap2app项目,都需要连接真实的手机或手机模拟器来运行测试,称之为"真机运行" ...
最新文章
- 【报告解读】126个国家、29个行业、36位高管认为AI的未来这么走
- ArcGIS注册SDE库数据源
- 【C语言】控制台窗口图形界面编程(四):文本输出
- BZOJ1050 [HAOI2006]旅行
- php 渐变色,段落每行渐变色文本效果
- 安卓 多条通知_安卓11第一版发布:原生滚动截屏、屏幕录像、抄国内ROM这么多...
- python中的counter函数_Python的 counter内置函数,统计文本中的单词数量
- Js获取处理日期时间
- Windows 7 Sp1 x64 安装英文语言包
- MWC - 飞控套件CRIUS MWC MultiWii SE v2.6组装
- 我爱淘冲刺阶段站立会议2每天任务3
- 水平放滑轮组计算机械效率,初中物理中考常用公式-总结-2
- 如何使用“MRT”恶意软件删除工具
- Python爬虫贴吧内容
- 『小众摄影』01 期 :网红重庆•千年古镇磁器口
- 如何快速学习数控编程?
- linux 命令 dsm,群晖常用指令 - osc_sa9nsts3的个人空间 - OSCHINA - 中文开源技术交流社区...
- 掌柜星新零售解决方案为母婴亲子行业商家助力
- 算法笔记-问题 A: 【字符串】最长回文子串
- Java常用的Linux命令
热门文章
- CFF 201903-1小中大(java)
- docke 安装rap_Docker搭建RAP2
- 智慧港口解决方案-最新全套文件
- 【硬刚大数据】大数据同步工具之FlinkCDC/Canal/Debezium对比
- 90页PPT | 金融大数据平台总体架构方案(附下载)
- Google对simhash的用法论文读书笔记
- app上传AppStore被拒绝的各种原因
- 单片机接usb设备不用计算机,如何利用usb转串口实现单片机和电脑的通信-与非网...
- iviewui table序号每页只是显示1-10
- 第五章-离散时间LTI系统