对抗反汇编,在很大程度上就是运用花指令技术,使得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程序,恢复堆栈平衡的时候非常重要