当前位置: 首页 > news >正文

凡科做的网站盗版网站是如何做的

凡科做的网站,盗版网站是如何做的,中国域名查询,o2o手机维修网站那个公司做的在Windows编程中#xff0c;经常会遇到需要对数据进行压缩和解压缩的情况#xff0c;数据压缩是一种常见的优化手段#xff0c;能够减小数据的存储空间并提高传输效率。Windows提供了这些API函数#xff0c;本文将深入探讨使用Windows API进行数据压缩与解压缩的过程#…在Windows编程中经常会遇到需要对数据进行压缩和解压缩的情况数据压缩是一种常见的优化手段能够减小数据的存储空间并提高传输效率。Windows提供了这些API函数本文将深入探讨使用Windows API进行数据压缩与解压缩的过程主要使用ntdll.dll库中的相关函数。 RtlGetCompressionWorkSpaceSize RtlGetCompressionWorkSpaceSize 函数位于ntdll.dll库中。该函数用于获取数据压缩所需的工作空间大小。CompressionFormatAndEngine参数指定压缩格式和引擎CompressBufferWorkSpaceSize和CompressFragmentWorkSpaceSize分别用于输出缓冲区和片段的工作空间大小。 以下是该函数的声明 typedef NTSTATUS(WINAPI *typedef_RtlGetCompressionWorkSpaceSize)(_In_ USHORT CompressionFormatAndEngine,_Out_ PULONG CompressBufferWorkSpaceSize,_Out_ PULONG CompressFragmentWorkSpaceSize );该函数有以下参数 CompressionFormatAndEngine指定压缩格式和引擎的参数。CompressBufferWorkSpaceSize用于输出压缩缓冲区工作空间大小的指针。CompressFragmentWorkSpaceSize用于输出压缩片段工作空间大小的指针。 函数返回NTSTATUS类型的状态码其中STATUS_SUCCESS表示成功执行。 在使用这个函数时你需要提供足够大的缓冲区来存储工作空间大小。可以按照以下步骤使用该函数 加载 ntdll.dll 库。获取 RtlGetCompressionWorkSpaceSize 函数地址。定义变量用于存储工作空间大小。调用 RtlGetCompressionWorkSpaceSize 函数获取工作空间大小。 RtlCompressBuffer RtlCompressBuffer 同样位于ntdll.dll库中。该函数用于将数据进行压缩。CompressionFormatAndEngine参数指定压缩格式和引擎UncompressedBuffer和UncompressedBufferSize表示输入的未压缩数据CompressedBuffer和CompressedBufferSize表示输出的压缩数据UncompressedChunkSize表示未压缩数据的块大小FinalCompressedSize表示最终压缩后的大小WorkSpace表示用于工作的缓冲区。 以下是该函数的声明 typedef NTSTATUS(WINAPI *typedef_RtlCompressBuffer)(_In_ USHORT CompressionFormatAndEngine,_In_ PUCHAR UncompressedBuffer,_In_ ULONG UncompressedBufferSize,_Out_ PUCHAR CompressedBuffer,_In_ ULONG CompressedBufferSize,_In_ ULONG UncompressedChunkSize,_Out_ PULONG FinalCompressedSize,_In_ PVOID WorkSpace );该函数的参数包括 CompressionFormatAndEngine指定压缩格式和引擎的参数。UncompressedBuffer指向待压缩数据的指针。UncompressedBufferSize待压缩数据的大小。CompressedBuffer指向存储压缩数据的缓冲区的指针。CompressedBufferSize存储压缩数据的缓冲区的大小。UncompressedChunkSize未压缩的数据块的大小。FinalCompressedSize用于输出最终压缩数据的大小的指针。WorkSpace用于提供工作空间的指针。 函数返回NTSTATUS类型的状态码其中STATUS_SUCCESS表示成功执行。 在使用这个函数时你需要提供足够大的缓冲区来存储压缩后的数据。可以按照以下步骤使用该函数 加载ntdll.dll库。获取RtlCompressBuffer函数地址。定义变量并分配内存用于存储未压缩的数据和压缩后的数据。定义变量用于存储工作空间。调用RtlCompressBuffer函数将数据进行压缩。处理压缩后的数据。 RtlDecompressBuffer RtlDecompressBuffer 同样位于ntdll.dll库中。该函数用于将压缩数据进行解压缩。CompressionFormat参数指定压缩格式UncompressedBuffer和UncompressedBufferSize表示输出的未压缩数据CompressedBuffer和CompressedBufferSize表示输入的压缩数据FinalUncompressedSize表示最终解压缩后的大小。 以下是该函数的声明 typedef NTSTATUS(WINAPI *typedef_RtlDecompressBuffer)(_In_ USHORT CompressionFormat,_Out_ PUCHAR UncompressedBuffer,_In_ ULONG UncompressedBufferSize,_In_ PUCHAR CompressedBuffer,_In_ ULONG CompressedBufferSize,_Out_ PULONG FinalUncompressedSize );该函数的参数包括 CompressionFormat指定解压缩的格式。UncompressedBuffer指向存储解压后数据的缓冲区的指针。UncompressedBufferSize存储解压后数据的缓冲区的大小。CompressedBuffer指向待解压数据的指针。CompressedBufferSize待解压数据的大小。FinalUncompressedSize用于输出最终解压后数据的大小的指针。 函数返回NTSTATUS类型的状态码其中STATUS_SUCCESS表示成功执行。 在使用这个函数时你需要提供足够大的缓冲区来存储解压后的数据。可以按照以下步骤使用该函数 加载ntdll.dll库。获取RtlDecompressBuffer函数地址。定义变量并分配内存用于存储待解压的数据和解压后的数据。调用RtlDecompressBuffer函数将数据进行解压。处理解压后的数据。 // 代码来源 《WINDOWS黑客编程技术详解》 // 作者甘迪文 #include Windows.h #include iostream #include windef.htypedef NTSTATUS(WINAPI *typedef_RtlGetCompressionWorkSpaceSize)(_In_ USHORT CompressionFormatAndEngine,_Out_ PULONG CompressBufferWorkSpaceSize,_Out_ PULONG CompressFragmentWorkSpaceSize);typedef NTSTATUS(WINAPI *typedef_RtlCompressBuffer)(_In_ USHORT CompressionFormatAndEngine,_In_ PUCHAR UncompressedBuffer,_In_ ULONG UncompressedBufferSize,_Out_ PUCHAR CompressedBuffer,_In_ ULONG CompressedBufferSize,_In_ ULONG UncompressedChunkSize,_Out_ PULONG FinalCompressedSize,_In_ PVOID WorkSpace);typedef NTSTATUS(WINAPI *typedef_RtlDecompressBuffer)(_In_ USHORT CompressionFormat,_Out_ PUCHAR UncompressedBuffer,_In_ ULONG UncompressedBufferSize,_In_ PUCHAR CompressedBuffer,_In_ ULONG CompressedBufferSize,_Out_ PULONG FinalUncompressedSize);// 数据压缩 BOOL CompressData(BYTE *pUncompressData, DWORD dwUncompressDataLength, BYTE **ppCompressData, DWORD *pdwCompressDataLength) {BOOL bRet FALSE;NTSTATUS status 0;HMODULE hModule NULL;typedef_RtlGetCompressionWorkSpaceSize RtlGetCompressionWorkSpaceSize NULL;typedef_RtlCompressBuffer RtlCompressBuffer NULL;DWORD dwWorkSpaceSize 0, dwFragmentWorkSpaceSize 0;BYTE *pWorkSpace NULL;BYTE *pCompressData NULL;DWORD dwCompressDataLength 4096;DWORD dwFinalCompressSize 0;do{// 加载 ntdll.dll hModule ::LoadLibrary(ntdll.dll);if (NULL hModule){ShowError(LoadLibrary);break;}// 获取 RtlGetCompressionWorkSpaceSize 函数地址RtlGetCompressionWorkSpaceSize (typedef_RtlGetCompressionWorkSpaceSize)::GetProcAddress(hModule, RtlGetCompressionWorkSpaceSize);if (NULL RtlGetCompressionWorkSpaceSize){ShowError(GetProcAddress);break;}// 获取 RtlCompressBuffer 函数地址RtlCompressBuffer (typedef_RtlCompressBuffer)::GetProcAddress(hModule, RtlCompressBuffer);if (NULL RtlCompressBuffer){ShowError(GetProcAddress);break;}// 获取WorkSpqce大小status RtlGetCompressionWorkSpaceSize(COMPRESSION_FORMAT_LZNT1 | COMPRESSION_ENGINE_STANDARD, dwWorkSpaceSize, dwFragmentWorkSpaceSize);if (0 ! status){break;}// 申请动态内存pWorkSpace new BYTE[dwWorkSpaceSize];if (NULL pWorkSpace){break;}::RtlZeroMemory(pWorkSpace, dwWorkSpaceSize);while (TRUE){// 申请动态内存pCompressData new BYTE[dwCompressDataLength];if (NULL pCompressData){break;}::RtlZeroMemory(pCompressData, dwCompressDataLength);// 调用RtlCompressBuffer压缩数据RtlCompressBuffer(COMPRESSION_FORMAT_LZNT1, pUncompressData, dwUncompressDataLength, pCompressData, dwCompressDataLength, 4096, dwFinalCompressSize, (PVOID)pWorkSpace);if (dwCompressDataLength dwFinalCompressSize){// 释放内存if (pCompressData){delete[]pCompressData;pCompressData NULL;}dwCompressDataLength dwFinalCompressSize;}else{break;}}// 返回*ppCompressData pCompressData;*pdwCompressDataLength dwFinalCompressSize;bRet TRUE;} while (FALSE);// 释放if (pWorkSpace){delete[]pWorkSpace;pWorkSpace NULL;}if (hModule){::FreeLibrary(hModule);}return bRet; }// 数据解压缩 BOOL UncompressData(BYTE *pCompressData, DWORD dwCompressDataLength, BYTE **ppUncompressData, DWORD *pdwUncompressDataLength) {BOOL bRet FALSE;HMODULE hModule NULL;typedef_RtlDecompressBuffer RtlDecompressBuffer NULL;BYTE *pUncompressData NULL;DWORD dwUncompressDataLength 4096;DWORD dwFinalUncompressSize 0;do{// 加载 ntdll.dll hModule ::LoadLibrary(ntdll.dll);if (NULL hModule){break;}// 获取 RtlDecompressBuffer 函数地址RtlDecompressBuffer (typedef_RtlDecompressBuffer)::GetProcAddress(hModule, RtlDecompressBuffer);if (NULL RtlDecompressBuffer){break;}while (TRUE){// 申请动态内存pUncompressData new BYTE[dwUncompressDataLength];if (NULL pUncompressData){break;}::RtlZeroMemory(pUncompressData, dwUncompressDataLength);// 调用RtlCompressBuffer压缩数据RtlDecompressBuffer(COMPRESSION_FORMAT_LZNT1, pUncompressData, dwUncompressDataLength, pCompressData, dwCompressDataLength, dwFinalUncompressSize);if (dwUncompressDataLength dwFinalUncompressSize){// 释放内存if (pUncompressData){delete[]pUncompressData;pUncompressData NULL;}dwUncompressDataLength dwFinalUncompressSize;}else{break;}}// 返回*ppUncompressData pUncompressData;*pdwUncompressDataLength dwFinalUncompressSize;bRet TRUE;} while (FALSE);// 释放if (hModule){::FreeLibrary(hModule);}return bRet; }int main(int argc, char *argv[]) {DWORD i 0;BOOL bRet FALSE;char szBuffer[] DDDDDDDDDDGGGGGGGGGGGG;DWORD dwBufferLength ::lstrlen(szBuffer);BYTE *pCompressData NULL;DWORD dwCompressDataLength 0;BYTE *pUncompressData NULL;DWORD dwUncompressDataLength 0;// 压缩数据CompressData((BYTE *)szBuffer, dwBufferLength, pCompressData, dwCompressDataLength);// 解压数据UncompressData(pCompressData, dwCompressDataLength, pUncompressData, dwUncompressDataLength);// 显示printf(原数据为:\n);for (i 0; i dwBufferLength; i){printf(%X , szBuffer[i]);}printf(\n\n压缩数据为:\n);for (i 0; i dwCompressDataLength; i){printf(%X , pCompressData[i]);}printf(\n\n解压缩数据为:\n);for (i 0; i dwUncompressDataLength; i){printf(%X , pUncompressData[i]);}printf(\n);// 释放if (pUncompressData){delete[]pUncompressData;pUncompressData NULL;}if (pCompressData){delete[]pCompressData;pCompressData NULL;}system(pause);return 0; }
http://www.pierceye.com/news/902558/

相关文章:

  • 快手官方网站音乐人怎么做商城建站系统源码
  • 南充市建设厅官方网站高州做网站
  • 自建网站的优缺点wordpress题库制作
  • 哪家公司做网站毕业设计心理评测网站开发
  • 建设电影网站数据库脚本问答网站如何优化
  • 嘉峪关建设路小学网站游戏网页链接
  • 阿里云 网站根目录广东建筑企业50强
  • 河北省网络科技网站装饰设计素描
  • 合肥网站建设索q479185700企业做网站公司哪家好
  • wordpress暂停网站兰州网站建设方法
  • 丰台网站制作html教程 菜鸟教程
  • 在那个网站做直播好赚钱吗重庆妇科医院排名大全
  • 在线教育网站建设投标书查询公司的网站备案信息查询
  • 俄文网站策划wdcp wordpress
  • 建设个人网站流程中国工程建设招聘信息网站
  • 电影网站设计说明书在原域名给公司建立网站
  • 小规模公司做网站成本是什么wordpress主题转html
  • seo做的比较好的网站的几个特征app网站建设教程视频教程
  • 网站建设规范优质高等职业院校建设网站
  • 国内做网站哪家公司好机票什么网站建设
  • 万盛经开区建设局官方网站高校校园网站建设的要求
  • 制作企业网站的实训报告防伪码查询网站怎么做的
  • 做网站会很忙吗网站 js 广告代码
  • 没有网站域名备案专业做书画推广的网站
  • 做app网站公司名称有没有做黑市网站
  • apache建设网站做网站页面代码
  • html5 单页网站网络运维从入门到精通
  • 联合建设官方网站银川网站seo
  • jsp网站开发与设计摘要网站开发是什么
  • 公司网站建设论文结束语谷歌建站多少钱