#include #include #include int main(int argc, char **argv){ unsigned char convert_table[] = { //origin converted 0xeb,0x07, 0xeb,0x0a, //first address to find! 0xe1,0x00, 0xe1,0x04, 0xe7,0x04, 0xe7,0x08, 0xe2,0xc0, 0xe2,0x80, 0x60,0x13, 0xe0,0x00 }; if(argc == 1){ printf("\033[1;31m"); //red printf("error: "); printf("\033[0;37m"); //white printf("no input and output file!\n"); return 1; } if(argc == 2){ printf("\033[1;31m"); //red printf("error: "); printf("\033[0;37m"); //white printf("no output file!\n"); return 2; } if(access(argv[1], F_OK ) == 0) { //none } else { printf("\033[1;31m"); //red printf("error: "); printf("\033[0;37m"); //white printf("cannot open file!\n"); return 3; } printf("\033[0;37m"); //white text FILE * file; //file pointer file = fopen(argv[1], "rb"); //open file fseek(file, 0L, SEEK_END); //seek file size int filesize = ftell(file); //get file size unsigned char* filedata = NULL; //make file data table filedata = malloc(filesize); for(int i=0; i %08x %02x%02x\n",i,convert_table[0],convert_table[1], i,convert_table[2],convert_table[3]); filedata[i] = convert_table[2]; filedata[i+1] = convert_table[3]; addr = i; break; } } for(int a=4; a %08x %02x%02x\n",i,convert_table[a+0],convert_table[a+1], i,convert_table[a+2],convert_table[a+3]); filedata[i] = convert_table[a+2]; filedata[i+1] = convert_table[a+3]; break; } } } if(addr == 0){ printf("\033[1;31m"); //red printf("error: "); printf("\033[0;37m"); //white printf("no valid file or no data to edit\n"); return 4; } file = fopen(argv[2], "wb"); //open output file //write final data in output file fwrite(filedata , sizeof(char) , filesize , file); fclose(file); //close output file free(filedata); return 1; }