西西河

主题:如何用绿坝养肉鸡(一) -- 代码ABC

共:💬168 🌺312 🌵1
全看分页树展 · 主题 跟帖
家园 咳咳。。。猪哥搞错了好多地方。。

第一,内存分配是链接时生成的,基本上一样(如果赶上版本不一样,算偶们倒霉,只好另外来一个)

第二,你说的那些寄存器基本上都不用去看,C函数运行大体上靠ESP,因为shellcode大部分是用溢出位置为基准使用相对址运行,为了减少硬编码,多数只用硬编码的LoadLibraryA(或W)的地址去调用其他api,由于windows用户大多在administrator下运行,不需要提升权限,所以开个用户建个后门,犯不上去访问ring0的东西,在ring3就足够了,倒是做rootkit有时候需要升ring0,不过rootkit很少直接放在溢出的部分,它们往往太大了,还是开了后门之后再送过来比较好。

至于那段unix和windows的对比是不恰当的,unix的系统调用和ring0,ring3不是一范畴的问题,基本没法解释,其实windows的内核的好多东西也可以直接调,同样和ring0,ring3没关系,只要你引了库就行了,ring0/3的作用位置还在*nix的syscall或windows的routine之下,在内核运行的东西大部分都不涉及指令集的保护。要看例子的话可以去安焦找个看,很多的,偶举例子的话也就素那个样子,还米人家写滴干净

实际上利用溢出时第一个麻烦不是那些东西,反倒是找到溢出位置的地址,要么用调试器,比如设个内存监视然后用一串奇奇怪怪的东西去填充缓冲区,断住之后按调用栈往回找位置,要么死看逆向后的汇编,呃,这个需要好运气。。反正得自己想办法

全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河