[英]How do I print only 4 bytes of hex in c++?
我正在嘗試從緩沖區乞求的偏移量 0x3c 以十六進制打印 4 個字節,但是當我運行代碼時,我得到了更多字節。 該程序讀取一個簡單的 pe 文件,該文件打印“hello world”並退出。
圖片有代碼,突出顯示的是我想要打印的,這里是文本中的代碼。
int main(int argc, char* argv[]) {
pFile = fopen("hello.exe", "r");
//get file size
fseek(pFile, 0, SEEK_END);
long lSize = ftell(pFile);
rewind(pFile);
//alloc memory
buffer = (char *) malloc(sizeof(char) * lSize);
//read file to memory
auto result = fread(buffer, 1, lSize, pFile);
auto e_lfanew = (unsigned char *) malloc(1);
fseek(pFile, 0x3c, SEEK_SET);
fread(e_lfanew, 0x1, 0x4, pFile);
for(size_t i=0; i<lSize; i++){
std::cout << std::hex << (int)e_lfanew[i];
}
return 0;
}
您的循環正在循環文件大小(lSize),如果要打印 4 個字節,請將其替換為 4。
for(size_t i=0; i<lSize; i++){
std::cout << std::hex << (int)e_lfanew[i];
}
我看到了其他沒有真正意義的問題,為什么你只在這里分配 1 個字節(然后訪問更多又名:e_lfanew[i])
auto e_lfanew = (unsigned char *) malloc(1);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.