將 16KB 的 EXE 可執行文件通過十六進制轉換為文本格式(如 0x40165...),如何將這些十六進制字符串還原為可執行的 .exe 文件?
全程以二進制模式讀寫文件。只要文件內容位元組完全一致,修改後綴名即可正常執行。
// 讀取 EXE 並轉十六進制文本
FILE* fin = fopen("input.exe", "rb");
FILE* fout = fopen("output.txt", "w");
unsigned char byte;
while (fread(&byte, 1, 1, fin)) {
fprintf(fout, "%02X", byte);
}
fclose(fin); fclose(fout);
// 還原:讀取文本並寫入 EXE
FILE* fin = fopen("output.txt", "r");
FILE* fout = fopen("restored.exe", "wb");
char hex[3] = {0};
while (fread(hex, 1, 2, fin) == 2) {
unsigned char byte = (unsigned char)strtol(hex, NULL, 16);
fwrite(&byte, 1, 1, fout);
}
fclose(fin); fclose(fout);
"rb" 和 "wb" 二進制模式,避免換行符轉換導致數據損壞