我想通過改變二進制文件來改變exe的邏輯。 exe中的十六進制值中的一個是75,我必須更改爲74(x86彙編中的JNE到JE)。我知道這是文件的第1276個字節,但我該怎麼做?以十六進制覆蓋exe文件的字節
這是我有:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *fileH = fopen ("foo", "r+");
fseek(fileH, 1276, SEEK_SET);
fwrite("74", 1, 1, fileH);
fclose(fileH);
return 0;
}
而且由於某種原因,我得到「fileH」未申報的,即使我包括標準輸入輸出以及全部大寫,其文件。我無法找到有此問題的其他人。在ubuntu上運行此腳本
'「74」轉儲'是一個字符串,其值爲74.如果你想要寫一個字節不是字節,創建一個變量'unsigned char'類型,初始化它並將其地址傳遞給'fwrite'。 –
還存在exe文件是否包含校驗和或CRC或其他防篡改保護的問題。 – user3386109
你是什麼意思*「我得到'fileH'未聲明」*?這在MSVC中編譯乾淨(儘管來自@MOehm的評論適用)。 –