首页
社区
课程
招聘
[原创]有关花指令的一点小研究(三)
发表于: 2008-3-29 11:37 7615

[原创]有关花指令的一点小研究(三)

2008-3-29 11:37
7615
  闲来无事,再研究下花指令,呵呵。
  请看下面的花指令调用:(OD下ctrl+A分析结束后结果)
0040112D > $  B8 05000000         mov     eax, 5	;start
00401132   .  E8 D61E0000         call    0040300D
00401137   .  85C0                test    eax, eax
00401139   .  74 00               je      short 0040113B
0040113B   >  E8 6A00E831         call    322811AA
00401140   ?  0000                add     byte ptr [eax], al
00401142   ?  00A3 30314000       add     byte ptr [ebx+403130], ah

;...
00403000    0000                  add     byte ptr [eax], al
00403002    0083 042401E8         add     byte ptr [ebx+E8012404], al
00403008    0000                  add     byte ptr [eax], al
0040300A    0000                  add     byte ptr [eax], al
0040300C    C3                    retn
0040300D    E8 F1FFFFFF           call    00403003
00403012    E8 010424E8           call    E8643418
00403017    0000                  add     byte ptr [eax], al
00403019    0000                  add     byte ptr [eax], al
0040301B    58                    pop     eax
0040301C    E9 FFFFFFFF           jmp     00403020
00403021    E0 00                 loopdne short 00403023



  源代码如下:
;----花指令为什么写在数据段?为了避免OD分析,因为OD只自动分析代码段。---
;----为此,那些label跳转无法在数据段写,只好写机器码了----
;----所有的跳转都是相对偏移---
.data
	db	00,00,00		;三个0混淆后面指令
	add	dword ptr [esp],1	;把返回地址+1
	db	0E8h,0,0,0,0		;call	$+5
	retn				;这条指令被调用两次,一次call,一次自身
myjmp	proc
	db	0E8h,0F1h,0FFh,0FFh,0FFh	;call上面
	db	0E8h			;混淆指令
	add [esp],eax			;把需要的偏移加上去
	db	0E8h,0,0,0,0		;call	$+5
	pop	eax			;取出返回地址,会有两次经过
	db	0E9h,0FFh,0FFh,0FFh,0FFh,0E0h	;淫荡就在这里了,两条指令合并
myjmp	endp

.code
start:
	mov	eax,offset @F - $ - 10	;@@指向正常指令
	call	myjmp
	test	eax,eax
	jz	$+2
	db	0E8h
@@:	
	invoke	GetModuleHandle,NULL

  总结:
  1:一处阴险的地方在于retn会被连续调用两次,一个call,一次retn返回到自身执行一次。
  2:一处阴险的地方在于把花指令写在数据段,避免了OD分析。
  3:一处阴险的地方在于最后三条指令都会被过两遍,跳晕人。
  4:一处很阴险的地方在于jmp $+4与jmp eax两条指令合并,无论是OD还是IDA,只能分析其中一条指令,看到的只是jmp $+4。嘿嘿。够阴险吧。

  思考:
  发现了其实真正的jmp $+X是短跳,所以只需要jmp $+1就可以了,那最后的机器可以改成db        0EBh,0FFh,0E0h了。。。随便啦。
  由于写在数据段,所以,以后看看在myjmp里加上SMC,嘿嘿。

  娱乐研究,不足之处请指正,谢谢。欢迎拍砖。

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 7
支持
分享
最新回复 (9)
雪    币: 716
活跃值: (162)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
2
花指令很有技巧,学习学习。
2008-3-29 12:00
0
雪    币: 19
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
努力分析ing....不错不错..
2008-4-1 00:51
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
嘿嘿!!
我也学!!!
2008-4-1 04:02
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
花指令很有技巧,学习学习
2008-4-1 07:51
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
6
telock
2008-4-1 12:12
0
雪    币: 107
活跃值: (1628)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
7
早听过楼上的大名了  改的壳很强 呵呵~~
2008-4-1 12:32
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
你楼上的不用改壳。。都是自己写
2008-4-1 13:07
0
雪    币: 517
活跃值: (84)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
9
forgot大师说的是tElock壳使用了这个技巧??
2008-4-1 15:07
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
10
学习~~

不是很懂~
2008-4-1 15:48
0
游客
登录 | 注册 方可回帖
返回
//