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

Làm cách nào để có được tên/mô tả về một ngoại lệ?

In lại Tác giả: Hồ Xil Thời gian cập nhật: 2023-11-01 12:51:46 28 4
mua khóa gpt4 Nike

làm thế nào bạn có được SEH tên và/hoặc mô tả? bất thườngkhông cầnPhải mã hóa chuỗi vào ứng dụng của bạn?

我尝试使用 FormatMessage(), nhưng đôi khi nó cắt bớt tin nhắn, ngay cả khi bạn chỉ định bỏ qua phần chèn:

__asm ​​​​{ // nâng cao vi phạm quyền truy cập
xor eax, eax
di chuyển eax, [eax]
}

Sử dụng mã 0xC0000005 (EXCEPTION_ACCESS_VIOLATION) Ném một ngoại lệ.

thông điệp char[256];
Định dạngMessageA(FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_IGNORE_INSERTS,
GetModuleHandleA("ntdll.dll"), 0xC0000005,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
tin nhắn, sizeof(tin nhắn), NULL);

pad với chuỗi cắt ngắn tin nhắn:"Hướng dẫn tại 0x”。

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

Mã ngoại lệ có cấu trúc được xác định bằng số NTSTATUS. Mặc dù ai đó từ MS gợi ýsử dụng FormatMessage()Chuyển đổi số NTSTATUS thành chuỗi, tôi không làm điều đó. đánh dấu FORMAT_MESSAGE_FROM_SYSTEM để chuyển đổi GetLastError() Kết quả là một chuỗi nên ở đây nó không có ý nghĩa. sẽ ký FORMAT_MESSAGE_FROM_HMODULEntdll.dll Sử dụng cùng nhau sẽ khiến một số mã có kết quả không chính xác. Ví dụ, đối với EXCEPTION_ACCESS_VIOLATION, bạn sẽ nhận được Hướng dẫn tại 0x, điều này không hữu ích lắm :).

Khi bạn xem ntdll.dll các chuỗi trong , rõ ràng là nhiều chuỗi trong số đó nên được so sánh với printf() được sử dụng cùng nhau. chức năng, không liên quan đếnFormatMessage() .Ví dụ,EXCEPTION_ACCESS_VIOLATION Chuỗi là:

Lệnh ở 0x%08lx tham chiếu bộ nhớ ở 0x%08lx. Bộ nhớ không thể là %s.

%0FormatMessage() Xử lý theo trình tự thoát có nghĩa là kết thúc tin nhắn chứ không phải chèn. Chèn là %1 đến %99. đó là lý do tại sao đánh dấu FORMAT_MESSAGE_IGNORE_INSERTS Không có sự khác biệt.

Bạn có thể muốn bắt đầu với ntdll.dll Tải chuỗi và chuyển nó tới vprintf()Nhưng bạn cần chuẩn bị các thông số chính xác theo quy định của chuỗi (ví dụ: EXCEPTION_ACCESS_VIOLATION,它是 dài không dấu,dài không dấu,char*). Cách tiếp cận này có một nhược điểm lớn:ntdll.dll Bất kỳ thay đổi nào về số lượng, thứ tự hoặc kích thước của các tham số có thể làm hỏng mã của bạn.

Do đó, việc mã hóa chuỗi thành mã của riêng bạn sẽ an toàn và dễ dàng hơn. Tôi thấy thật nguy hiểm khi sử dụng các chuỗi do người khác chuẩn bị mà không phối hợp với tôi :) Và còn có các chức năng khác. Đây chỉ là một khả năng khác của sự cố.

Windows - Làm cách nào để lấy tên/mô tả ngoại lệ? , 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/321898/

28 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