Reversing-Hex View(수정본)
처음 올린 Hex View가 콘솔에 출력을 하기때문에 출력의 전부를 볼 수없다는 것을 알아서 어떻게 할까 고민하던중 MFC는 지금 할 줄 모르기 때문에 C로 구현해 보았습니다.
<실행화면>
<코드>
#include <Windows.h>
#include <stdio.h>
#include <stdlib.h>
void print_HexCode(const char* value, const char* Writed);
int main(int argc, char* argv[])
{
if(argc != 3)
{
printf("-------------------------------------------------------------------------------\n");
printf("제작: latifundium.blogspot.com\n");
printf("\n");
printf("프로그램 이름: Hex_view\n");
printf("프로그램 설명: 프로그램의 File offet에 따른 HEX 코드를 보여주는 프로그램\n");
printf("\n");
printf("사용법: Hex_view.exe <hex view를 실행시킬 파일> <이름.txt>\n");
printf("-------------------------------------------------------------------------------\n\n\n");
exit(0);
}
else
{
print_HexCode(argv[1], argv[2]);
}
return 0;
}
void print_HexCode(const char* value, const char* Writed)
{
FILE *name;
FILE *txt;
size_t file_offset=0;
size_t charac_len=0;
char charac[16];
name=fopen(value,"rb");
txt=fopen(Writed, "w");
fprintf(txt,"<f_Offet>");
fprintf(txt,"--------------------------------------------------------------------------\n");
while((charac_len=fread(charac,sizeof(char),sizeof(charac),name)) !=NULL)
{
fprintf(txt,"%08X: ",file_offset);
for(int i=0; i<(int)charac_len; i++)
{
if(i==8)
{
fprintf(txt," ");
}
fprintf(txt,"%02X ",(unsigned char)charac[i]);
}
for(int i=0; i<17-(int)charac_len; i++)
{
if((int)charac_len+i==8)
{
fprintf(txt," ");
}
fprintf(txt," ");
}
for(int i=0; i<(int)charac_len; i++)
{
if(charac[i]>0x20 && charac[i]<0x7F)
{
fprintf(txt,"%c",charac[i]);
}
else
{
fprintf(txt,".");
}
}
fprintf(txt,"\n");
file_offset=file_offset+16;
}
fprintf(txt,"------------------------------------------------------------------------------------\n");
fclose(name);
}
다운로드: Hex_View(수정본)
0 개의 댓글