shellcode编写

开发框架
地址: https://github.com/TonyChen56/ShellCodeFrame
实现功能
弹出计算器
具体实现
(1)在这个框架中,利用b.work.cpp源文件中的GetProcAddressWithHash函数,通过传入WinExec函数的hash值,就可以获取到WinExec函数的相对地址。(hash值的计算网上有很多公开代码)
shellcode编写
(2)定义函数指针
在a.start.cpp源文件ShellCodeEntry()函数中添加WinExec("calc.exe ", SW_SHOW);
右键转到声明
shellcode编写
将声明复制到api.h头文件中定义函数指针并添加到结构体
shellcode编写
(3)字符串定义
shellcode编写中,字符串必须要写到代码段,这样才可以保证被正常使用,并且对字符串的使用要使 用相对地址,不能使用绝对地址。我们通常的定义方式如Char data=“abcdef”,但这种方式字符串会被存 储到数据段中,并以绝对地址的方式引用。 所以我们应该采用Char data={‘a’,’b’,’c’,’d’,’e’,’f’,0} (0代表结束符)。这种字符串定义方式可以将字符串存 放在代码段中,并以相对地址的方式被引用。这样就可以保证当shellcode被加载到其他程序进程中 时,依然可以被正常的使用。
shellcode编写
(4)调用自定义的WinExec函数
shellcode编写

(5).重新生成
(6).生成shellcode
运行ShellCodeFrame.exe ,成功生成ShellCode.bin文件
shellcode编写

(7).验证
将生成的ShellCode.bin文件拖入shellcodeLoader.exe,即可弹出计算器
shellcode编写