示例】"/>
【smc代码示例】
smc(self-modifyingcode)动态代码加密技术,指通过修改代码或数据,阻止别人直接静态分析,然后在动态运行程序时对代码进行解密,达到程序正常运行的效果
代码:加密解密4 (17.4)
try{_asm inc eax // 在十六进制工具中对应0x40 _asm dec eax // 在十六进制工具中对应0x48begindecrypt:...........enddecrypt:_asm inc eax // 在十六进制工具中对应0x40 _asm dec eax // 在十六进制工具中对应0x48return TRUE;}catch (...){MessageBoxA(NULL, TEXT("请注册,以获得完整的功能 !"), TEXT("提示"), 0);Decrypt(ptr, Size, k);//如注册码不正确,则必须得再次调用Decrypt()将address1和address2之间数据还原return FALSE;}
void Decrypt(DWORD* pData, DWORD Size, DWORD value)
{//首先要做的是改变这一块虚拟内存的内存保护状态,以便可以自由存取代码MEMORY_BASIC_INFORMATION mbi_thunk;//查询页信息VirtualQuery(pData, &mbi_thunk, sizeof(MEMORY_BASIC_INFORMATION));//改变页保护属性为读写。VirtualProtect(mbi_thunk.BaseAddress, mbi_thunk.RegionSize, PAGE_READWRITE, &mbi_thunk.Protect);Size = Size / 0x4; //对数据共需要异或的次数//解密begindecrypt与enddecrypt标签处的数据while (Size--){*pData = (*pData) ^ value;pData++;}//恢复页的原保护属性。DWORD dwOldProtect;VirtualProtect(mbi_thunk.BaseAddress, mbi_thunk.RegionSize, mbi_thunk.Protect, &dwOldProtect);}
更多推荐
【smc代码示例】
发布评论