如果声明为无符号字符的矢量,则Shellcode未运行
Shellcode not running if declared as vector of unsigned chars
为什么外壳代码没有在这个示例中运行
示例1
std::vector<unsigned char> decrypted(encrypted.size());
void *exec = VirtualAlloc(0, decrypted.size(), MEM_COMMIT, PAGE_EXECUTE_READWRITE);
memcpy(exec, &decrypted.front(), decrypted.size());
((void(*)())exec)();
当我键入cout << &decrypted.front()
时,我在控制台中获得有效载荷并添加> out.txt
,我将有效载荷保存到文本文件中,然后在记事本中查看,复制它,然后与一起使用
示例2
unsigned char out[] = "x01x01x01x01x01"
void *exec = VirtualAlloc(0, sizeof(out), MEM_COMMIT, PAGE_EXECUTE_READWRITE);
memcpy(exec, out, sizeof(out));
((void(*)())exec)();
向量不是一个动态数组吗如果我可以用*decrypted.front()
将外壳代码输出到屏幕上,那么我应该能够将其传递给memcpy
从实施例1获得的相同有效载荷在实施例2中运行良好
memcpy
采用两个指针,即目标和源。在示例1中,源是临时迭代器的地址,而不是向量下数组的开头,因此您要复制的不是向量中的数据,而是迭代器中的字节。
如果要使用memcpy
,则需要使用两个数组或指向缓冲区的指针来复制数据,或者可以使用迭代器将数据从一个位置复制到另一个位置,但不能同时复制。
相关文章:
- 运行同一解决方案的另一个项目的项目
- CMake-按正确顺序将项目与C运行时对象文件链接
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- 代码在main()中运行,但在函数中出现错误
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 如何在运行中期切换GTK CSS style_context
- 如何在MS Visual Studio 2019中运行QT UI
- 如何通过cpp程序运行shell脚本
- IPC使用多个管道和分支进程来运行Python程序
- 删除指向指针的指针是运行时错误吗
- 如何用参数值调用函数(仅在运行时已知)
- 为什么即使使用-cudart-static进行编译,库用户仍然需要链接到cuda运行时
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- c++中的指针和运行时错误
- 在C应用程序中运行C++(带有STL)函数
- 运行程序时出现问题
- 控制允许动态运行c++的并发操作数
- 无法获取菜单选择以运行函数.C++