gpt4 book ai didi

assembly - SP(堆栈指针)反调试技巧 - x86

转载 作者:行者123 更新时间:2023-12-04 17:58:26 25 4
gpt4 key购买 nike

list 7.1 级联病毒的解密器

lea si, Start ; position to decrypt (dynamically set)

mov sp, 0682 ; length of encrypted body (1666 bytes)

Decrypt:
xor [si],si ; decryption key/counter 1
xor [si],sp ; decryption key/counter 2
inc si ; increment one counter
dec sp ; decrement the other
jnz Decrypt ; loop until all bytes are decrypted

Start: ; Encrypted/Decrypted Virus Body

请注意,此解密器具有反调试功能,因为 SP(堆栈指针)寄存器用作解密 key 之一。

有人可以解释为什么使用 SP 寄存器就像反调试功能一样吗?如果我错了,请纠正我,但我认为运行调试器不会改变堆栈布局......

提前致谢

最佳答案

采取断点或中断将“将数据压入堆栈”,这会损坏堆栈指针引用的区域中的数据字节。因此,如果您使用调试器在代码中放置断点 (INT n),那么您的调试行为(遇到断点)将破坏此代码试图解密的数据。

如果没有中断发生,此代码可能在 DOS 下工作;也许他们首先禁用中断。你不能在 Windows 或 Linux 下实际使用它(它的 16 位代码无论如何)。

关于assembly - SP(堆栈指针)反调试技巧 - x86,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3750883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com