“将R0的内容送到R1”的指令序列,

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了“将R0的内容送到R1”的指令序列,相关的知识,希望对你有一定的参考价值。

参考技术A SWP R0,R1,[R2] ;将R2所指向的存储器中的字数据传送到R0,同时将R1中的字数据传送到R2所指向的存储单元. SWP R0,R0,[R1] ;该指令完成将R1所指向的存储器中的字数据与R0中的字数据交换.

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

【中文标题】设计一个指令序列,以便在使用偏移量解码时执行其他操作【英文标题】:Designing an instruction sequence so that it does something else if decoded with an offset 【发布时间】:2014-07-05 12:05:13 【问题描述】:

这个问题是that question的后续问题。

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

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

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

【问题讨论】:

所有问题的答案都是“是”,但这真的有帮助吗? @KerrekSB “——有什么例子? -是的。”作为一个答案很糟糕,而“——它有名字吗? -是的。”有效,回答者可以在他们的回答中提供所说的名字。这将帮助我在谷歌上搜索更多信息(即使知道它存在,我也很难找到无空程序)。 注意:我不是要关于这个主题的书籍章节。该技术的名称,如果它已经存在,将回答我的问题。 我刚刚当场编造的random internet search暗示“隐写术”,但搜索结果本身似乎包含更多术语。 @KerrekSB 隐写术是计算机科学的一个分支,涉及将任何东西隐藏在任何东西中。这是一个很好的搜索词,可以考虑使用,但它不会将我引导到文档,就像“零编程”引导我到 blackhatlibrary.net/Shellcode/Null-free 【参考方案1】:

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

我自己用过几次size coding competitions,并在其他人的条目中看到了几个例子。

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

一些资源:

Jump into the middle of instruction - in IA-32What is “overlapping instructions” obfuscation?A new instruction overlapping technique for anti-disassembly and obfuscation of x86 binaries

【讨论】:

以上是关于“将R0的内容送到R1”的指令序列,的主要内容,如果未能解决你的问题,请参考以下文章

读取光驱序列号型号分位

JAVA关于数据结构(转载)

最快的 stride-3 收集指令序列是啥?

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

嵌入式:ARM 汇编控制伪操作

AngularJS - 动画回调/序列