首页
论坛
课程
招聘
[原创]有关花指令的一点小研究(三)
2008-3-29 11:37 5852

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

2008-3-29 11:37
5852
  闲来无事,再研究下花指令,呵呵。
  请看下面的花指令调用:(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,嘿嘿。

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

看雪学院推出的专业资质证书《看雪安卓应用安全能力认证 v1.0》(中级和高级)!

收藏
点赞0
打赏
分享
最新回复 (9)
雪    币: 627
活跃值: 活跃值 (49)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
elance 活跃值 6 2008-3-29 12:00
2
0
花指令很有技巧,学习学习。
雪    币: 19
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
fancily 活跃值 2008-4-1 00:51
3
0
努力分析ing....不错不错..
雪    币: 201
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
pcwolf 活跃值 2008-4-1 04:02
4
0
嘿嘿!!
我也学!!!
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lijiayao家 活跃值 2008-4-1 07:51
5
0
花指令很有技巧,学习学习
雪    币: 5535
活跃值: 活跃值 (26)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
forgot 活跃值 26 2008-4-1 12:12
6
0
telock
雪    币: 88
活跃值: 活跃值 (74)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
frozenrain 活跃值 2008-4-1 12:32
7
0
早听过楼上的大名了  改的壳很强 呵呵~~
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lOOp 活跃值 2008-4-1 13:07
8
0
你楼上的不用改壳。。都是自己写
雪    币: 465
活跃值: 活跃值 (19)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
triones 活跃值 6 2008-4-1 15:07
9
0
forgot大师说的是tElock壳使用了这个技巧??
雪    币: 496
活跃值: 活跃值 (349)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
sudami 活跃值 25 2008-4-1 15:48
10
0
学习~~

不是很懂~
游客
登录 | 注册 方可回帖
返回