Windows平台shellcode高级开发
shellcode是一段可以独立运行于进程中的代码,它短小精悍功能简单,作用却不可小觑,常常作为exp中的payload、用于完成木马的感染机制、用于外挂中的进程注入等等。
以往的Windows平台shellcode开发都是使用内联汇编,经过多次调试、抽象理解、反复修改才能达到理想预期效果,其开发效率以及平台兼容性都不是很理想。尤其对汇编掌握熟练度有很大的要求、还要对各种数据结构熟练掌握,准确计算各个数据元素的偏移。对于一些新手和非计算机特殊专业的朋友们来说shellcode开发简直是不敢想象的。
本系列的教程就是利用windows平台下的开发工具Visual Studio 简单易懂、直观明了、快速高效,快速生成x86/x64的shellcode,不牵扯一句汇编代码,有vs的支持也可直观的观察调试过程对于学习其中的核心原理有很大的帮助。Shellcode的开发会像做普通开发一样高效、快速、高质量。
基础要求:
(1) 熟悉windows平台c/c++编程、熟悉WindowsAPI编程。
(2) 认识windows平台的x86/x64汇编。
目录:
一、认识Shellcode
(1)shellcode的定义
(2)shellcode特点和常见问题处理方法
(3)shellcode开发方法
二、shellcode开发环境的下载安装,辅助工具的认识
(1)Visual Studio 15的下载安装
(2)Hex工具 WinHex/Hexwork
(3)调试工具OD/Immdbg
(4)Dll导出函数查看工具dllexp
三、shellcode工程搭建、测试以及核心代码的认知
(1)BIC_Bindshell核心代码的移植、修改、
(2)修复BIC_Bindshell中的bug
(3)API函数转换为hash值
(4)字符串的处理
四、shellcode兼容x86和x64 cpu
(1)利用vs宏来做兼容性处理
(2)完全借助vs结构体达到兼容目的
(3)不使用用任何汇编代码完全利用c语言
五、shellcode的提取
(1)以往的shellcode提取方法。
(2)shellcode代码在pe文件中的排列问题。
(3)利用vs的map命令配置,生成map文件,观察函数排列。
(4)利用vs的order命令配置,将shellcode函数紧密排列在一起。
(5)shellcode代码起点定位,大小计算(参考Tombkeeper的shellcode工程)
(6)shellcode的dump
(7)VS优化选项对shellcode大小的影响
六、Duilib-Shellcode工程,直观友好易操作
(1)API函数转Hash工具
(2)字符串转DWORD数组工具
(3)Shelcode测试工具
(4)Shellocode生成页面
七、多文件shellcode框架
(1)利用vs的map和order命令配置,将多个文件中的shellocde涉及到的函数紧密排列,实现多个文件中的shellcode代码准确提取。
八、shellcode开发中的一些小技巧
(1)函数绝对地址在内存中的获取
(2)浮点数据的计算造成的shellcode崩溃
(3)Switch case 造成shellcode崩溃
(4)大数据的除法、取模、移位造成的崩溃
(5)较大临时变量造成的崩溃
九、shellcode调试经验总结
(1)如何利用vs断点快速定位shellcode中问题所在。
PS:以上课程章节暂定