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 nop3.浮点运算型
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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.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 密钥 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 指定字段中的字符串
2019-04-21
mysql concat 整数型_MySQL 数字类型转换函数(concat/cast)
2019-04-21
mysql单元格函数是_MySQL常用内置函数
2019-04-21
mysql 怎么字段分裂_你可以分裂/爆炸MySQL查询中的字段吗?
2019-04-21
全国省市区 mysql_2017全国省市区数据库【含三款数据库】
2019-04-21