Tại sao mã lắp ráp sau đây là công cụ chống gỡ lỗi?Tại sao mã này cho phép tôi phát hiện trình gỡ lỗi?
l1:
call l3
l2:
;some code
l3:
mov al, 0c3h
mov edi, offset l3
or ecx, -1
rep stosb
Tôi biết rằng C3h là RETN
và tôi biết rằng stobs
viết giá trị trong al
như opcode theo bù đắp trong edi
và nó được thực hiện cho ecx
lần vì rep
.
Tôi cũng biết thực tế là stobs
và stosw
sẽ chạy nếu chúng được tìm nạp trước trên kiến trúc intel làm định dạng ban đầu của chúng.
Nếu chúng tôi chạy chương trình ở chế độ gỡ lỗi, việc tìm nạp trước không liên quan và nhãn l2 sẽ chạy (vì nó là một bước), nếu không có trình gỡ lỗi, nó sẽ là ping-pong giữa l1 và l3 am I đúng?
Nó vẫn không phụ thuộc vào việc nó được đặt thành một bước không? Bởi vì tôi thành thật không thể thấy tại sao trình gỡ lỗi sẽ vấp phải điều này. Quy tắc có phần khác nhau trong một bước. – 0xC0000022L
http://stackoverflow.com/questions/12633599/anti-debug-using-prefetch-queue-doesnt-work-with-my-cpu – 0x90