能力值:
(RANK:280 )
|
-
-
26 楼
之前我也是用call+retn,但这里还可以省一个字节,把call改成jmp的话后面的C3 retn也省了,如果考虑GetProcAddress的返回值在EAX,那样不改堆栈最少也只需要6字节
多谢发哥提醒,jmp不能改,我忘记了先后顺序
|
能力值:
(RANK:1060 )
|
-
-
27 楼
jmp过去返回地址在参数下面,不知道你是怎么测试成功的
|
能力值:
(RANK:280 )
|
-
-
28 楼
汗。。。没测试,忘记先后了,只是猜测
|
能力值:
( LV8,RANK:130 )
|
-
-
29 楼
7字节真是精妙,跟牛人们学了不少
|
能力值:
( LV9,RANK:180 )
|
-
-
30 楼
同样是Stack的应用, 应该没人会真的提交自杀式的开IE吧
刚刚看公式好像 <=13byte 都是100分.
|
能力值:
( LV2,RANK:10 )
|
-
-
31 楼
看了大家的代码,真是自愧不如,唉!!
|
能力值:
( LV2,RANK:10 )
|
-
-
32 楼
对于代码2还是不解,希望楼主能给个详细大案,只怪我是初学者,太怀了
|
能力值:
( LV4,RANK:50 )
|
-
-
33 楼
[QUOTE=;]...[/QUOTE]
7个字节的还有一个答案是:B8 xx xx xx xx 94 C3
不过思路都是一样的
|
能力值:
( LV4,RANK:50 )
|
-
-
34 楼
7个字节的应该是不算的,因为RET后执行的仍然是用户的代码
|
能力值:
( LV4,RANK:50 )
|
-
-
35 楼
不是用户代码.....
|
能力值:
( LV15,RANK:340 )
|
-
-
36 楼
确实不是用户代码,你看14楼的分析过程,实际ret执行的就是WinExec的地址,而参数是通过修改esp达到“压栈”目的地!
我之前也没想明白,这个7字节的真的很精妙
|
能力值:
( LV4,RANK:50 )
|
-
-
37 楼
呵呵,不好意思,刚才没看清楚
|
能力值:
( LV4,RANK:50 )
|
-
-
38 楼
不过7个字节的版本好像没有包括保存和恢复ESP的代码,这样就不是7字节了
|
能力值:
( LV13,RANK:330 )
|
-
-
39 楼
有时候是该多往歪处想想,自己做题时就知道PUSH CALL,思维僵死
|
能力值:
(RANK:410 )
|
-
-
40 楼
来晚了,学习...
|
能力值:
( LV15,RANK:340 )
|
-
-
41 楼
刚才调试了一下,其实不用另外的代码回复ESP。注意到用的指令是XCHG,所以再执行一次就OK了
试着把返回地址改成XCHG的那句看看,WinExec的ret跳回交换指令,此时切换ESP,然后ret正常了。所以这段代码大有学问啊
|
能力值:
( LV2,RANK:10 )
|
-
-
42 楼
36楼: 这个7字节的, 如何填写返回地址,要去testfile里面查吗?
|
能力值:
( LV9,RANK:490 )
|
-
-
43 楼
这个不顶不行,哈哈。
没想到用xchg
|
能力值:
( LV15,RANK:340 )
|
-
-
44 楼
这个妙就妙在不用。具体看14楼后面的例子
|
能力值:
( LV9,RANK:180 )
|
-
-
45 楼
这样的 7 byte
xchg [xxxxxxxx], esp
ret
虽然可正常返回, 但[xxxxxxxx] 的内容已被更动, 无法二次调用.
所以说这到底值不值得冒险提交 ? 没人知道标准在那里.
|
能力值:
( LV2,RANK:10 )
|
-
-
46 楼
[QUOTE=sessiondiy;516814]这样的 7 byte
xchg [xxxxxxxx], esp
ret
虽然可正常返回, 但[xxxxxxxx] 的内容已被更动, 无法二次调用.
所以说这到底值不值得冒险提交 ? 没人知道标准在那里.[/QUOTE]
[xxxxxxxx] 二次调用值已变动 应该是重定位造成的。
所以 要填写返回值 7字节不够用。
|
能力值:
( LV6,RANK:90 )
|
-
-
47 楼
学习到了。。很好~!
|
能力值:
( LV2,RANK:10 )
|
-
-
48 楼
暴汗淋漓,虽然还是没有彻底理解
还是感觉这思维真是很开阔
|
能力值:
( LV9,RANK:180 )
|
-
-
49 楼
[QUOTE=ohho;516824][xxxxxxxx] 二次调用值已变动 应该是重定位造成的。
所以 要填写返回值 7字节不够用。[/QUOTE]
xchg [xxxxxxxx], esp 造成的
|
|
|