首页
社区
课程
招聘
[原创] 对抗反汇编 x86
2020-4-22 19:52 6255

[原创] 对抗反汇编 x86

2020-4-22 19:52
6255

相同的跳转指令 :

void 相同的跳转指令()
{
	printf("定位");
	_asm
	{
		jz _P2
		jnz _P2
_P1:
		__emit 0xE8
	}
_P2:
	return;
}
                             



固定条件的跳转指令:

void 固定条件的跳转指令()
{
	printf("定位");
	_asm
	{
		xor eax,eax
		jz _P2
		__emit 0xE9
	}
_P2:
	return;
}



无效的反汇编码:内部跳转的jmp指令

void 无效的反汇编码1()
{
	//内部跳转的jmp指令
	printf("定位");
	_asm
	{
		__emit 0xEB
		__emit 0xFF
		__emit 0xC0
		__emit 0x48
	}
	return;
}



无效的反汇编码:多层内部调转序列

void 无效的反汇编码2()
{
	//多层内部调转序列
	printf("定位");
	_asm
	{
		__emit 0x66
		__emit 0xB8
		jmp _P1
		__emit 0x31
		__emit 0xC0
		__emit 0x74
		__emit 0xFA
		__emit 0xE8
	}
_P1:
	printf("真实代码!");
	return;
}




滥用返回指针: 在反汇编部分我们看不出函数有调用_P2就retn了,成功欺骗了F5。

void 滥用返回指针()
{
	printf("定位");
	_asm
	{
		call _P1
_P1:   
		add [esp],5
		retn
	}
_P2:
	printf("模糊函数边界!");  //这里会被执行
	return;
}



滥用结构化异常处理:成功欺骗了 F5

void 滥用结构化异常处理()
{
	printf("定位");
	_asm
	{
		mov eax, _PE1
		push eax
		push fs : [0]
		mov fs : [0], esp
		xor ecx, ecx
		div ecx
		retn
_PE1:
		mov esp,[esp+8] 
		mov eax, fs : [0]
		mov eax, [eax]
		mov eax, [eax]
		mov fs : [0], eax
		add esp, 8
	}
	printf("结构化异常");
	return;
}



挫败的栈帧分析: F5后发现怎么有那么多参数。
void 挫败的栈帧分析()
{
	printf("定位");
	_asm
	{
		xor eax, eax
        add eax ,2
		ret 0xff
	}
	printf("挫败的栈帧分析");
	return;
}




[培训]《安卓高级研修班(网课)》月薪三万计划

最后于 2020-4-23 14:36 被Dascolee编辑 ,原因:
上传的附件:
收藏
点赞5
打赏
分享
最新回复 (16)
雪    币: 259
活跃值: (283)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ZwCopyAll 2020-4-23 09:07
2
0
如何清除这些混淆呢 期待你出个教程
雪    币: 74
活跃值: (488)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wodexinren 2020-4-23 10:10
3
0
不错,感谢分享
雪    币: 1918
活跃值: (313)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wangez8 2020-4-23 10:41
4
0
期待出教程!
雪    币: 1115
活跃值: (1846)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
Oday小斯 2020-4-24 22:50
5
0
感谢分享
雪    币: 364
活跃值: (1321)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
wujimaa 1 2020-4-26 10:15
6
0
收藏
雪    币: 3977
活跃值: (744)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
gaoan 2020-4-26 12:08
7
0
这个帖子解决了我前几天碰到的一个疑惑,真的感谢楼主
雪    币: 33
活跃值: (318)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
Dascolee 2020-4-26 15:33
8
0
gaoan 这个帖子解决了我前几天碰到的一个疑惑,真的感谢楼主
不用客气呀,看书过程中看书上的实例理解挺困难的,就动手写写测试了一下
雪    币: 310
活跃值: (1887)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
niuzuoquan 2020-4-26 18:27
9
0
mark
雪    币: 4709
活跃值: (1524)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
如斯咩咩咩 2020-4-26 20:58
10
0
mark
雪    币: 0
活跃值: (238)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Spwpun 2020-4-26 22:03
11
0
在做针对这些的混淆工具,mark
雪    币: 1898
活跃值: (3305)
能力值: ( LV6,RANK:81 )
在线值:
发帖
回帖
粉丝
KingSelyF 1 2020-4-27 17:53
12
0
大佬,x64、arm也可以这么搞吗
雪    币: 13270
活跃值: (4588)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tDasm 2020-4-28 14:18
13
1
花指令?
你这个是等长的花指令,容易识别被清除了,比较好的是不等长、相对不固定指令的花指令
雪    币: 33
活跃值: (318)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
Dascolee 2020-4-28 15:04
14
0
KingSelyF 大佬,x64、arm也可以这么搞吗
只要理解反汇编工具的反汇编算法原理,针对算法原理来编写花指令,什么指令集都一样。
雪    币: 33
活跃值: (318)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
Dascolee 2020-4-28 15:08
15
0
tDasm 花指令? 你这个是等长的花指令,容易识别被清除了,比较好的是不等长、相对不固定指令的花指令
多谢先辈指教
雪    币: 8211
活跃值: (4700)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
v0id_ 2020-5-1 19:52
16
0
很详细了,先赞一个
雪    币: 13
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
自强不吸 2020-5-16 14:39
17
0
很不错,赞一个。
游客
登录 | 注册 方可回帖
返回