首页
社区
课程
招聘
[原创]在SMC中加入密码学算法
发表于: 2009-6-27 10:37 10008

[原创]在SMC中加入密码学算法

2009-6-27 10:37
10008
#include "stdafx.h"
#include <windows.h>

#pragma comment(linker,"/opt:nowin98")

typedef int (__stdcall *PFNMESSAGEBOX)(HWND, LPCTSTR,LPCTSTR,UINT);

int main(int argc, char* argv[])
{
	HMODULE hMod = NULL;
	PFNMESSAGEBOX lpfnMsgBox = NULL; 

	printf("SMC begin !\n");

	__asm
	{
		_emit 'G'   ;inc edi
		_emit 'O'   ;dec edi
		_emit 'G'
		_emit 'O'
		_emit 'G'
		_emit 'O'
	}

	if (NULL != (hMod = LoadLibrary("user32.dll")))
	{
		if (NULL != (lpfnMsgBox = (PFNMESSAGEBOX)GetProcAddress(hMod,"MessageBoxA")))
		{
			lpfnMsgBox(NULL,"Hi, this is SMC test !","-==-",MB_ICONINFORMATION);
		}
		else
		{
			printf("GetProcAddress failed!\n");
		}
	}
	else
	{
		printf("LoadLibrary failed !\n");
	}

	__asm
	{
		_emit 'G'
		_emit 'O'
		_emit 'G'
		_emit 'O'
		_emit 'G'
		_emit 'O'
	}

	printf("SMC end !\n");

	return 0;
}
unsigned char data[66] = {
	0x68, 0x78, 0x30, 0x40, 0x00, 0xFF, 0x15, 0x00, 0x20, 0x40, 0x00, 0x85, 0xC0, 0x74, 0x29, 0x68, 
	0x6C, 0x30, 0x40, 0x00, 0x50, 0xFF, 0x15, 0x04, 0x20, 0x40, 0x00, 0x85, 0xC0, 0x74, 0x12, 0x6A, 
	0x40, 0x68, 0x64, 0x30, 0x40, 0x00, 0x68, 0x4C, 0x30, 0x40, 0x00, 0x6A, 0x00, 0xFF, 0xD0, 0xEB, 
	0x11, 0x68, 0x34, 0x30, 0x40, 0x00, 0xEB, 0x05, 0x68, 0x1C, 0x30, 0x40, 0x00, 0xFF, 0xD6, 0x83, 
	0xC4, 0x04
};

unsigned char strKey[] = “Miczosoft.MSZ.9.0”;
void VigenereEncrypt(unsigned char *M, int length, unsigned char *C)
{
	int i = 0;
	int nLenKey = strlen(strKey);
	for(;i<length;++i)
	{
		C[i] = (M[i] + strKey[i%nLenKey]) % 0x100;
}
}

void VigenereDecrypt(unsigned char *C, int length, unsigned char *M)
{
	int i = 0;
	int nLenKey = strlen(strKey);
	for(;i<length;++i)
	{
	M[i] = (C[i] – strKey[i%nLenKey] + 0x100) % 0x100;
}
}


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

上传的附件:
收藏
免费 7
支持
分享
最新回复 (14)
雪    币: 1450
活跃值: (35)
能力值: (RANK:680 )
在线值:
发帖
回帖
粉丝
2
占个位, 先 ~~
2009-6-27 10:42
0
雪    币: 319
活跃值: (49)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
牛是牛。。。。但看的不是很懂。。。。。。。。。。。。
2009-6-27 10:48
0
雪    币: 1450
活跃值: (35)
能力值: (RANK:680 )
在线值:
发帖
回帖
粉丝
4
可能我的表达能力不够好.
老技术了,  各位多多包含.
2009-6-27 10:52
0
雪    币: 393
活跃值: (100)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
5
__asm
  {
    _emit 'G'   ;inc edi
    _emit 'O'   ;dec edi
    _emit 'G'
    _emit 'O'
    _emit 'G'
    _emit 'O'
  }

2009-6-27 11:13
0
雪    币: 102
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
顶..lz的东西排版,内容都很好..
2009-6-28 07:34
0
雪    币: 5339
活跃值: (3739)
能力值: ( LV13,RANK:283 )
在线值:
发帖
回帖
粉丝
7
谢谢分享。问一下,直接把机器码修改了对程序的通用性会产生影响吗?例如不同的操作系统,不同的CPU等等?
2009-6-28 10:13
0
雪    币: 254
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
这个通用性是决定在原程序的基础上吧
2009-6-28 10:57
0
雪    币: 232
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
LZ这个技术能否拓展一下?
比如一个软件有多种功能。编写的时候只有一个GUI。那些实际模块全部SMC。需要的时候在解压执行。
类似于原生的molebox...不知是否可行??
2009-6-28 12:09
0
雪    币: 191
活跃值: (345)
能力值: ( LV9,RANK:450 )
在线值:
发帖
回帖
粉丝
10
不错,学习了。神奇的G0G0
2009-6-28 13:30
0
雪    币: 1450
活跃值: (35)
能力值: (RANK:680 )
在线值:
发帖
回帖
粉丝
11
那样没多大用处. SMC后, 代码还是可以还原. IDA也可以写相应脚本解密.
一般通过VM核心代码要比你说的方案好
2009-6-28 15:25
0
雪    币: 232
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
菜鸟受教了。。。。。
2009-6-28 20:41
0
雪    币: 284
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
的确是精品~~
2009-6-28 22:46
0
雪    币: 1433
活跃值: (4428)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
14
大佬图好像挂了
2017-6-4 16:03
0
雪    币: 631
活跃值: (46)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
SMC,可以通过第三方程序,定位代码段加密。软件内只留解密函数即可解密函数的复杂度,对应破解的难度
2017-7-20 12:25
0
游客
登录 | 注册 方可回帖
返回
//