关于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
}
解码shell code的/x00
最新推荐文章于 2021-06-21 00:34:50 发布