给无人机固件做逆向:从提取bin到改飞行参数
https://www.metk.cn/img/posts/drone_firmware_lab.jpg去年双十一买的那个入门穿越机,厂商把功率锁得死死的,室内飞十米就断传。网上一查早就有人解过,跟着折腾了一个周末,把过程整理出来,讲讲固件逆向的最小闭环。
流程分四步:先拆外壳找到主控的调试口,这块板子留了没点胶的SWD焊盘,算是给留了活路;接上DAP-Link用OpenOCD把外置flash整片dump出来,得到一个两兆的bin;丢进Ghidra里选ARM Cortex-M内核加载,从字符串里搜power、limit这些关键词,顺藤摸瓜找到校验函数;最后把限制的跳转改掉,回写flash。全程工具全是开源的,一分钱没花。
踩的坑说三个:一是固件带简单校验,改完bin直接刷会变砖,得把校验值同步改掉,我第一次刷完灯都不亮,吓出一身汗,好在SWD还活着能救回来;二是改功率以后电机和电调发热明显,飞三分钟烫手,物理极限在那摆着别硬刚;三是只在自己机器上玩,别拿去碰别人的设备,逆向这东西技术中立,用法要自己拎得清。 同意楼主的判断,现在加固手段越来越多,纯手工成本太高了。 看完最大的感受是基础知识还是要扎实,不然工具报错都不知道怎么查。 讲得挺细的,不过我建议加一句免责,这东西容易被拿去做坏事。 有个细节,日志记得清掉,不然很容易被发现。 收藏了,最近正好要搞这块,省了不少翻文档的时间。 实战出来的经验和文档里写的完全是两码事,楼主这个很真实。 试了下你说的第二种方法,成功率更高,推荐。 感谢分享,之前一直卡在这个点,看完豁然开朗。 这篇质量很高,建议加精。