吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9118|回复: 10
收起左侧

[分享] shellcode自定位方法

[复制链接]
willJ 发表于 2014-7-28 23:14
使用论坛附件上传样本压缩包时必须使用压缩密码保护,压缩密码:52pojie,否则会导致论坛被杀毒软件等误报,论坛有权随时删除相关附件和帖子!
病毒分析分区附件样本、网址谨慎下载点击,可能对计算机产生破坏,仅供安全人员在法律允许范围内研究,禁止非法用途!
禁止求非法渗透测试、非法网络攻击、获取隐私等违法内容,即使对方是非法内容,也应向警方求助!
在编写shellcode中经常会遇见自定位代码,于是总结了一些方法。

1.CALL/POP
635D96F1      E8 00000000   call mshtml.635D96F6
635D96F6      58            pop eax                           
635D96F7      90            nop
CALL指令做的操作是压栈下一个地址,跳向指定地址,利用这个特征可以利用CALL/POP操作定位当前位置。

2.CALL/POP改进型
前一种好用但是有缺陷,比如会出现较多的00,可能造成截断,于是有了改进型。
635D96F1    E8 FFFFFFFF   call mshtml.635D96F5
635D96F6      C2 5890       retn 0x9058
635D96F9      90            nop
跟进635D96F1这个CALL后代码将重新解释如下:
635D96F5      FFC2          inc edx
635D96F7      58            pop eax                                 
位置保存于eax。

3.浮点运算型
0013FED0   D9EE            fldz
0013FED2   D97424 F4       fstenv (28-byte)ptr ss:[esp-0xC]
0013FED6   5B              pop ebx
浮点运算后位置保存在栈顶,通过POP操作可以获取其位置。
我在我的shellcode中使用此参数常出现异常,所以用得较少,不过metasploit上面用得蛮多的。

4.中断型
使用INT 2c或者INT 2e可以获取下一个执行地址,下一个执行地址将会保存于ebx。
在调试状态无法达到预期的效果,如果想看见效果可以将调试器设置为默认调试器,执行以下代码看见效果:
__asm
{
Int 3
Int 2c
}

5.异常处理型
在shellcode代码中构建一个异常处理函数,再构造一个异常进入异常处理中获取EIP
这种方法编写难度稍微大点,也是可行的。

免费评分

参与人数 1热心值 +1 收起 理由
Syer + 1 好!这个是不是可以让程序异常到指定地方去.

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

hejie821 发表于 2014-7-28 23:51
学习下下
山顶的一棵草 发表于 2014-7-29 11:06
diaojianxiao 发表于 2014-7-29 21:42
zlf8331 发表于 2014-8-2 07:50
相互学习共同进步,谢谢分享!
Thend 发表于 2014-8-4 13:58
jj威武阿 , {:1_931:}
强攻 发表于 2014-8-26 02:10
来学习了
Allyvin 发表于 2014-9-2 15:10

我也是我也是我也是我也是
icss123 发表于 2015-4-28 14:32
学习了,膜拜
iWarmThrush 发表于 2015-5-12 14:29
嘿嘿, 学习了....感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-4 20:01

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表