易语言资源网 - 做最全的易语言资源下载社区
<易语言软件开发工程师>特训 第14期(预报名) 精易论坛授权登录
当前位置:易语言资源网 > C++ > 帖子内容

[shellcode专题]便捷的内核shellcode一键生成工具源码   [复制链接]

    2022-08-17 09:06:43
    C++
    易语言资源网
    421 次浏览
    来源链接

花了点时间写了个shellcode生成工具,原理很简单,使用起来也很简单,接下来开贴教程驱动应该怎么设置,代码应该怎么编写。(PS:编写驱动需要wdk,请到官网下载)

VS项目设置:

属性->C/C++->常规->将警告视为错误-否

属性->C/C++->代码生成->安全检查-禁用GS安全检查

属性->C/C++->代码生成->控制流防护-否

属性->链接器>高级->入口点设置为你的驱动入口函数,不要使用默认的FxDriverEntry

驱动代码皆为x64,以zczc表回调为例,编写shellcode

入口函数:

zc回调函数:


回调函数:

函数声明:

卸载函数:

函数命名一定要像我这样,目的是让编译器将你的函数按照我们想要的顺序编译,编写完函数编译驱动文件。
打开IDA,载入刚刚编译的驱动文件,你的IDA左边显示成这样才可以使用我的shellcode工具,如果出现一大堆函数是不行的

IDA打开64位PE文件的jz都是0x140001000开始,从IDA里面我们可以看到a_RegisterCallback函数的入口地址是0x140001038,我们记录下来0x38,
a_RegisterCallback里面取了回调函数地址,也就是这段汇编:

跟过去找到这个函数,记录函数结束地址,这里我们记录结束地址+0x1,也就是0x14000108B,记录0x8B

记录完成后打开cmd,进入shellcode生成工具目录,使用方法是KShell.exe 驱动文件名,输入我们刚才记录的入口和结束地址,也就是0x38和0x8B

回车生成:

生成的shellcode保存在同目录下,记住起始地址和结束地址一定要像我那样,不然会出现ERROR。生成了两个文件,一个bin一个txt,bin文件是专门给加载器用的,这里我们不需要用到,打开txt文件,全部复制下来

最后两行就是我们用到的内核函数地址,接下来实现shellcode的执行。


编译驱动,加载驱动:

路径显示为空,简单的shellcode就是这样的,如果是复杂的代码,可能会出错,请用IDA仔细核对函数调用地址。
为什么要用shellcode呢?占用小,运行速度快,不易察觉,如果对shellcode进行加密简直无法无天。
工具拓展:jmp,相对地址函数的call...



点我下载 (已有 13 次下载)

[错误报告]   上一篇:动画个洞2.1版     下一篇:Dijkstra最短路径,必经点全部...