花指令来袭

主要参考资料抗去除花指令http://bbs.pediy.com/showthread.php?t=129526
灵感<计算机病毒防范艺术>
想起了ZeroRootkit的 int2dh 如果在调试器下就不会eip+1
乱花渐欲迷人眼

一 开始:

两类花指令:

1可执行花指令

主要利用堆栈平衡完成事情.比如做一个运算再做一个逆运算,或者对当前指令上下文进行保存后进行一下垃圾操作然后回复当前指令上下文关系.

2不可执行式花指令

根据反汇编的工作原理,只有当花指令同正常指令的开始几个字节被反汇编器识别成一条指令时,才能有效破坏反汇编的结果。因此,插入的花指令应当是一些不完整的指令
Cullen等人指出为了能够有效“迷惑”静态反汇编工具,同时保证代码的正确运行,花指令必须满足两个基本特征,即:
1)垃圾数据必须是某个合法指令的一部分:
2)程序运行时,花指令必须位于实际不可执行的代码路径。
线性扫描反汇编算法:
行进递归反汇编算法:
//灵感:探测系统是否为正常系统(太干净,有威胁)否则设置标志,不干坏事.屏蔽恶意行为.

简易不可执行花指令:
有创意地避免固定形态特征:
1新的固定结构xor-cmp
2非固定结构的”伪条件跳转”替代”强制跳转”
//灵感:检测自己是否在单线程运行(被调试)然后设置标记.然后跳转到不同流程.

二 然后

2.1互补条件跳转.

互补条件跳转

2.2改进版: 用随机值获得确定性标志位

xor reg,value1;只要我们的value1的值不为0.则表达式不为真.
cmp reg,value1
jnz Label
Db thunkcode;垃圾数据
Lable:

这种形态还是很固定.

2.3利用API返回确定值;

//老任老师<黑客免杀攻防>提到过:使用时间函数来做判断.防止花指令被杀毒引擎跳过.
//原文没有下文了.

SEH异常的应用 SEH异常就是结构化异常处理,程序遇到SEH异常时,异常交给系统处理(这讲是一个非常负责的过程,很容易跟飞),所以利用SEH异常时可以一定程度的防止程度调试(SEH异常在壳里是很常见的)。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push ******** //地址压入堆栈 mov eax,dword ptr fs:[0] push eax //fs[0]压入堆栈,执行完成后fs[0]指向堆栈 mov dword ptr fs:[0],esp //构造一个ERR结构 mov esi,0 //简单的赋值语句 mov eax,dword ptr ds:[esi] //产生异常 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push ******** mov eax,dword ptr fs:[0] push eax mov dword ptr fs:[0],esp mov ebx,0 div ebx ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ nop push ******** mov eax,dword ptr fs:[0] push eax mov dword ptr fs:[0],esp int 3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push ******** mov eax,dword ptr fs:[0] push eax mov dword ptr fs:[0],esp nop int 68 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push ******** mov eax,dword ptr fs:[0] push eax mov dword ptr fs:[0],esp nop vxdcall 134543 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push ******** mov eax,dword ptr fs:[0] push eax mov dword ptr fs:[0],esp ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push xxx push dword ptr fs:[0] mov fs:[0], esp stc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push xxx push dword ptr fs:[0] mov fs:[0], esp JMP 0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push xxx push dword ptr fs:[0] mov fs:[0], esp ret ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push xxx push dword ptr fs:[0] mov fs:[0], esp pop ss
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值