cuốn sách gpt4 ai đã làm

c - Ghi đè byte của exe ở dạng thập lục phân

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 08:20:41 hai mươi bốn 4
mua khóa gpt4 Nike

Tôi muốn thay đổi logic của exe bằng cách thay đổi nhị phân. Một trong các giá trị hex trong exe là 75 và tôi phải thay đổi nó thành 74 (JNE thành JE trong cụm x86). Tôi biết đó là byte thứ 1276 của tệp, nhưng làm cách nào để thực hiện điều đó?

Đây là những gì tôi có:

#include 
#include

int main(void)
{
TẬP TIN *fileH = fopen ("foo", "r+");
fseek(fileH, 1276, SEEK_SET);
fwrite("74", 1, 1, fileH);
fclose(fileH);
return 0;
}

Ngoài ra, vì lý do nào đó, tôi nhận được "fileH" không được khai báo mặc dù tôi bao gồm stdio và FILE trong tất cả các chữ hoa. Tôi không thể tìm thấy bất cứ ai khác có vấn đề này. chạy cái này trên Ubuntu

câu trả lời hay nhất

Bạn phải xác định giá trị byte để ghi vào tệp. JE Mã opcode 8086 ở dạng thập lục phân 74, thay vì số thập phân.

#include 

int main(void)
{
byte char không dấu = 0x74;
TẬP TIN *fileH = fopen ("foo.txt", "r+");
nếu (tệpH == NULL)
return 1;
if (fseek(fileH, 3, SEEK_SET))
return 1;
if (fwrite(&byt, 1, 1, fileH) != 1)
return 1;
if (fclose(fileH))
return 1;
printf("Tập tin đã được cập nhật\n");
return 0;
}

Là bản demo sử dụng tệp văn bản nhỏ, nội dung trước đó:

0123456789

và sau:

012t456789

Tôi không biết tại sao trình biên dịch của bạn từ chối tập tinH Ngoại trừ đôi khi các trình soạn thảo văn bản để lại một ký tự lừa đảo vô hình ở những nơi không nên có. Giải pháp là xóa và nhập lại dòng vi phạm.

Về c - ghi đè byte của exe theo hệ thập lục phân, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/33551667/

hai mươi bốn 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress