shellcode编码变形大法

shellcode编码变形大法

ID:11305637

大小:31.50 KB

页数:12页

时间:2018-07-11

shellcode编码变形大法_第1页
shellcode编码变形大法_第2页
shellcode编码变形大法_第3页
shellcode编码变形大法_第4页
shellcode编码变形大法_第5页
资源描述:

《shellcode编码变形大法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、ShellCode编码变形大法'"~'cnwtfwtf@hackercomcn-譬)栏目编辑))■I特定的要求,一类是对SheIICode的长度大小有限制:另一类就是不能出现某些特殊字符比如CmaiI漏洞不能有大写字母,FoxmaiI不能有Ox2EOx2F字符一类的.在这里不讨论长度限制的情况,而是讨论一下如何避免特殊字符.要使ShelICode避免出现特殊字符有2种方法:一种是编写好ShelICode后,对不合要求的字符进行指令等价变换.比如一些liS漏洞里面不能出现Ox20,对指令Moveax,20h.就可以改为M

2、oveax,24h;subeax,04h,这样来避免出现Ox20.这种等价变换法对有少量字符限制的情况比较实用,但如果限制的字符较多,这种方法就比较困难了.另一种就是把代码分成两块.第二块是EnShelICode,即编过码后的ShelICode,完成我们想要的功能,比如开端口.反向连接的ShelICode有不合法的字符,所以我们利用一定的算法,把初始的SheJICode进行一定的变换编码,变成合法的EnShelICode后放在第二块.而第一块是完成解码的Decode.其功能是把EnShelICode重新变回初始的She

3、lICode后,再跳过去执行.其示意图如图1所示.好,编译,链接,执行!哈哈,弹出新She来了如图19所示.■_--巾_■■_呻图19换就失去了意义.在这篇文章里主要讨论算法F的变换和逆算法F在Decode里的实现.XOR是指按位异或其运算规则是相同为0,不同为1.即厂.oooXOFl=llxor0:llxorl=0...根据运算规则.我们可以推出对于某个值X.密钥Key,有如下等式成立:<~:——从上面的对照分析,我们可以看出系统底层的东西是可以融汇贯通的,所以只要深入地掌握了某个系统的底层,就可以很容易学习领

4、会其它的系统,并且注意力会放在两者相同和不同的地方.更利于理解.Windows下堆栈的溢出已经有了很多经典的文章.而LinuX对初学者来说不太直观.所以用窗口模式和WindowS的作对比,希望至少能从方法上帮助初学者了解,有任何问题请和编辑部联系.架起我们之间互相联系的桥梁!仂2o0410黑客防线●壁■■_EXPL口ITC口MMUNI口N)栏目编辑)wtf)wtf@hackercomcn,,厂一XXOFKey:ZZxorKey=X…=>XxorKeyxorKey=X...即一个值对同一个数,异或两次后得到的结果为

5、其原值.我们可以利用该性质来实现变换算法F和逆算法F.1.变换算法F算法很简单,我们把ShelICode数组里的每一个字符ShelICode[i]与某一密钥Key作异或就得到了EnShelICode保存在EnShelICode数组中.其实现代码如图2所示,这里令密钥Key为0x97当然也可以改成其它值.Decode中要把EnShelICode重新变回ShelICode,根据上面的分析.只需要将EnShelICode里面的字符再异或编码时的Key就可以了所以也比较简单.实现的汇编代码如下:厂一'jmpDecodeendD

6、ecode—start:popedx//得列解碍开始位置esp一>edxdecedxxoreCX?eCXmovcx,Ox2O0//要解码的Enshe:ode,长度Ox200应谈足够Decode—Loop:xorbyteptr【edx+ecx],0x97//因为编码耐盾的Key是0x97,所以解碍要一样loopDec~eloopjmpDecode_okDecode—end:callDecodestartDecode—ok:...我们把上面的汇编转换成机器码,就得到了Decode的代码,然后在后面附上EnShelIC

7、ode的代码就得到了完整的部分了.3.小结Xor大法是最早使用同时也是现在最常见的编码方法.它最大的好处是编码和解码都比较简单,而且也可以避开一定的字符比如ASCII为0的字符通常ShelICode是以字符串形式传送过去的,为0的字符会被认为是字符串的结束标志而导致截断后面的字符:而用Xor方法经过编码后,为0的字符就会被编码成其他的值从而避免被截断.该方法也有一定适应性如果ShelICode异或某个Key后还有非法字符,可以尝试改变Key的值,直到完全合法为止.当然,这种方法的缺点也很明显,当限制字符较多或限制字符是

8、一个较大的范围的时候很有可能找不到合适的Key来符合限制要求.在这种情况下,我们就需要用其他的算法来实现编码和解码了.我们在编码的时候,先对每一个字符都进行异或编码.如果某个字符异或后,还是非法字符,则再单独对该字符进行处理变换成符合要求的字符,这就是直接替换法.该方法最早可以在Yuange的文章中看到.1.变换算法F:其思想是S

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。