VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 388|回复: 2

shellcode问题

[复制链接]
49_avatar_middle
最佳答案
0 
在线会员 发表于 2019-3-15 22:47:18 | 显示全部楼层 |阅读模式
5驿站币
  1. char shellcode[] = "\xfc\xe8\x89";
  2. void *exec = VirtualAlloc(0, sizeof shellcode, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
  3.         memcpy(exec, shellcode,sizeof shellcode);
  4.         ((void(*)())exec)();
复制代码

把shellcode写入代码中直接运行没有问题
但是比如我通过网页来获取shellcode,shellcode就会被当成字符串。不知如何转换shellcode问题

最佳答案

查看完整内容

默认二进制的话是楼主描述的情形:char shellcode[] = "\xfc\xe8\x89"; 如果是网页传输的话,那么就是字符串了,所以样子应该是:char shellcode_str[] = "\\xfc\\xe8\\x89"; 那么就需要转换了: 先把字符串用 \\x 分割,之后把每一段用 sscanf 的 %x 以十六进制的形式进行转换就可以了




上一篇:SetItemText错误
下一篇:libiconv库
51_avatar_middle
最佳答案
82 
online_admins 发表于 2019-3-15 22:47:19 | 显示全部楼层
默认二进制的话是楼主描述的情形:char shellcode[] = "\xfc\xe8\x89";
如果是网页传输的话,那么就是字符串了,所以样子应该是:char shellcode_str[] = "\\xfc\\xe8\\x89";
那么就需要转换了:
  1. char shellcode_str[] = "\\xfc\\xe8\\x89";
  2. unsigned char shellcode_buf[100] = { 0 };

  3. int idx = 0;
  4. char* tmp_str = strtok(shellcode_str, "\\x");
  5. while (tmp_str)
  6. {
  7.         sscanf(tmp_str, "%x", &shellcode_buf[idx++]);
  8.         tmp_str = strtok(NULL, "\\x");
  9. }
复制代码


先把字符串用 \\x 分割,之后把每一段用 sscanf 的 %x 以十六进制的形式进行转换就可以了
49_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2019-3-16 17:16:50 | 显示全部楼层
Syc 发表于 2019-3-15 22:47
默认二进制的话是楼主描述的情形:char shellcode[] = "\xfc\xe8\x89";
如果是网页传输的话,那么就是字符 ...

谢谢老大shellcode问题
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-9-21 02:15

Powered by CcTry.CoM

© 2009-2020 cctry.com

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