-
-
[旧帖]
<em>[邀请码已发]</em>最新插入花指令的技巧-与SEH结合使用
0.00雪花
-
发表于:
2011-2-25 13:20
1806
-
[旧帖] <em>[邀请码已发]</em>最新插入花指令的技巧-与SEH结合使用
0.00雪花
在调试一个SEH处理过程的时候,想到一种花指令添加技巧。因为我接触花指令时间不长,如果是老掉牙的技术,请高手们莫耻笑,第一次发帖,多包涵,谢谢。好了,言归正传~~
花指令去除无非是扫描常规的如JMP, CALL等指令,这种很明显的流程跳转容易被发现,但是在SEH filter里面将EIP改写,通过这种方式跳转,去除器很那发现,真正做到神不知鬼不觉。
根据这点我写了一小段代码如下:
int GetMyexpInfo(LPEXCEPTION_POINTERS ptrExp)
{
ptrExp->ContextRecord->Eip += 9; // 经过计算,从*(char*)0 = 'c'; 到 return 0 之间9个字节,EIP直接指向下一条真正的指令,线程继续正常执行。。。
return EXCEPTION_EXECUTE_HANDLER;
}
int _tmain(int argc, _TCHAR* argv[])
{
__try
{
*(char*)0 = 'c'; // 此处故意引发内存访问异常
__asm _emit 0xc6; // 0xc605 就是MOV花指令
__asm _emit 0x05;
}
__except(GetMyexpInfo(GetExceptionInformation()))
{
printf("exception handled!");
}
return 0;
}
以上代码很简单,具体功能就不说了,

理论上OD插件不能发现花指令,实际测试也确实没有去掉。但是我的OD插件可能有问题,就是最明显最简单的花指令也无法去除,很奇怪,望高手们指点一二,谢谢了。
[培训]科锐逆向工程师培训第53期2025年7月8日开班!