syscall调用原理
一、从异常目录中读取函数调用地址(只适用于x64)
将NTDLL.dll映射到只读内存中,在调用之前将函数调用地址复制到可执行缓冲区,并执行。
参考文章和代码:
https://modexp.wordpress.com/2020/06/01/syscalls-disassembler/
https://github.com/odzhan/injection/tree/master/syscalls
二、使用反汇编程序来执行内核函数(x64)
对于其原理和步骤参考文章如下:
https://outflank.nl/blog/2019/06/19/red-team-tactics-combining-direct-system-calls-and-srdi-to-bypass-av-edr/
https://github.com/outflanknl/Dumpert
说明:其中unhookapi也是一种绕过杀软方式,通过修改杀软检测api的jmp代码,让其api脱钩
三、基于hash从PEB获取API地址(x86和x64均可)
参考工具如下(getapi):
https://github.com/odzhan/shellcode/tree/master/os/win/getapi/dynamic
说明:代码需要重构,此版本有直接编译有问题