2006-05-19 04:38:56 +02:00
|
|
|
/*++
|
|
|
|
|
2006-07-14 11:27:09 +02:00
|
|
|
Copyright (c) 2004-2006 Intel Corporation. All rights reserved
|
2006-07-17 05:33:40 +02:00
|
|
|
This program and the accompanying materials are licensed and made available
|
|
|
|
under the terms and conditions of the BSD License which accompanies this
|
|
|
|
distribution. The full text of the license may be found at
|
|
|
|
http://opensource.org/licenses/bsd-license.php
|
|
|
|
|
|
|
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
|
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
|
|
|
2006-05-19 04:38:56 +02:00
|
|
|
|
|
|
|
Module Name:
|
|
|
|
|
|
|
|
Strip.c
|
|
|
|
|
|
|
|
Abstract:
|
|
|
|
|
|
|
|
Quick Exe2Bin equivalent.
|
|
|
|
|
|
|
|
--*/
|
|
|
|
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <memory.h>
|
|
|
|
#include <string.h>
|
2006-08-08 08:16:49 +02:00
|
|
|
#include <stdlib.h>
|
2006-05-19 04:38:56 +02:00
|
|
|
|
2006-11-14 23:01:45 +01:00
|
|
|
#define UTILITY_NAME "Strip"
|
|
|
|
#define UTILITY_MAJOR_VERSION 1
|
|
|
|
#define UTILITY_MINOR_VERSION 1
|
|
|
|
|
|
|
|
|
|
|
|
void
|
2007-01-02 21:17:36 +01:00
|
|
|
Version(
|
2006-11-14 23:01:45 +01:00
|
|
|
void
|
|
|
|
)
|
|
|
|
/*++
|
|
|
|
|
|
|
|
Routine Description:
|
|
|
|
|
|
|
|
Print out version information for Strip.
|
|
|
|
|
|
|
|
Arguments:
|
|
|
|
|
|
|
|
None
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
|
|
|
None
|
|
|
|
|
|
|
|
--*/
|
|
|
|
{
|
2007-01-03 23:09:16 +01:00
|
|
|
printf ("%s v%d.%d -EDK Utility to Convert EXE to BIN\n", UTILITY_NAME, UTILITY_MAJOR_VERSION, UTILITY_MINOR_VERSION);
|
2006-11-14 23:01:45 +01:00
|
|
|
printf ("Copyright (c) 2005-2006 Intel Corporation. All rights reserved.\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
2007-01-02 21:17:36 +01:00
|
|
|
Usage(
|
2006-11-14 23:01:45 +01:00
|
|
|
void
|
|
|
|
)
|
|
|
|
/*++
|
|
|
|
|
|
|
|
Routine Description:
|
|
|
|
|
|
|
|
Print out usage information for Strip.
|
|
|
|
|
|
|
|
Arguments:
|
|
|
|
|
|
|
|
None
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
|
|
|
None
|
|
|
|
|
|
|
|
--*/
|
|
|
|
{
|
2007-01-02 21:17:36 +01:00
|
|
|
Version();
|
|
|
|
printf ("\nUsage: %s InputFile OutputFile\n", UTILITY_NAME);
|
2006-11-14 23:01:45 +01:00
|
|
|
}
|
|
|
|
|
2006-05-19 04:38:56 +02:00
|
|
|
int
|
|
|
|
main (
|
|
|
|
int argc,
|
|
|
|
char *argv[]
|
|
|
|
)
|
|
|
|
/*++
|
|
|
|
|
|
|
|
Routine Description:
|
|
|
|
|
|
|
|
Converts executable files to binary files.
|
|
|
|
|
|
|
|
Arguments:
|
|
|
|
|
|
|
|
argc - Number of command line arguments
|
|
|
|
argv[] - Array of pointers to the command line arguments
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
|
|
|
Zero - Function completed successfully.
|
2006-07-17 05:33:40 +02:00
|
|
|
Non-zero - Function exited with errors.
|
2006-05-19 04:38:56 +02:00
|
|
|
|
|
|
|
--*/
|
|
|
|
{
|
|
|
|
FILE *InFile;
|
|
|
|
FILE *OutFile;
|
|
|
|
int Index;
|
|
|
|
int FileSize;
|
|
|
|
char *Buffer;
|
|
|
|
char *Ptrx;
|
2006-11-14 23:01:45 +01:00
|
|
|
|
2007-01-08 23:27:20 +01:00
|
|
|
if (argc == 1) {
|
2007-01-02 21:17:36 +01:00
|
|
|
Usage();
|
2006-11-14 23:01:45 +01:00
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
|
|
|
if ((strcmp(argv[1], "-h") == 0) || (strcmp(argv[1], "--help") == 0) ||
|
|
|
|
(strcmp(argv[1], "-?") == 0) || (strcmp(argv[1], "/?") == 0)) {
|
2007-01-02 21:17:36 +01:00
|
|
|
Usage();
|
2006-11-14 23:01:45 +01:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
if ((strcmp(argv[1], "-V") == 0) || (strcmp(argv[1], "--version") == 0)) {
|
2007-01-02 21:17:36 +01:00
|
|
|
Version();
|
2006-11-14 23:01:45 +01:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2006-05-19 04:38:56 +02:00
|
|
|
if (argc < 3) {
|
2007-01-02 21:17:36 +01:00
|
|
|
Usage();
|
2006-05-19 04:38:56 +02:00
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
|
|
|
InFile = fopen (argv[1], "rb");
|
|
|
|
OutFile = fopen (argv[2], "wb");
|
|
|
|
|
|
|
|
if (!InFile) {
|
2006-11-14 23:01:45 +01:00
|
|
|
printf ("Unable to open input file, exit\n");
|
2006-05-19 04:38:56 +02:00
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (OutFile == NULL) {
|
2006-11-14 23:01:45 +01:00
|
|
|
printf ("Unable to open output file, exit.\n");
|
2006-05-19 04:38:56 +02:00
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
|
|
|
fseek (InFile, 0, SEEK_END);
|
|
|
|
FileSize = ftell (InFile);
|
|
|
|
|
|
|
|
if (FileSize < 0x200) {
|
2006-11-14 23:01:45 +01:00
|
|
|
printf ("%d is not a legal file size, exit\n", FileSize);
|
2006-05-19 04:38:56 +02:00
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
|
|
|
fseek (InFile, 0, SEEK_SET);
|
|
|
|
|
2006-06-16 13:42:42 +02:00
|
|
|
Buffer = (char *) malloc (FileSize);
|
2006-05-19 04:38:56 +02:00
|
|
|
if (Buffer == NULL) {
|
|
|
|
printf ("Error: Out of resources.\n");
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
|
|
|
fread (Buffer, 1, FileSize, InFile);
|
|
|
|
|
|
|
|
Ptrx = Buffer + 0x200;
|
|
|
|
|
|
|
|
Index = FileSize - 0x200;
|
|
|
|
|
|
|
|
fwrite (Ptrx, Index, 1, OutFile);
|
|
|
|
|
|
|
|
fclose (InFile);
|
|
|
|
fclose (OutFile);
|
|
|
|
free (Buffer);
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|