高级语言程序转换SHELLCODE时编码注意
来源:互联网 发布:白帝捏脸数据 编辑:程序博客网 时间:2024/05/29 11:30
使用VC写的DLL通过内存加载类,转成SHELLCODE,发现一个诡异的问题,程序直接运行操作与下载无任何问题,下载10G数据也不会出错。
但转成SHELLCODE后,诡异的问题,就出现了,不确定时间地点,出错。
经过3个多小时,每句代码排查,找出问题原因,使用了如下代码:
UINT ProcFileEnumWillDown(TCHAR * str_path)//枚举要下载的文件夹{CListDirectoryFile list;list.SearchFileAll(str_path);CMySocket sock;sock.m_socket=m_socket;for (int i=0;i<list.MyVectorFileName.size();i++){WIN32_FIND_DATA fd={0};HANDLE hFind = FindFirstFile(list.MyVectorFileName[i].c_str(), &fd);if (hFind==INVALID_HANDLE_VALUE){lstrcpy(fd.cFileName,_T("Failed to access files"));//获取文件信息失败时把错误信息返给用户}else{lstrcpy(fd.cFileName,list.MyVectorFileName[i].c_str());//因为是枚举所有文件,把文件全路径复制到WIN32_FIND_DATA结构中FindClose(hFind);}PACKET pkt={0};//注意这里!CopyMemory((void*)pkt.buf,(char*)&fd,sizeof(fd));SendPacket(&pkt);} PACKET pkt={0};//注意这里!SendPacket(&pkt);return 1;}
看出猫腻吗?如果是编译的EXE,板钉的没任何问题,决对靠普,但在SHELLCODE中,就出问题了,SHELLCODE中要求,禁止引用任何全局变量常量,这里编译后就会出问题了,解决方法,直接合并成一个 PACKET pkt={0}问题得到解决。
- 高级语言程序转换SHELLCODE时编码注意
- 字符串转换时,注意编码格式
- shellcode转换
- shellcode提取和js编码转换,对写shellcode很有帮助
- 使用C语言编写通用shellcode的程序
- Shellcode 编码、解码
- metasploit shellcode编码命令....
- matasploit+shellcode编码学习
- iconv()函数进行编码转换时的一个注意点
- enca 编码转换程序
- windows下shellcode高级编程
- 用C语言,如何写十进制转换十六进制的程序,要注意十六进制有ABCDEF。
- 单片机(STC12C2052AD)AD转换功能C语言程序(成功)+教训体会--注意关系运算优先级啊
- 高级语言程序错误类型
- C语言编码注意的点
- 高级C语言教程编码风格
- Java小程序:编码转换
- shellcode转换成汇编代码
- codeforces #176 div.2
- 二叉树的各种操作总汇(c/c++语言实现)
- 查询硬分析量较大的会话
- 关于vfork和_exit
- JS解析XML的实现代码
- 高级语言程序转换SHELLCODE时编码注意
- openGL示例代码及注释(一)
- 算法的学习步骤
- JS解析XML
- 如何求整数A和B的二进制表示中有多少位不同?
- 结合rpm,rpm2cpio,cpio提取rpm包的特定文件
- 算法的学习步骤
- Date()方法格式化
- Android开发规范