这里我采用的是(1)。把该 exe 用 16 进制编辑器例如 UltraEdit 打开,IDA中的是进程空间中的逻辑地址,把 ImageBase 减掉就成为文件地址,而 Exe 的默认 ImageBase 是 00400000,所以 00466E21 转换到文件地址是 00066E21,跳转到 00066E20 这一行,把从第二个字节开始的 6 个字节(0F 83 C9 00 00 00)修改成 (0F 82 C9 00 00 00),实际上我们只是修改了一个字节(文件地址为 00066E22 的那个字节从 0x83 改为 0x82),这样原来的 JNB 指令就变成了 JB 指令。
修改以后,运行修改后的 exe 程序,那个烦人的 MessageBox 如预期的没有出现,而是出现了系统正在关机的提示(有希望了!),然后系统自动重启,激动人心的时刻到了,终于看到进入正在刷新 bios 的提示(如下图所示),大约1~2分钟,bios 刷新完成,然后经过再次进入 bios 简单检查版本信息,已经回到 A03 版本一切正常!!!

至此,刷回低版本 bios 就完成了。如果要刷其他版本的 bios 我估计这里是差不多的,一旦遇到这种版本问题导致的不让你刷,就可以对这个文件进行修改。好在这些 bios 升级程序并没有对这种修改设置任何障碍,因此只要具有一点汇编知识,借助工具就可以很容易的修改掉这个逻辑。最后额外吐槽一下,dell 的这个不合理的逻辑,自由权应该交给用户决定!同时,众所周知,刷 bios 被形容为具有风险的事情,我的个人意见时,一定要谨慎,如果不是特殊需要(例如为了激活 win7 以上系统)和有成功的把握,就尽量不要去刷 bios。最后关于激活 win7 再额外说一点,目前几乎所有软破解方法和网上流传的 key 已经全部失效,而只剩下最后一条路,就是从 bios 上入手(也就是不管用软件还是硬刷 bios,使 bios 中具有 SLIC 2.1 版本),模拟成大的笔记本 oem 厂商的产品,这样 windows 就只能放行,因为尽管这种用手段激活的“盗版”用户数量很多,但是因为它们混杂在数量更加庞大的正版 oem 产品之中,而目前 windows 的认证技术还不足以能识别,所以这种“盗版”几乎肯定是安全的。
【补充】BiosFix 程序下载链接:BiosFix(刷Bios程序辅助工具) 免费绿色版
说明:该程序是我写的一个命令行程序。因为 Bios 程序需要做的改动很小(目前只需调整一条指令的机器码,只涉及 1~2 个字节),有了这个程序,我只需要提供 Fix 信息,有用户自己完成 Fix,而不再需要我上传较大的 Fixed 结果,这样就可以节省网络传输流量和存储空间。附件中包含程序,配置文件,和程序的源代码,以及使用说明。
用法:
命令行格式: BiosFix.EXE "XXXX.EXE"










