mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 10:04:49 +00:00
Remove old DJGPP NTVDM patch files.
svn path=/trunk/; revision=15234
This commit is contained in:
parent
4b2a42963f
commit
942e1f4649
2 changed files with 0 additions and 103 deletions
|
@ -1,85 +0,0 @@
|
||||||
/* Copyright (C) 2000 CW Sandmann (sandmann@clio.rice.edu) 1206 Braelinn, Sugar Land, TX 77479 */
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#ifdef GO32
|
|
||||||
#include <unistd.h>
|
|
||||||
#else
|
|
||||||
#include <io.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
char view_only = 0;
|
|
||||||
const char *client_patch_code;
|
|
||||||
char buffer[20480];
|
|
||||||
unsigned long search_base = 0x4c800L;
|
|
||||||
int f;
|
|
||||||
|
|
||||||
char oldpatch[] = {0x3b, 0x05, 0xac, 0xe6 };
|
|
||||||
char newpatch[] = {0x3b, 0x05, 0x58, 0x5e };
|
|
||||||
|
|
||||||
void patch_image(char *filename)
|
|
||||||
{
|
|
||||||
int i,size;
|
|
||||||
|
|
||||||
view_only = 0;
|
|
||||||
f = open(filename, O_RDWR | O_BINARY);
|
|
||||||
if (f < 0) {
|
|
||||||
f = open(filename, O_RDONLY | O_BINARY);
|
|
||||||
if (f < 0) {
|
|
||||||
perror(filename);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
view_only = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
lseek(f, search_base, SEEK_SET);
|
|
||||||
size = read(f, buffer, sizeof(buffer));
|
|
||||||
|
|
||||||
client_patch_code = NULL;
|
|
||||||
for(i=0; i<size && !client_patch_code; i++)
|
|
||||||
if(!memcmp(buffer+i,oldpatch,sizeof(oldpatch)))
|
|
||||||
client_patch_code = (buffer+i);
|
|
||||||
|
|
||||||
if(!client_patch_code) {
|
|
||||||
printf("Old patch string not found in %s!\n",filename);
|
|
||||||
} else {
|
|
||||||
lseek(f, search_base+i-1, SEEK_SET); /* Ready to update */
|
|
||||||
if(!view_only) {
|
|
||||||
write(f, newpatch, sizeof(newpatch));
|
|
||||||
printf("%s patched\n",filename);
|
|
||||||
} else
|
|
||||||
printf("%s patchable (not changed, readonly)\n",filename);
|
|
||||||
}
|
|
||||||
close(f);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
char filename[256];
|
|
||||||
char buf1[256];
|
|
||||||
char file2[256];
|
|
||||||
|
|
||||||
if (argc != 1) { /* If they specify names, patch them, exit */
|
|
||||||
for(i=1; i<argc; i++)
|
|
||||||
patch_image(argv[i]);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
fprintf(stderr, "This image patches Windows 2000 NTVDM to fix nesting DPMI bug.\n");
|
|
||||||
|
|
||||||
strcpy(filename,getenv("SYSTEMROOT"));
|
|
||||||
strcpy(file2,filename);
|
|
||||||
strcat(filename,"\\system32\\ntvdm.exe");
|
|
||||||
strcat(file2,"\\system32\\dllcache\\ntvdm.exe");
|
|
||||||
|
|
||||||
sprintf(buf1,"copy %s %s\\system32\\ntvdm.ori",filename,getenv("SYSTEMROOT"));
|
|
||||||
printf("%s\n",buf1);
|
|
||||||
system(buf1);
|
|
||||||
|
|
||||||
patch_image(file2);
|
|
||||||
patch_image(filename);
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,18 +0,0 @@
|
||||||
Perform at your own risk.
|
|
||||||
|
|
||||||
Directions for patching NTVDM on Windows 2000
|
|
||||||
|
|
||||||
1) Start a Command Prompt Window
|
|
||||||
2) Start Task Manager. Sort by Name. If NTVDM.EXE is a task End Process.
|
|
||||||
3) Execute NTVDMPAT.EXE from this ZIP file.
|
|
||||||
|
|
||||||
Notes:
|
|
||||||
With no arguments the executable patches both the DLLCACHE (for system file
|
|
||||||
protection) and the version in SYSTEM32. The image is a Win32 executable
|
|
||||||
(launching a DJGPP image will require NTVDM, locking the DLL so it can't
|
|
||||||
be patched). It saves the old version into NTVDM.ORI if you want to go
|
|
||||||
back. If you specify arguments on the command line it will patch the
|
|
||||||
executables you specify instead of automating the process (if you want to
|
|
||||||
do the archives/patches/moves yourself). Good luck.
|
|
||||||
|
|
||||||
Source included if you want to hack your own version.
|
|
Loading…
Reference in a new issue