簡體   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