制作Windows远控(序言一)
Win32 API.不仅仅,比如如何注入Shellcode,所以须了解asm,也就是x64/x86汇编.
C/C++的语法,标准库,数据结构等(或者你用其他的高级语言例如C Sharp),Socket etc.
为了继承www.yuque.com/wormwaker/tkpgqw/ppfnlcaqdkcsfmkd (有几个标识符(方法) 比如"显示器" "压缩文件"的声明 我们不再重定义)的伟大叙述 我于是成了它的子类.
引用自github.com/AzidoPP的视频 纠正了若干错别字比如CreateFile先经过kernel32.dll, 然后经过kernelbase.dll, 再由它调用ntdll.dll中的NTCreateFile 触发系统调用,进入Ring0 杀毒软件通过替换劫持已经加载的ntdll.dll的内存映像, 在函数里面添加jmp指令 这就是inline hook ntdll.dll进入ring0的方式是通过syscall指令 研究人员逆向分析了ntdll系统调用的编号和参数 然后在用户态自己实现了一套等效的syscall封装 这就是直接系统调用绕过 再看安全产商是如何应对的 CPU执行函数时要把调用者的返回基址压到栈上 然后跳转到函数所在的位置 这样函数执行完才能找到回来的路 syscall也是类似的跳转 如果是正常的用户态api调用流程 调用链会先经过ntdll,再由它发起syscall,也就是说, 当从内核返回到用户层时 栈顶的返回地址应该位于ntdll的地址范围 但如果由攻击者直接在用户态自己执行syscall, 此时当ring0返回时, 栈顶的返回地址就会落在主程序模块内
ring0用于内核代码和驱动程序,驱动程序的文件扩展名是.sys.
我们可以用SCM方法加载驱动 比如MD5是dfb69795d1991da6f9edaa38d2a71427的A1SysTest v0.3.0.1.exe就用的是SCM方法.
用WinDbg验证
0:006:x86> bp ADVAPI32!OpenSCManagerWStub 0:006:x86> g Breakpoint 0 hit ADVAPI32!OpenSCManagerWStub: 74830540 8bff mov edi,edi
评论
发表评论