ShellCode自定位的几种实现方法
发布日期:2021-10-07 04:43:13 浏览次数:13 分类:技术文章

本文共 796 字,大约阅读时间需要 2 分钟。

在编写shellcode的时候,经常需要定位当前程序的运行位置,所以在shellcode中定位运行的位置是一种常用的场景,本文记录了几种用于定位代码运行位置的方法。

[toc]

1.CALL/POP型

01 E8 00000000 call 06 将eip压栈,然后跳转到eip执行

06 58 pop eax 将eip出栈到eax中,堆栈恢复到执行e8执行前的状态

执行完毕之后,pop eax指令的地址将存放在eax中,所以执行前记得保存eax的内容。

2.CALL/POP 改进型

E8 FFFFFFFF CALL eip-1 执行后,将c2的地址压栈,然后跳转到eip-1执行,此时指令序列会发生变化

C2 5890 retn 0x9058
90 nop

指令序列变为:

FF C2 inc edx 将edx减1
pop eax 将c2语句的地址出栈到eax,此时堆栈恢复,edx的值比原来少1,eax为c2指令的位置
90 nop

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

这种方法编写难度稍微大点,也是可行的。

转载地址:https://blog.csdn.net/meanong/article/details/80482736 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:visual studio中使用printf打印迭代器内容时与cout的差别
下一篇:上取整除法的实现

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年03月20日 22时32分54秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

labview自动保存报表_基于LabVIEW的Excel报表的自动生成功能 2019-04-21
geotool 导出shp_Java 读取shape文件 2019-04-21
mysql 关联更新_MySQL UPDATE多表关联更新 2019-04-21
mysql call_mysql的call用法 call调用函数的例子 2019-04-21
python参数验证_参数验证,Python中的最佳实践 2019-04-21
python画多层网络_在pymn中修改多层网络图 2019-04-21
java net 安卓_android -------- java.net.UnknownServiceException 2019-04-21
java 密钥 aes 解密_Java中AES加密解密以及签名校验 2019-04-21
java树转化成图_Java 转换一组数据为树型数据 2019-04-21
java 底层ppt_Java 如何设置 PPT 中的形状排列方式 具体内容 2019-04-21
mysql更新第5条记录_MYSQL中添加、更新、删除数据 2019-04-21
mysql service5.7_Mysql5.7服务下载安装 2019-04-21
mysql查看线程完整执行命令_MySQL-查看运行的线程-SHOW PROCESSLIST 2019-04-21
mysql 更新数据 字符串_批量替换 MySQL 指定字段中的字符串 2019-04-21
web开发 mysql安装_mysqlinstallerwebcommunity5.7.21.0.msi安装图文教程 2019-04-21
mysql concat 整数型_MySQL 数字类型转换函数(concat/cast) 2019-04-21
mysql单元格函数是_MySQL常用内置函数 2019-04-21
mysql 怎么字段分裂_你可以分裂/爆炸MySQL查询中的字段吗? 2019-04-21
mysql server卸载出错_Mysql卸载问题Start Server卡住报错解决方法 2019-04-21
全国省市区 mysql_2017全国省市区数据库【含三款数据库】 2019-04-21