0x00:原理
大部分脚本语言加载 shellcode 其实都是通过 c 的 ffi 去调用操作系统的api,其实并没有太多的技巧在里面,明白了原理,只需要查一下对应的脚本语言怎么调用 c 即可...那么我们只需要明白 c 通常是怎么加载 shellcode 的即可一通百通.
那么 c 是怎么加载 shellcode 呢,我们直接从汇编开始探究....shellcode 这个东西我们明白是一串可执行的二进制(一般可执行文件的拥有可执行权限的section为.text),那么我们先通过其他的手段开辟一片拥有可读可写可执行权限的区域放入我们的 shellcode...,然后跳转到 shellcode 首地址去执行就行了,汇编里面改变eip(即当前指令的下一条即将运行指令的虚拟地址)的方法有不少,最简单的就是直接 jmp 过去了.也就是写成伪码
大概意思就是
lea...这里也写一段伪码(因为本文的重点并不是在于 c 代码的编写)
那么按照刚才的思路,先申请一块可执行的内存,放入 shellcode 然后跳转过去执行即可.
// shellcode
unsigned char