bootloader解锁 bootloader上锁教程
在之前的篇章中,我们探讨了锁机软件的分析。有热心的朋友提及了磁盘锁的话题。那么,这期内容我们就来深入探讨一下磁盘锁的奥秘。
在开始之前,我想先给大家简单解释一下什么是主引导记录(MBR)。
MBR位于磁盘的最前端,是一段引导代码。对于有过文件系统或BootLoader开发经验的朋友来说,应该对它非常熟悉。当我们读写磁盘(或SD卡、TF卡)时,其第一扇区就负责定位磁盘分区的引导信息。如果没有MBR区,那么基本无需谈论文件系统。它就像是计算机磁盘数据的引路人,若没有它,你的磁盘文件将无从寻起,计算机也无法找到它的位置。
磁盘锁的工作原理大致上就是将MBR中的数据隐藏起来,并用它自己的引导代码替代之。遗憾的是,这种替代需要输入密码才能恢复MBR到原始状态(尽管由于代码兼容性处理不当,即便密码正确有时也无法恢复)。
有人可能会说,这不过是小问题而已,通常这类锁机只是将MBD复制到第二或第三扇区,再还原回去即可。的确如此,但对于那些不熟悉此道的人来说呢?
大多数的磁盘锁程序会使用CreateFile(A/W)来打开设备符如"\\\\.\\PHYSICALDRIVE0"。引导程序通常会写在第一扇区,也就是MBR区,大小通常为512字节,恰好与一个扇区的大小相匹配。
这也就是说,当磁盘锁程序尝试写入数据到设备符时,我们只需捕获并记录下它写入的数据。这其中很可能就包含了该磁盘锁的锁码。这是其基本原理。
磁盘锁也有其更高级的一面。就像给自己的东西加上一层保护套一样,这也是为了增加安全性。
接下来我将详细讲解一下逆向过程的一些步骤。
改一下程序的名字(避免使用汉字)。
然后利用PE(Portable Executable)环境开始操作。加载规则脚本并给它一个新名字(如"doll db ")。
写文件数据的API是WirteFile。现在,在命令窗输入“hook WriteFile”,然后按回车键。
点击启动按钮(通常显示为一个三角形图标)。
在下面的菜单栏中选择相应的数据选项。
一般情况下,第一个512字节的数据就是我们之前提到的MBR。当引导失败时,你会在电脑屏幕上看到一段相关的文字信息。
我们点击第二个数据包。这种类似于BootLoader的代码通常是用16位汇编语言编写的。
在编码栏中选择反汇编16位代码。
有些朋友可能会觉得反汇编代码难以理解。别担心,通常密码是以资源的形式存在的。拉到汇编代码的底部你就会找到密码了。
这样我们就可以轻松应对了。其实这并没有太多技术含量。
自从PeDoll被开发出来后,这种行为分析下的远控木马服务端大多无处遁形。我特别喜欢用PeDoll来分析这种远程控制木马。通过这种行为分析,你可以很容易地找到大部分远程木马隐藏在计算机的哪个位置、动了哪些文件与注册表、与哪个服务器进行了通讯、发送了什么数据包。我们就可以通过对数据包的分析来应对那些企图对我们不利的服务器端。
遇到这种情况也不必客气,直接采取相应的措施即可。