首页
社区
课程
招聘
[原创]VC实现SMC加密技术
发表于: 2015-6-20 22:42 19147

[原创]VC实现SMC加密技术

2015-6-20 22:42
19147

先祝各位看官端午节快乐吧~
前言
SMC是一种局部代码加密技术,通过对一段代码进行加密来达到增加逆向工程难度或者免杀的目的。

void xorPlus(char *soure,int dLen,char *Key,int Klen)
{
    for (int i=0;i<dLen;)
    {
        for (int j=0;(j<Klen) && (i<dLen);j++,i++)
        {
            soure[i]=soure[i] ^ Key[j];
            soure[i]=~soure[i];
        }
    }
}
#pragma code_seg(".SMC")
void Fun1()
{
    MessageBoxA(NULL,"正在执行被加密算法。",NULL,MB_OK);
}
#pragma code_seg()
#pragma comment(linker, "/SECTION:.SMC,ERW")
#pragma code_seg(".SMC")
#include "关键的源代码.h"
#pragma code_seg()
#pragma comment(linker, "/SECTION:.SMC,ERW")
void SMC(char *pBuf,char *key)
{
    // SMC 加密XX区段
    const char *szSecName = ".SMC";
    short nSec;
    PIMAGE_DOS_HEADER pDosHeader;
    PIMAGE_NT_HEADERS pNtHeader;
    PIMAGE_SECTION_HEADER pSec;
    pDosHeader=(PIMAGE_DOS_HEADER)pBuf;
    pNtHeader=(PIMAGE_NT_HEADERS)&pBuf[pDosHeader->e_lfanew];
    nSec=pNtHeader->FileHeader.NumberOfSections;
    pSec=(PIMAGE_SECTION_HEADER)&pBuf[ sizeof(IMAGE_NT_HEADERS)+pDosHeader->e_lfanew];
    for (int i=0;i<nSec;i++)
    {
        if (strcmp((char *)&pSec->Name,szSecName)==0)
        {
            int pack_size;
            char *packStart; 
            pack_size=pSec->SizeOfRawData;
            packStart = &pBuf[pSec->VirtualAddress];
            //VirtualProtect(packStart,pack_size,PAGE_EXECUTE_READWRITE,&old);
            xorPlus(packStart,pack_size,key,strlen(key));
            //AfxMessageBox(_T("SMC解密成功。"));
            return;
        }
        pSec++;
    }
}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 4
支持
分享
最新回复 (26)
雪    币: 1774
活跃值: (1060)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
实用时可以把这个异或加密换成别的算法~~
2015-6-21 01:48
0
雪    币: 50161
活跃值: (20670)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
3
当年写的类似思路的一个CrackMe
http://past.pediy.com/showthread.php?t=8211
2015-6-21 08:33
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
4
楼主写得不错,很清晰
2015-6-21 11:39
0
雪    币: 3386
活跃值: (1418)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
5
学习了 。。
2015-6-21 12:26
0
雪    币: 7942
活跃值: (2372)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
简单清晰明了,学习了
2015-6-21 12:49
0
雪    币: 1042
活跃值: (560)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
解密后dump
2015-6-21 17:58
0
雪    币: 6938
活跃值: (9164)
能力值: ( LV17,RANK:797 )
在线值:
发帖
回帖
粉丝
8
可以把密匙作为注册码,让用户输入。
2015-6-21 18:49
0
雪    币: 22
活跃值: (458)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
MARK!
2015-6-21 19:40
0
雪    币: 1185
活跃值: (458)
能力值: ( LV13,RANK:360 )
在线值:
发帖
回帖
粉丝
10
mark  学习了
2015-6-21 23:37
0
雪    币: 1042
活跃值: (560)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
学习了,蛮喜欢看楼主的帖子,思路清晰~
2015-6-22 01:47
0
雪    币: 81
活跃值: (115)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
12
注册码泄露了怎么办
2015-6-22 09:10
0
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
先mark
放假再look
2015-6-22 13:37
0
雪    币: 3948
活跃值: (2390)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
硬盘序列号等+注册码
注册码泄漏了也没关系。
2015-6-22 22:34
0
雪    币: 300
活跃值: (2557)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
mark
2015-6-23 07:54
0
雪    币: 76
活跃值: (206)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
16
感谢分享
2015-6-23 10:35
0
雪    币: 81
活跃值: (115)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
17
SMC怎么和硬盘序列号结合呢
2015-6-23 15:19
0
雪    币: 107
活跃值: (419)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
学习了...............
2015-6-23 17:47
0
雪    币: 80
活跃值: (109)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
19
写的挺好,学习,表示为数不多的看得懂的文章之一哈
顺便浏览下博客
2015-6-24 13:30
0
雪    币: 122
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
mark,感谢LZ
2015-6-24 19:42
0
雪    币: 74
活跃值: (763)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
学习一下,感谢分享
2015-6-25 14:55
0
雪    币: 10832
活跃值: (3734)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
22
学习一下,留个脚印。
2015-6-27 12:55
0
雪    币: 23
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
这东西整明白了,vmp就好搞了。
2015-6-28 00:13
0
雪    币: 71
活跃值: (58)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
思路不错~~
2015-7-1 09:23
0
雪    币: 143
活跃值: (263)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
25
值钱的代码 都放在dll 里了 ,  这个用不上
2015-7-1 21:02
0
游客
登录 | 注册 方可回帖
返回
//