繁体   English   中英

设计一个指令序列,以便在使用偏移量解码时执行其他操作

[英]Designing an instruction sequence so that it does something else if decoded with an offset

这个问题是该问题的后续问题

要设置此问题的上下文,请考虑Null-free programming 这是一种将指令序列(shellcode)伪装成字符串的技术。 在 C 编程语言中,字节 0 标志着字符串的结束,因此指令序列必须设计为不包含任何此类字节,否则会被滥用的字符串操作函数截断。

IA32 和 x86-64 指令集的可变长度指令没有特定的对齐方式,允许任务 B 的指令在执行任务 A 的现有指令流中的偏移处进行解码。这种技术在个人计算机的早期(1980 年代)以节省空间。

从第一条指令的偏移量开始,在代码中嵌入代码的技术是否已经被用作欺骗反病毒检测的一种方法? 它有名字吗? 如果它有用并且已经被使用过,那么一个例子是什么? 如果攻击者开始编写代码,那么任务 A 以一种表面上无害的方式什么都不做就足够了,这可能会留下足够的余地来做任务 B 想要做的任何事情。

是的,这肯定已用于混淆代码有用的任何情况。 不仅用于病毒编程,还用于软件保护和逆向工程预防。

我自己在大小编码比赛中使用过几次,并在其他人的参赛作品中看到了几个例子。

这种技术自然已经针对不同的处理器进行了多次发明和再发明,因此您自然会为它找到几个不同的名称。 我发现了诸如“重叠指令”和“指令中断”之类的名称。

一些资源:

跳转到指令的中间 - 在 IA-32
什么是“重叠指令”混淆?
x86二进制反汇编和混淆的新指令重叠技术

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM