要替换,首先你要考虑替换后的程序中所有的寻址完全正确,不会出现错误的地址!其次你要看看原程序是否对原来的shellcode段有校验 *** 作,如果有,破解之!最后对于具体的情况对李念塌头进行重建!
总之shellcode等替换 *** 作是比较复杂的,中间要考虑很多很多因素!
LZ为什么要去替换呢?既然自己已经弄到了shellcode,写一个小程序不是易如反掌嘛,何必大费功夫的去替换呢!
如果你实在想替换,给你个很好的建议,没事儿的时候写个EXP程序,定个全局指针变量,在程序中对这个指针进行下赋值 *** 作,随便赋个值,要是赋地址那种的,然后下面用嵌入式汇编写几个比较有特点的代码(比如连着10个"emms"),编译程序,等你有新的shellcode的时候,首先把shellcode附加到程序文件尾,然后反汇编,找到有特哪圆点的那些汇编指令(比如连着10个"emms"),找到上面的mov指令(对应源代码里指针赋值),把 *** 作数改成shellcode的内存线性地址,将下面的有特点的代码nop掉,保存!即可完成替换!
对于shellcode的解密,完全可以通过反汇编EXP程序来逐步分析,不过这个过程要求你有很高的汇编水平,分析出原shellcode所在的段!再有一种办法就是,把EXP程序加载到一个调试工具中,然后跟踪一下,shellcode有些地方类似病毒,一般可以跟踪出解密后的shellcode代码!由于原shellcode是加了密的,进行替换,很麻烦,很复杂,如果搞懂了加密方式还行,否则很困难!
shellcode是一段用于洞岩核利用软件漏洞而执行的代码,shellcode为16进制的机器码,因为经常让攻击者获得shell而得名。shellcode常常使用机器语言编写。 可在暂存器eip溢出纳掘后,塞入一段可让CPU执枣空行的shellcode机器码,让电脑可以执行攻击者的任意指令。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)