首页
社区
课程
招聘
[旧帖] <em>[邀请码已发]</em>最新插入花指令的技巧-与SEH结合使用 0.00雪花
发表于: 2011-2-25 13:20 1806

[旧帖] <em>[邀请码已发]</em>最新插入花指令的技巧-与SEH结合使用 0.00雪花

2011-2-25 13:20
1806
在调试一个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日开班!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 79
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
顶之,以升会员。
2011-2-28 14:52
0
雪    币: 14
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
顶顶顶
2011-2-28 23:03
0
雪    币: 656
活跃值: (458)
能力值: ( LV12,RANK:360 )
在线值:
发帖
回帖
粉丝
4
异常太多会不会影响程序效率?
2011-2-28 23:09
0
雪    币: 79
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
会影响效率,不过值得,用这点开销保护一些关键代码可行。
2011-3-1 09:25
0
雪    币: 90
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
帮顶,这都能想出来
2011-3-1 09:45
0
雪    币: 1149
活跃值: (1033)
能力值: ( LV13,RANK:260 )
在线值:
发帖
回帖
粉丝
7
这种想法,想出来不错,但你这样直接造成seh异常,改变eip  都是对threadcontext 切换,实际应用中觉得效率不会很理想。。要想到实际的花指令并不是使用几条,哈哈要整就一大批。。。。
2011-3-1 09:55
0
雪    币: 1907
活跃值: (2085)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
8
话说。以前脱壳看到一个超强的花指令。。。。基本等于双壳了。一看以为ASP。跟着跟着。。。。代码完全变了。。。蛋疼····
2011-3-28 17:16
0
雪    币: 35
活跃值: (1806)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
2222222222222222
2011-3-28 17:33
0
游客
登录 | 注册 方可回帖
返回