shellcode自定位方法
在编写shellcode中经常会遇见自定位代码,于是总结了一些方法。1.CALL/POP型635D96F1 E8 00000000 call mshtml.635D96F6635D96F6 58 pop eax 635D96F7 90 nopCALL指令做的操作是压栈下一个地址,跳向指定地址,利用这个特征可以利用CALL/POP操作定位当前位置。
2.CALL/POP改进型前一种好用但是有缺陷,比如会出现较多的00,可能造成截断,于是有了改进型。635D96F1 E8 FFFFFFFF call mshtml.635D96F5635D96F6 C2 5890 retn 0x9058635D96F9 90 nop 跟进635D96F1这个CALL后代码将重新解释如下:635D96F5 FFC2 inc edx635D96F7 58 pop eax 位置保存于eax。
3.浮点运算型0013FED0 D9EE fldz0013FED2 D97424 F4 fstenv (28-byte)ptr ss:0013FED6 5B pop ebx浮点运算后位置保存在栈顶,通过POP操作可以获取其位置。我在我的shellcode中使用此参数常出现异常,所以用得较少,不过metasploit上面用得蛮多的。
4.中断型使用INT 2c或者INT 2e可以获取下一个执行地址,下一个执行地址将会保存于ebx。在调试状态无法达到预期的效果,如果想看见效果可以将调试器设置为默认调试器,执行以下代码看见效果:__asm{Int 3Int 2c}
5.异常处理型在shellcode代码中构建一个异常处理函数,再构造一个异常进入异常处理中获取EIP这种方法编写难度稍微大点,也是可行的。
学习下下 没抢到沙发,只能前排支持了{:301_1006:} 膜拜。。。。。 相互学习共同进步,谢谢分享! jj威武阿 , {:1_931:} 来学习了 强攻 发表于 2014-8-26 02:10
来学习了
{:1_937:}我也是我也是我也是我也是 学习了,膜拜 嘿嘿, 学习了....感谢分享
页:
[1]
2