前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CryEntryBuffer

CryEntryBuffer

作者头像
IBinary
发布2022-05-10 13:24:42
1610
发布2022-05-10 13:24:42
举报
文章被收录于专栏:逆向技术逆向技术

简单的RC4代码加密实现

struct rc4_state
{
    int x, y, m[256];
};

void rc4_setup(struct rc4_state *s, unsigned char *key, int length)
{
	int i, j, k, *m, a;

	s->x = 0;
	s->y = 0;
	m = s->m;

	for(i = 0; i < 256; i++)
	{
		m[i] = i;
	}

	j = k = 0;

	for(i = 0; i < 256; i++)
	{
		a = m[i];
		j = (unsigned char) (j + a + key[k]);
		m[i] = m[j]; m[j] = a;
		if(++k >= length) k = 0;
	}
}

//******************************************************************************

void rc4_crypt( struct rc4_state *s, unsigned char *data, int length)
{ 
	int i, x, y, *m, a, b;

	x = s->x;
	y = s->y;
	m = s->m;

	for( i = 0; i < length; i++)
	{
		x = (unsigned char) (x + 1); a = m[x];
		y = (unsigned char) (y + a);
		m[x] = b = m[y];
		m[y] = a;
		data[i] ^= m[(unsigned char) (a + b)];
	}

	s->x = x;
	s->y = y;
}

BOOL EntryptionBuf(char* Buf, DWORD dwlen)
{
	BYTE rc4_key[8] = {0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF};
	rc4_state rc4_test;		
	memset(&rc4_test, 0, sizeof(rc4_test));

	try
	{
		rc4_setup(&rc4_test, rc4_key, 8);
		rc4_crypt(&rc4_test, (unsigned char*)Buf, dwlen);
	}
	catch (...)
	{
		return FALSE;		
	}

	return TRUE;
}

int main()
{
   EntryptionBuf(youBuf,youBufSize);
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-12-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档