对抗反汇编,在很大程度上就是运用花指令技术,使得IDA的强大F5功能失效,在只能静态分析时让代码显得乱七八糟,没有头绪,将知识点总结如下
用IDA python对指令进行NOP替换
import idaapi
idaapi.CompileLine('static n_key() {RunPythonStatement("nopIt()");}')
AddHotkey("Alt-N","n-key")
def notIt():
start = ScreenEA()
end = NextHead(start)
for ea in range(start,end):
PatchByte(ea,0x90)
Jump(end)
Refresh()
在C中刻意使用函数指针,可以大大降低反汇编器自动推导出的信息量
call = jmp + push
retn = jmp + pop
在patch程序,恢复堆栈平衡的时候非常重要