#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <windows.h>
#define MAX_PROGRAM_SIZE 0x10000
static unsigned char * Mem; // 동적 메모리 시작 주소
static unsigned char * Mem_End; // 동적 메모리 끝 주소
static unsigned char * code; // 프로그램 저장공간의 시작 위치 - Code
int File_DS; // 저수준 파일의 데스크립터
void load();
int main()
{
Mem = malloc(MAX_PROGRAM_SIZE*2);
if(0 == Mem)
{
printf("동적 할당을 받을 수 없습니다.\n");
printf("프로그램을 종료합니다.\n");
return 0;
}
else
{
code = Mem;
Mem_End = Mem + MAX_PROGRAM_SIZE*2 - 1;
printf("Dynamic Memory area\t: 0x%08X to 0x%08X (128KBytes)\n", Mem, Mem_End);
}
load();
free(Mem);
return 0;
}
void load()
{
int Read_Num;
int Header_Size;
IMAGE_DOS_HEADER * stpDH;
IMAGE_NT_HEADERS * stpPH;
IMAGE_FILE_HEADER * stpFH;
IMAGE_OPTIONAL_HEADER32 * stpOH;
File_DS = open("t1.exe", O_RDONLY);
if(File_DS < 0)
{
printf("파일 열기 실패.\n");
return;
}
Read_Num = read(File_DS, code, MAX_PROGRAM_SIZE*2);
if(0 >= Read_Num)
{
printf("파일 읽기 실패.\n");
close(File_DS);
return;
}
stpDH = (IMAGE_DOS_HEADER *)code;
stpPH = (IMAGE_NT_HEADERS *)(code + stpDH->e_lfanew-1);
stpFH = (IMAGE_FILE_HEADER *)( ((char *)(stpPH)) + 4 );
stpOH = (IMAGE_OPTIONAL_HEADER32 *)( ((char *)(stpFH)) + sizeof(IMAGE_FILE_HEADER));
Header_Size = stpOH->SizeOfHeaders; // Header size
close(File_DS);
}
'코스웨어 > 14년 스마트컨트롤러' 카테고리의 다른 글
일일교육보고 2014.08.27 (출석번호 18번 오영주) (7) | 2014.08.28 |
---|---|
2014.08.26 교육보고 - 오두환 (15) | 2014.08.26 |
20140825 업무일지 양태영 [16번] (10) | 2014.08.26 |
내용정리-손병규(출석번호14번) (10) | 2014.08.24 |
출석번호13번[서상우]_수업보고서 (9) | 2014.08.22 |
20140820 일일업무보고서 11번 문대영 (12) | 2014.08.20 |
20140819 업무일지 박영주 (4) | 2014.08.19 |
20140818 일일보고 9번 김해성 (11) | 2014.08.18 |