Garbage code collection area

Source: Internet
Author: User
typedef struct CODE{int Ptr[4 * 4];}*LPCODE;/*__declspec(naked) */static LPVOID WINAPI Alloc(HANDLE hHeap, DWORD dwFlags, SIZE_T dwBytes){return AppBase::Allocate(dwBytes);}/*__declspec(naked) */static LPVOID WINAPI ReAlloc(HANDLE hHeap, DWORD dwFlags, LPVOID lpMem, SIZE_T dwBytes){return AppBase::ReAlloc(lpMem, dwBytes);}/*__declspec(naked) */static BOOL WINAPI Collect(HANDLE hHeap, DWORD dwFlags, LPVOID lpMem){AppBase::Collect(lpMem);return TRUE;}/*__declspec(naked) */static BOOL WINAPI Validate(HANDLE hHeap,DWORD dwFlags,LPVOID lpMem){return AppBase::Validate(lpMem)? TRUE : FALSE;}/*__declspec(naked) */static SIZE_T WINAPI SizeOf(HANDLE hHeap,DWORD dwFlags, LPVOID lpMem){return AppBase::GetSize(lpMem);}void hook(){LPCODE pCode = (LPCODE)(HeapAlloc), pCodeConst;LONG   nCode = 0;__asm {mov eax, offset X86_CODE_BEGINmov pCodeConst, eaxmov nCode, offset X86_CODE_ENDsub nCode, eax}System::IO::MemoryAllocator::Protect(AppBase::GetCurrentProcess(), pCode, nCode, RLIB_PAGE_EXECUTE_READWRITE);System::IO::Memory::memcpy(pCode, pCodeConst, nCode);goto X86_CODE_END;X86_CODE_BEGIN:__asm{push Allocret}X86_CODE_END:pCode = (LPCODE)(HeapFree);__asm {mov eax, offset X86_CODE_BEGIN_Xmov pCodeConst, eaxmov nCode, offset X86_CODE_END_Xsub nCode, eax}System::IO::MemoryAllocator::Protect(AppBase::GetCurrentProcess(), pCode, nCode, RLIB_PAGE_EXECUTE_READWRITE);System::IO::Memory::memcpy(pCode, pCodeConst, nCode);goto X86_CODE_END_X;X86_CODE_BEGIN_X:__asm{push Collectret}X86_CODE_END_X:pCode = (LPCODE)(HeapReAlloc);__asm {mov eax, offset X86_CODE_BEGIN_Zmov pCodeConst, eaxmov nCode, offset X86_CODE_END_Zsub nCode, eax}System::IO::MemoryAllocator::Protect(AppBase::GetCurrentProcess(), pCode, nCode, RLIB_PAGE_EXECUTE_READWRITE);System::IO::Memory::memcpy(pCode, pCodeConst, nCode);goto X86_CODE_END_Z;X86_CODE_BEGIN_Z:__asm{push ReAllocret}X86_CODE_END_Z:pCode = (LPCODE)(HeapValidate);__asm {mov eax, offset X86_CODE_BEGIN_Amov pCodeConst, eaxmov nCode, offset X86_CODE_END_Asub nCode, eax}System::IO::MemoryAllocator::Protect(AppBase::GetCurrentProcess(), pCode, nCode, RLIB_PAGE_EXECUTE_READWRITE);System::IO::Memory::memcpy(pCode, pCodeConst, nCode);goto X86_CODE_END_A;X86_CODE_BEGIN_A:__asm{push Validateret}X86_CODE_END_A:pCode = (LPCODE)(HeapSize);__asm {mov eax, offset X86_CODE_BEGIN_Vmov pCodeConst, eaxmov nCode, offset X86_CODE_END_Vsub nCode, eax}System::IO::MemoryAllocator::Protect(AppBase::GetCurrentProcess(), pCode, nCode, RLIB_PAGE_EXECUTE_READWRITE);System::IO::Memory::memcpy(pCode, pCodeConst, nCode);goto X86_CODE_END_V;X86_CODE_BEGIN_V:__asm{push SizeOfret}X86_CODE_END_V:return;}

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.