|
本帖最后由 liuzhaoyzz 于 2020-12-4 08:10 编辑
有没有大神用c/c++写一个判断MBR/PBR是nt5.x还是nt6.x或以上的命令行工具?5大pecmd写的,没有加壳的版本,一会被360安全卫士咔嚓掉,mdyblog大神有免杀版pecmd,用这个免杀版pecmd内嵌脚本会不会好点?360一会又不报风险,我自己的确不用360(仅仅用于测试),但是发给别人就被咔嚓掉很郁闷。 一楼有5大pecmd源代码。另外5大能否解释下这些代码的原理?从代码看不懂原理。
ChkMbrPbr原理
1、GETF \\.\PhysicalDrive%&disk%,0#440,&BootCode读取磁盘0扇区440字节长度到变量bootcode
2、CODE *,NTLDR,**-ANSI,&NT5PbrStr把NTLDR用ANSI编码保存在变量NT5PbrStr中。
3、GETF -find %&drv%,0#512#5#0#1#512,&NT5PbrRet,*&NT5PbrStr
读取磁盘0扇区512字节→5字节?偏移0→1号块?偏移512,查找NT5PbrStr(即NTLDR),查找结果保存在到变量NT5PbrRet。
[大位置[#大长度[#子长度[#子偏移[#块大小[#块内偏移]]]]]],
4、如果没找到NTLDR,就查找BOOTMGR,
GETF -find %&drv%,0#512#7#0#1#512,&NT6PbrRet,*&NT6PbrStr
读取磁盘0扇区512字节→7字节?偏移0→1号块?偏移512,查找NT6PbrStr(即BOOTMGR),查找结果保存在到变量NT6PbrRet。
5、查找NT5Mbr,NT6Mbr变量,如果找到就分别赋值为PrintMBR=MBR:NT5,PrintMBR=MBR:NT6
6、查找NT5PbrRet,NT6PbrRet变量,如果找到就分别赋值为PrintPBR=PBR:NT5,PrintPBR=PBR:NT6
|
|