mirror of
https://github.com/pbatard/rufus.git
synced 2024-08-14 23:57:05 +00:00
[ms-sys] fix for detecting windows MBRs with localised messages
* Windows MBRs contain localised strings which mean the bytes between the executable code and the disk signature / partition table can change depending on locale. This patch adds lengths to reflect the offsets which are the same for every locale, and only compares these lengths when detecting existing Windows MBRs.
This commit is contained in:
parent
c4b9ec4a62
commit
234b0a3fde
5 changed files with 19 additions and 13 deletions
|
@ -117,7 +117,7 @@ int is_2000_mbr(FILE *fp)
|
||||||
#include "mbr_2000.h"
|
#include "mbr_2000.h"
|
||||||
|
|
||||||
return
|
return
|
||||||
contains_data(fp, 0x0, mbr_2000_0x0, sizeof(mbr_2000_0x0)) &&
|
contains_data(fp, 0x0, mbr_2000_0x0, MBR_2000_LANG_INDEP_LEN) &&
|
||||||
is_br(fp);
|
is_br(fp);
|
||||||
} /* is_2000_mbr */
|
} /* is_2000_mbr */
|
||||||
|
|
||||||
|
@ -126,7 +126,7 @@ int is_vista_mbr(FILE *fp)
|
||||||
#include "mbr_vista.h"
|
#include "mbr_vista.h"
|
||||||
|
|
||||||
return
|
return
|
||||||
contains_data(fp, 0x0, mbr_vista_0x0, sizeof(mbr_vista_0x0)) &&
|
contains_data(fp, 0x0, mbr_vista_0x0, MBR_VISTA_LANG_INDEP_LEN) &&
|
||||||
is_br(fp);
|
is_br(fp);
|
||||||
} /* is_vista_mbr */
|
} /* is_vista_mbr */
|
||||||
|
|
||||||
|
@ -135,7 +135,7 @@ int is_win7_mbr(FILE *fp)
|
||||||
#include "mbr_win7.h"
|
#include "mbr_win7.h"
|
||||||
|
|
||||||
return
|
return
|
||||||
contains_data(fp, 0x0, mbr_win7_0x0, sizeof(mbr_win7_0x0)) &&
|
contains_data(fp, 0x0, mbr_win7_0x0, MBR_WIN7_LANG_INDEP_LEN) &&
|
||||||
is_br(fp);
|
is_br(fp);
|
||||||
} /* is_win7_mbr */
|
} /* is_win7_mbr */
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
/* First 446 bytes of MBR from Windows 2000, XP and 2003 */
|
/* First 446 bytes of MBR from Windows 2000, XP and 2003 */
|
||||||
/* This is English version. Bytes 0x12c onwards vary with language. */
|
/* This is English version. Bytes 0x12c onwards vary with language. */
|
||||||
/* Last two bytes 1b6 and 1b7 point to language-specific messages. */
|
/* Last three bytes 1b5-1b7 point to language-specific messages. */
|
||||||
/* Support of other languages is an exercise for the reader! */
|
/* Support of other languages is an exercise for the reader! */
|
||||||
|
/* see: http://thestarman.pcministry.com/asm/mbr/Win2kmbr.htm */
|
||||||
|
#define MBR_2000_LANG_INDEP_LEN 0x12c
|
||||||
unsigned char mbr_2000_0x0[] = {
|
unsigned char mbr_2000_0x0[] = {
|
||||||
0x33, 0xc0, 0x8e, 0xd0, 0xbc, 0x00, 0x7c, 0xfb, 0x50, 0x07, 0x50, 0x1f,
|
0x33, 0xc0, 0x8e, 0xd0, 0xbc, 0x00, 0x7c, 0xfb, 0x50, 0x07, 0x50, 0x1f,
|
||||||
0xfc, 0xbe, 0x1b, 0x7c, 0xbf, 0x1b, 0x06, 0x50, 0x57, 0xb9, 0xe5, 0x01,
|
0xfc, 0xbe, 0x1b, 0x7c, 0xbf, 0x1b, 0x06, 0x50, 0x57, 0xb9, 0xe5, 0x01,
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
/* First 446 bytes of MBR from Windows Vista */
|
/* First 446 bytes of MBR from Windows Vista */
|
||||||
/* This is English version. Bytes 0x12c onwards vary with language. */
|
/* This is English version. Bytes 0x162 onwards vary with language. */
|
||||||
/* Last two bytes 1b6 and 1b7 point to language-specific messages. */
|
/* Last three bytes 1b5-1b7 point to language-specific messages. */
|
||||||
/* Support of other languages is an exercise for the reader! */
|
/* Support of other languages is an exercise for the reader! */
|
||||||
|
/* see: http://thestarman.pcministry.com/asm/mbr/VistaMBR.htm */
|
||||||
|
#define MBR_VISTA_LANG_INDEP_LEN 0x162
|
||||||
unsigned char mbr_vista_0x0[] = {
|
unsigned char mbr_vista_0x0[] = {
|
||||||
0x33, 0xc0, 0x8e, 0xd0, 0xbc, 0x00, 0x7c, 0x8e, 0xc0, 0x8e, 0xd8, 0xbe,
|
0x33, 0xc0, 0x8e, 0xd0, 0xbc, 0x00, 0x7c, 0x8e, 0xc0, 0x8e, 0xd8, 0xbe,
|
||||||
0x00, 0x7c, 0xbf, 0x00, 0x06, 0xb9, 0x00, 0x02, 0xfc, 0xf3, 0xa4, 0x50,
|
0x00, 0x7c, 0xbf, 0x00, 0x06, 0xb9, 0x00, 0x02, 0xfc, 0xf3, 0xa4, 0x50,
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
/* First 446 bytes of MBR from Windows 7 */
|
/* First 446 bytes of MBR from Windows 7 */
|
||||||
/* This is English version. Bytes 0x12c onwards vary with language. */
|
/* This is English version. Bytes 0x163 onwards vary with language. */
|
||||||
/* Last two bytes 1b6 and 1b7 point to language-specific messages. */
|
/* Last three bytes 1b5-1b7 point to language-specific messages. */
|
||||||
/* Support of other languages is an exercise for the reader! */
|
/* Support of other languages is an exercise for the reader! */
|
||||||
|
/* see: http://thestarman.pcministry.com/asm/mbr/W7MBR.htm */
|
||||||
|
#define MBR_WIN7_LANG_INDEP_LEN 0x163
|
||||||
unsigned char mbr_win7_0x0[] = {
|
unsigned char mbr_win7_0x0[] = {
|
||||||
0x33, 0xc0, 0x8e, 0xd0, 0xbc, 0x00, 0x7c, 0x8e, 0xc0, 0x8e, 0xd8, 0xbe,
|
0x33, 0xc0, 0x8e, 0xd0, 0xbc, 0x00, 0x7c, 0x8e, 0xc0, 0x8e, 0xd8, 0xbe,
|
||||||
0x00, 0x7c, 0xbf, 0x00, 0x06, 0xb9, 0x00, 0x02, 0xfc, 0xf3, 0xa4, 0x50,
|
0x00, 0x7c, 0xbf, 0x00, 0x06, 0xb9, 0x00, 0x02, 0xfc, 0xf3, 0xa4, 0x50,
|
||||||
|
|
10
src/rufus.rc
10
src/rufus.rc
|
@ -33,7 +33,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||||
IDD_DIALOG DIALOGEX 12, 12, 242, 376
|
IDD_DIALOG DIALOGEX 12, 12, 242, 376
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||||
EXSTYLE WS_EX_ACCEPTFILES
|
EXSTYLE WS_EX_ACCEPTFILES
|
||||||
CAPTION "Rufus 2.11.996"
|
CAPTION "Rufus 2.11.997"
|
||||||
FONT 8, "Segoe UI Symbol", 400, 0, 0x0
|
FONT 8, "Segoe UI Symbol", 400, 0, 0x0
|
||||||
BEGIN
|
BEGIN
|
||||||
LTEXT "Device",IDS_DEVICE_TXT,9,6,200,8
|
LTEXT "Device",IDS_DEVICE_TXT,9,6,200,8
|
||||||
|
@ -320,8 +320,8 @@ END
|
||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 2,11,996,0
|
FILEVERSION 2,11,997,0
|
||||||
PRODUCTVERSION 2,11,996,0
|
PRODUCTVERSION 2,11,997,0
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
|
@ -338,13 +338,13 @@ BEGIN
|
||||||
BEGIN
|
BEGIN
|
||||||
VALUE "CompanyName", "Akeo Consulting (http://akeo.ie)"
|
VALUE "CompanyName", "Akeo Consulting (http://akeo.ie)"
|
||||||
VALUE "FileDescription", "Rufus"
|
VALUE "FileDescription", "Rufus"
|
||||||
VALUE "FileVersion", "2.11.996"
|
VALUE "FileVersion", "2.11.997"
|
||||||
VALUE "InternalName", "Rufus"
|
VALUE "InternalName", "Rufus"
|
||||||
VALUE "LegalCopyright", "© 2011-2016 Pete Batard (GPL v3)"
|
VALUE "LegalCopyright", "© 2011-2016 Pete Batard (GPL v3)"
|
||||||
VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html"
|
VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html"
|
||||||
VALUE "OriginalFilename", "rufus.exe"
|
VALUE "OriginalFilename", "rufus.exe"
|
||||||
VALUE "ProductName", "Rufus"
|
VALUE "ProductName", "Rufus"
|
||||||
VALUE "ProductVersion", "2.11.996"
|
VALUE "ProductVersion", "2.11.997"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
|
Loading…
Reference in a new issue