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

网站建设特点有没有免费的商城小程序

网站建设特点,有没有免费的商城小程序,如何做网站推广下拉刘贺稳14,学网站开发学费多少在第二种shellcode编写实战(1)的基础上#xff0c;新增加一个CAPI类#xff0c;将所有用到的函数都在这个类中做动态调用的处理#xff0c;这样使得整个shellcode功能结构更加清晰。 1. 新建类CAPI#xff08;即api.h和api.cpp两个文件#xff09;#xff1a; api.h新增加一个CAPI类将所有用到的函数都在这个类中做动态调用的处理这样使得整个shellcode功能结构更加清晰。 1. 新建类CAPI即api.h和api.cpp两个文件 api.h #pragma once#include windows.h #include Winternl.hclass CAPI { private:HMODULE GetKernel32BaseAddress();FARPROC _GetPorcAddress();public:void InitFunctions();public:typedef HANDLE(WINAPI* FN_CreateFileA)(_In_ LPCSTR lpFileName,_In_ DWORD dwDesiredAccess,_In_ DWORD dwShareMode,_In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes,_In_ DWORD dwCreationDisposition,_In_ DWORD dwFlagsAndAttributes,_In_opt_ HANDLE hTemplateFile);typedef int (WINAPI* FN_MessageBoxA)(__in_opt HWND hWnd,__in_opt LPCSTR lpText,__in_opt LPCSTR lpCaption,__in UINT uType);typedef HMODULE(WINAPI* FN_LoadLibraryA)(__in LPCSTR lpLibFileName);public:FN_CreateFileA CreateFileA;FN_MessageBoxA MessageBoxA;FN_LoadLibraryA LoadLibraryA; }; api.cpp #include api.h// 获取kernel32基址 HMODULE CAPI::GetKernel32BaseAddress() {HMODULE hKernel32 NULL;// 用户保存模块名WCHAR wszModuleName[MAX_PATH];#ifdef _WIN64 // 64位PEB偏移为0x60PPEB lpPeb (PPEB)__readgsqword(0x60); #else // 32位PEB偏移为0x30PPEB lpPeb (PPEB)__readfsdword(0x30); #endifPLIST_ENTRY pListHead lpPeb-Ldr-InMemoryOrderModuleList;PLIST_ENTRY pListData pListHead-Flink;// 遍历所有模块while (pListData ! pListHead){PLDR_DATA_TABLE_ENTRY pLDRData CONTAINING_RECORD(pListData, LDR_DATA_TABLE_ENTRY, InMemoryOrderLinks);DWORD dwLen pLDRData-FullDllName.Length / 2;if (dwLen 12) // 12 是kernel32.dll的长度获取到的完整路径肯定要比模块名长{// 从获取到的模块完整路径中提取模块名for (size_t i 0; i 12; i){wszModuleName[11 - i] pLDRData-FullDllName.Buffer[dwLen - 1 - i];}// 最终要获取的目标模块名kernel32.dll逐个字节比较包含大小写。if ((wszModuleName[0] k || wszModuleName[0] K) (wszModuleName[1] e || wszModuleName[1] E) (wszModuleName[2] r || wszModuleName[2] R) (wszModuleName[3] n || wszModuleName[3] N) (wszModuleName[4] e || wszModuleName[4] E) (wszModuleName[5] l || wszModuleName[5] L) (wszModuleName[6] 3) (wszModuleName[7] 2) (wszModuleName[8] .) (wszModuleName[9] d || wszModuleName[9] D) (wszModuleName[10] l || wszModuleName[10] L) (wszModuleName[11] l || wszModuleName[11] L)){hKernel32 (HMODULE)pLDRData-DllBase;break;}}pListData pListData-Flink;}return hKernel32; }// 获取GetPorcAddress函数地址 FARPROC CAPI::_GetPorcAddress() {// 保存最终结果FARPROC pGetPorcAddress NULL;// kernel32基址HMODULE hKernel32 GetKernel32BaseAddress();if (!hKernel32){return NULL;}PIMAGE_DOS_HEADER lpDosHeader (PIMAGE_DOS_HEADER)hKernel32;PIMAGE_NT_HEADERS lpNTHeader (PIMAGE_NT_HEADERS)((unsigned char*)hKernel32 lpDosHeader-e_lfanew);// 模块有效性验证if (!lpNTHeader-OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].Size){return NULL;}if (!lpNTHeader-OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress){return NULL;}// 通过导出表中的导出函数名定位GetProcAddress的位置PIMAGE_EXPORT_DIRECTORY lpExports (PIMAGE_EXPORT_DIRECTORY)((unsigned char*)hKernel32 lpNTHeader-OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress);PDWORD lpdwFunName (PDWORD)((unsigned char*)hKernel32 lpExports-AddressOfNames);PWORD lpdwOrd (PWORD)((unsigned char*)hKernel32 lpExports-AddressOfNameOrdinals);PDWORD lpdwFunAddr (PDWORD)((unsigned char*)hKernel32 lpExports-AddressOfFunctions);for (DWORD dwLoop 0; dwLoop lpExports-NumberOfNames - 1; dwLoop){char* pFunName (char*)(lpdwFunName[dwLoop] (unsigned char*)hKernel32);// 比较函数名if (pFunName[0] G pFunName[1] e pFunName[2] t pFunName[3] P pFunName[4] r pFunName[5] o pFunName[6] c pFunName[7] A pFunName[8] d pFunName[9] d pFunName[10] r pFunName[11] e pFunName[12] s pFunName[13] s){pGetPorcAddress (FARPROC)(lpdwFunAddr[lpdwOrd[dwLoop]] (unsigned char*)hKernel32);break;}}return pGetPorcAddress; }// 初始化所有用到的函数 void CAPI::InitFunctions() {// 获取GetPorcAddress函数地址typedef FARPROC(WINAPI* FN_GetProcAddress)(__in HMODULE hModule, __in LPCSTR lpProcName);FN_GetProcAddress fn_GetProcAddress (FN_GetProcAddress)_GetPorcAddress();if (fn_GetProcAddress){// 获取LoadLibraryA函数地址char szLoadLibraryA[] { L,o,a,d,L,i,b,r,a,r,y,A,0 };LoadLibraryA (FN_LoadLibraryA)fn_GetProcAddress(GetKernel32BaseAddress(), szLoadLibraryA);if (LoadLibraryA){// 获取MessageBoxA函数地址char szUser32[] { U,s,e,r,3,2,.,d,l,l,0 };char szMessageBoxA[] { M,e,s,s,a,g,e,B,o,x,A,0 };MessageBoxA (FN_MessageBoxA)fn_GetProcAddress(LoadLibraryA(szUser32), szMessageBoxA);// 获取CreateFileA函数地址char szCreateFileA[] { C,r,e,a,t,e,F,i,l,e,A,0 };CreateFileA (FN_CreateFileA)fn_GetProcAddress(GetKernel32BaseAddress(), szCreateFileA);}} } 2. 在CAPI中使用InitFunctions函数来初始化所有shellcode中用到的函数在shellcode执行功能处进行如下调用即可a.start.cpp #include a.start.h #include shellcode.h #include api.hvoid ShellCodeStart() {CAPI api;// 初始化所有用到的函数api.InitFunctions();CDoShellcode shellcode;// 创建文件shellcode.DoCreateFile(api);// 弹框提示shellcode.DoMessageBox(api);// 其他功能... } 3. 在类CDoShellcode中将所有函数功能执行的参数都传递一个CAPI的指针变量那么所有功能都可以使用CAPI中的函数。比如CDoShellcode中的DoCreateFile方法 // 功能创建文件 D:\1.txt int CDoShellcode::DoCreateFile(CAPI* api) {// 执行动态CreateFileA创建文件char szFilePath[] { D,:,\\,1,.,t,x,t,0 };api-CreateFileA(szFilePath, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL);return 0; } 如此一来对类CDoShellcode而言我们只关注功能的实现不必再顾及函数动态调用的问题。所有用到的动态函数的实现都可以共享CAPI中的实现。 项目结构 两个类 CDoShellcodeshellcode.h和shellcode.cppshellcode执行的各类功能CAPIapi.h和api.cpp所有shellcode使用到的动态函数。
http://www.w-s-a.com/news/893397/

相关文章:

  • 什么是网络营销型网站手机网站 图标
  • 全国新农村建设网站外包和劳务派遣哪个好
  • 网站权限控制什么软件做网站描述
  • 建网络商城网站wordpress关于
  • 专业网站建设分类标准重庆网站开发哪家专业
  • 织梦的网站关键词如何自己搭建微信小程序
  • 怎么做基金公司网站韩都衣舍网站建设ppt
  • 外贸网站模板aspnet网站开发 视频
  • 上海植物租赁做网站南浔网站建设
  • 怎么做学校网站做兼职工作上哪个网站招聘
  • 软件下载网站哪个比较好杭州开发小程序
  • 做网站都用什么技术学做名片的网站
  • 备案网站忘记密码乐装网
  • 电商扶贫网站建设淄博网站建设小程序
  • 网站群建设代理丰城网站建设公司
  • 青岛网站建设服务器wordpress迁移跳转原网站
  • 泰安网站建设哪里有公司如何注册网站
  • 做网站开专票税钱是多少个点上海市有哪些公司
  • 寿县有做网站开发的吗宁波网站建设方式
  • 网站建设和网站推广服务器怎么发布网站
  • 比较好的摄影网站雅安市政建设公司网站
  • 网站与微信区别wordpress 站内信
  • 宁夏网站开发设计说明书源码下载脚本之家
  • 邱县做网站百度搜索排名机制
  • 运城个人网站建设智慧团建系统官方网站登录
  • 公司营业执照可以做几个网站一家专门做母婴的网站
  • 网站建设商标属于哪个类别搜狗seo快速排名公司
  • 织梦做商城网站企业网络建站
  • 网站后期维护都有什么wordpress首页加图片
  • 展会网站怎么做网页设计与制作教程版徐洪亮课后答案