花指令

維基百科,自由的百科全書

花指令是一種防止程序被反匯編調試的手段。

種類[編輯]

跳轉到多字長指令的參數中[編輯]

一般來說,反匯編器會按順序進行反匯編,但是,如果程序跳轉到多字長指令的參數中,反匯編的結果就會和實際情況不符。

示例(使用 6502 指令集,數字如無特殊說明均為十六進制
內存地址 0 1 2 3 4 5
機器碼 4C 04 00 A9 A9 60
反匯編出的指令 JMP $0004 LDA #$A9 RTS
釋義 跳轉到地址 4 將 A9 載入累加器 子程序返回
實際執行的指令 JMP $0004 這裏不會被執行 LDA #$60
釋義 跳轉到地址 4 將 60 載入累加器中

這個例子過於簡單,是可以被調試器檢測到的。實際應用的花指令比這個更複雜,含有條件跳轉指令。

參見[編輯]