首页
社区
课程
招聘
[原创]Xiah網絡遊戲的協議加密解密函數~!
发表于: 2010-3-10 17:10 4472

[原创]Xiah網絡遊戲的協議加密解密函數~!

2010-3-10 17:10
4472
記得以前發過了,我沒發現我發那了,今天刪垃圾,看到了發出來,奇俠OL估計沒人玩的了.也沒是麼價值了.早就想丟出來了,但是一直沒時間.不好版主直接刪除即可~!


#include "stdafx.h"
#include "XiahEncDecProc.h"

int		newXiahEncProc(void   *pbuf, BYTE	key)
{
	BYTE	byal =key;
	LPBYTE	pbyte=(LPBYTE)pbuf;

	DWORD	dwecx = (DWORD)pbyte;
	DWORD	dwedi = dwecx;
	DWORD	dwesi = dwedi;

	WORD	wdcx  = *(LPWORD)(dwesi + 0x02);
	BYTE	bybl  = *(LPBYTE)dwesi;

	wdcx += 0x04;
	BYTE	bydl = (BYTE)wdcx;

	bydl += byal;
	bybl += bydl;

	*(LPBYTE)dwesi = bybl;

	dwesi = dwedi;
	bydl  = *(LPBYTE)dwesi;
	bydl += (BYTE)wdcx;
	bydl += byal;
	*(LPBYTE)(dwesi+0x01) += bydl;

	DWORD	dweax = dwedi;
	bydl    =*(LPBYTE)(dweax+0x01);
	int	iebp=wdcx;
	iebp -= 0x04;

	dweax =0x00;
	if(iebp > 0x00)
	{
		dwesi = dwedi +0x04;
		do{
			bybl = (BYTE)wdcx;
			bybl += bydl;
			bybl += key;
			*(LPBYTE)(dwesi + dweax) += bybl;
			dwesi = dwedi +0x04;
			bydl =*(LPBYTE)(dwesi + dweax);
			dweax ++;
		}while(dweax < (DWORD)iebp);
	}
	return dweax + 0x04;
}

int		newXiahDecProc(void   *pbuf, BYTE   key)
{
	BYTE	bybl =key;
	LPBYTE	pbyte=(LPBYTE)pbuf;

	DWORD	dwecx = (DWORD)pbyte;
	DWORD	dwebp = dwecx;
	DWORD	dwesi = dwebp;

	BYTE	bycl = *(LPBYTE)dwesi;
	WORD	wdax = *(LPWORD)(dwesi + 0x02);
	wdax += 0x04;

	BYTE	bydl = bycl;
	bydl -= (BYTE)wdax;
	bydl -= bybl;
	*(LPBYTE)dwesi = bydl;

	dwesi = dwebp;
	bydl = *(LPBYTE)(dwesi + 0x01);
	bybl = bydl;
	bybl -= (BYTE)wdax;
	bybl -= bycl;
	bybl -= key;
	*(LPBYTE)(dwesi + 0x01) = bybl;

	dwesi =(DWORD)wdax;
	dwesi -= 0x04;

	DWORD	dwedi =0;
	if(dwesi > 0x00 )
	{
		do{
			dwecx = dwebp +0x04;
			bybl  = *(LPBYTE)(dwecx +dwedi);
			dwecx += dwedi;
			BYTE esp13 =bybl;
			bybl -= (BYTE) wdax;
			bybl -= bydl;
			bybl -= key;
			bydl =esp13;

			dwedi ++;
			*(LPBYTE)dwecx = bybl;
		}while(dwedi < dwesi);
	}
	return dwedi +0x04;
}

int		oldXiahEncProc(void   *pbuf,BYTE	key)
{
	LPBYTE	pbyte=(LPBYTE)pbuf;

	DWORD	dwesi = (DWORD)pbyte;
	DWORD	dwedi =  dwesi;

	WORD	wddx   = *(LPWORD)(dwedi +0x02);
	BYTE	byal    =   key;
	BYTE	bybl   =*(LPBYTE)dwedi;
	wddx += 0x04;

	BYTE	bycl =(BYTE)wddx;
	bycl += byal;
	bybl += bycl;
	*(LPBYTE)dwedi = bybl;

	dwedi =  dwesi;
	bycl =*(LPBYTE)dwedi;
	bycl += (BYTE)wddx;
	bycl += byal;
	*(LPBYTE)(dwedi + 0x01) += bycl;

	DWORD	dweax =  dwesi;
	bycl =*(LPBYTE)(dweax + 0x01);
	int	iebp= wddx;
	iebp -= 0x04;

	dweax=0;

	if(iebp > 0)
	{
		dwedi =  dwesi + 0x04;
		do{
			bybl = (BYTE)wddx;
			bybl += bycl;
			bybl += key;
			*(LPBYTE)(dwedi + dweax) += bybl;

			DWORD	dwecx = dwesi + 0x04;
			bybl =*(LPBYTE)(dwecx + dweax);
			dwecx += dweax;
			bybl += 0xAA;
			*(LPBYTE)(dwecx + 0x00)=bybl;

			dwecx = dwesi + 0x04;
			bybl =*(LPBYTE)(dwecx + dweax);
			dwecx += dweax;
			bybl ^= 0xBB;
			*(LPBYTE)(dwecx + 0x00)=bybl;

			dwecx = dwesi + 0x04;
			bybl =*(LPBYTE)(dwecx + dweax);
			dwecx += dweax;
			bybl += 0x34;
			*(LPBYTE)(dwecx + 0x00)=bybl;

			dwecx = dwesi + 0x04;
			bybl =*(LPBYTE)(dwecx + dweax);
			dwecx += dweax;
			bybl += 0xE3;
			*(LPBYTE)(dwecx + 0x00)=bybl;

			dwecx = dwesi + 0x04;
			bybl =*(LPBYTE)(dwecx + dweax);
			dwecx += dweax;
			bybl += 0x2C;
			*(LPBYTE)(dwecx + 0x00)=bybl;

			dwecx = dwesi + 0x04;
			bybl =*(LPBYTE)(dwecx + dweax);
			dwecx += dweax;
			bybl ^= 0xBE;
			*(LPBYTE)(dwecx + 0x00)=bybl;

			dwecx = dwesi + 0x04;
			bybl =*(LPBYTE)(dwecx + dweax);
			dwecx += dweax;
			bybl ^= 0x0F;
			*(LPBYTE)(dwecx + 0x00)=bybl;

			dwecx = dwesi + 0x04;
			bybl =*(LPBYTE)(dwecx + dweax);
			dwecx += dweax;
			bybl += 0x54;
			*(LPBYTE)(dwecx + 0x00)=bybl;

			dwecx = dwesi + 0x04;
			bybl =*(LPBYTE)(dwecx + dweax);
			dwecx += dweax;
			bybl += 0xDF;
			*(LPBYTE)(dwecx + 0x00)=bybl;

			dwecx = dwesi + 0x04;
			bybl =*(LPBYTE)(dwecx + dweax);
			dwecx += dweax;
			bybl += 0x12;
			*(LPBYTE)(dwecx + 0x00)=bybl;

			dwecx = dwesi + 0x04;
			bybl =*(LPBYTE)(dwecx + dweax);
			dwecx += dweax;
			bybl ++;
			*(LPBYTE)(dwecx + 0x00)=bybl;

			dwecx = dwesi + 0x04;
			bybl =*(LPBYTE)(dwecx + dweax);
			dwecx += dweax;
			bybl += 0xCA;
			*(LPBYTE)(dwecx + 0x00)=bybl;

			dwecx = dwesi + 0x04;
			bybl =*(LPBYTE)(dwecx + dweax);
			dwecx += dweax;
			bybl += 0x13;
			*(LPBYTE)(dwecx + 0x00)=bybl;

			dwecx = dwesi + 0x04;
			bybl =*(LPBYTE)(dwecx + dweax);
			dwecx += dweax;
			bybl ^= 0xEB;
			*(LPBYTE)(dwecx + 0x00)=bybl;

			dwecx = dwesi + 0x04;
			bybl =*(LPBYTE)(dwecx + dweax);
			dwecx += dweax;
			bybl += 0xBA;
			*(LPBYTE)(dwecx + 0x00)=bybl;

			dwecx = dwesi + 0x04;
			bybl =*(LPBYTE)(dwecx + dweax);
			dwecx += dweax;
			bybl += 0xAF;
			*(LPBYTE)(dwecx + 0x00)=bybl;

			dwecx = dwesi + 0x04;
			bybl =*(LPBYTE)(dwecx + dweax);
			dwecx += dweax;
			bybl += 0xFC;
			*(LPBYTE)(dwecx + 0x00)=bybl;

			dwecx = dwesi + 0x04;
			bybl =*(LPBYTE)(dwecx + dweax);
			dwecx += dweax;
			bybl += 0xCD;
			*(LPBYTE)(dwecx + 0x00)=bybl;

			dwecx = dwesi + 0x04;
			bybl =*(LPBYTE)(dwecx + dweax);
			dwecx += dweax;
			bybl += 0x24;
			*(LPBYTE)(dwecx + 0x00)=bybl;

			dwecx = dwesi + 0x04;
			bybl =*(LPBYTE)(dwecx + dweax);
			dwecx += dweax;
			bybl ^= 0xA3;
			*(LPBYTE)(dwecx + 0x00)=bybl;

			dwecx = dwesi + 0x04;
			bybl =*(LPBYTE)(dwecx + dweax);
			dwecx += dweax;
			bybl ^= 0x9A;
			*(LPBYTE)(dwecx + 0x00)=bybl;

			dwecx = dwesi + 0x04;
			bybl =*(LPBYTE)(dwecx + dweax);
			dwecx += dweax;
			bybl ^= 0x8A;
			*(LPBYTE)(dwecx + 0x00)=bybl;

			dwecx = dwesi + 0x04;
			bybl =*(LPBYTE)(dwecx + dweax);
			dwecx += dweax;
			bybl += 0x0E;
			*(LPBYTE)(dwecx + 0x00)=bybl;

			dwedi = dwesi + 0x04;
			bycl =*(LPBYTE)(dwedi + dweax);

			dweax++;
		}while(dweax < (DWORD)iebp);
	}

	return dweax +0x04;

}

int		oldXiahDecProc(void   *pbuf,BYTE	key)
{
	LPBYTE	pbyte=(LPBYTE)pbuf;

	DWORD	dwesi = (DWORD)pbyte;
	DWORD	dwedi =  dwesi;

	BYTE	byal	=	*(LPBYTE)dwedi;
	BYTE	bybl    =   key;

	WORD	wdcx   = *(LPWORD)(dwedi +0x02);
	wdcx += 0x04;

	BYTE	bydl=byal;
	bydl -=(BYTE)wdcx;
	bydl -=bybl;

	*(LPBYTE)dwedi = bydl;

	dwedi =  dwesi;
	bydl =*(LPBYTE)(dwedi +0x01);
	bybl = bydl;
	bybl -= (BYTE)wdcx;
	bybl -= byal;

	byal =key;
	int	iebp = (int)wdcx;
	bybl -= byal;
	iebp -= 0x04;
	
	DWORD	dwesp14=wdcx;
	*(LPBYTE)(dwedi+0x01) = bybl;

	BYTE	byesp13=bydl;

	DWORD	dweax=0;
	if(iebp > 0)
	{
		do{
		DWORD	dwecx = dwesi + 0x04;
		bydl =*(LPBYTE)(dwecx + dweax);
		dwecx += dweax;
		bybl = bydl;
		bybl -= 0x0E;
		*(LPBYTE)(dwecx + 0x00)=bybl;

		dwecx = dwesi + 0x04;
		bybl =*(LPBYTE)(dwecx+dweax);
		dwecx +=dweax;
		bybl ^= 0x8A;
		*(LPBYTE)(dwecx + 0x00)=bybl;

		dwecx = dwesi + 0x04;
		bybl =*(LPBYTE)(dwecx+dweax);
		dwecx +=dweax;
		bybl ^= 0x9A;
		*(LPBYTE)(dwecx + 0x00)=bybl;

		dwecx = dwesi + 0x04;
		bybl =*(LPBYTE)(dwecx+dweax);
		dwecx +=dweax;
		bybl ^= 0xA3;
		*(LPBYTE)(dwecx + 0x00)=bybl;

		dwecx = dwesi + 0x04;
		bybl =*(LPBYTE)(dwecx+dweax);
		dwecx += dweax;
		bybl += 0xDC;
		*(LPBYTE)(dwecx + 0x00)=bybl;

		dwecx = dwesi + 0x04;
		bybl =*(LPBYTE)(dwecx+dweax);
		dwecx += dweax;
		bybl += 0x33;
		*(LPBYTE)(dwecx + 0x00)=bybl;

		dwecx = dwesi + 0x04;
		bybl =*(LPBYTE)(dwecx+dweax);
		dwecx += dweax;
		bybl += 0x04;
		*(LPBYTE)(dwecx + 0x00)=bybl;

		dwecx = dwesi + 0x04;
		bybl =*(LPBYTE)(dwecx+dweax);
		dwecx += dweax;
		bybl += 0x51;
		*(LPBYTE)(dwecx + 0x00)=bybl;

		dwecx = dwesi + 0x04;
		bybl =*(LPBYTE)(dwecx+dweax);
		dwecx += dweax;
		bybl += 0x46;
		*(LPBYTE)(dwecx + 0x00)=bybl;

		dwecx = dwesi + 0x04;
		bybl =*(LPBYTE)(dwecx+dweax);
		dwecx +=dweax;
		bybl ^= 0xEB;
		*(LPBYTE)(dwecx + 0x00)=bybl;

		dwecx = dwesi + 0x04;
		bybl =*(LPBYTE)(dwecx+dweax);
		dwecx += dweax;
		bybl += 0xED;
		*(LPBYTE)(dwecx + 0x00)=bybl;

		dwecx = dwesi + 0x04;
		bybl =*(LPBYTE)(dwecx+dweax);
		dwecx += dweax;
		bybl += 0x36;
		*(LPBYTE)(dwecx + 0x00)=bybl;

		dwecx = dwesi + 0x04;
		bybl =*(LPBYTE)(dwecx+dweax);
		dwecx += dweax;
		bybl --;
		*(LPBYTE)(dwecx + 0x00)=bybl;

		dwecx = dwesi + 0x04;
		bybl =*(LPBYTE)(dwecx+dweax);
		dwecx += dweax;
		bybl += 0xEE;
		*(LPBYTE)(dwecx + 0x00)=bybl;

		dwecx = dwesi + 0x04;
		bybl =*(LPBYTE)(dwecx+dweax);
		dwecx += dweax;
		bybl += 0x21;
		*(LPBYTE)(dwecx + 0x00)=bybl;

		dwecx = dwesi + 0x04;
		bybl =*(LPBYTE)(dwecx+dweax);
		dwecx += dweax;
		bybl += 0xAC;
		*(LPBYTE)(dwecx + 0x00)=bybl;

		dwecx = dwesi + 0x04;
		bybl =*(LPBYTE)(dwecx+dweax);
		dwecx +=dweax;
		bybl ^= 0x0F;
		*(LPBYTE)(dwecx + 0x00)=bybl;

		dwecx = dwesi + 0x04;
		bybl =*(LPBYTE)(dwecx+dweax);
		dwecx +=dweax;
		bybl ^= 0xBE;
		*(LPBYTE)(dwecx + 0x00)=bybl;

		dwecx = dwesi + 0x04;
		bybl =*(LPBYTE)(dwecx+dweax);
		dwecx += dweax;
		bybl += 0xD4;
		*(LPBYTE)(dwecx + 0x00)=bybl;

		dwecx = dwesi + 0x04;
		bybl =*(LPBYTE)(dwecx+dweax);
		dwecx += dweax;
		bybl += 0x1D;
		*(LPBYTE)(dwecx + 0x00)=bybl;

		dwecx = dwesi + 0x04;
		bybl =*(LPBYTE)(dwecx+dweax);
		dwecx += dweax;
		bybl += 0xCC;
		*(LPBYTE)(dwecx + 0x00)=bybl;

		dwecx = dwesi + 0x04;
		bybl =*(LPBYTE)(dwecx+dweax);
		dwecx +=dweax;
		bybl ^= 0xBB;
		*(LPBYTE)(dwecx + 0x00)=bybl;

		dwecx = dwesi + 0x04;
		bybl =*(LPBYTE)(dwecx+dweax);
		dwecx += dweax;
		bybl += 0x56;
		*(LPBYTE)(dwecx + 0x00)=bybl;

		bybl =byesp13;
		dwecx = dwesi + 0x04;
		dwedi = dweax +dwecx;
		dwecx = dwesp14;
		dwecx += bybl;
		dwecx += key;
		bybl = *(LPBYTE)dwedi;
		bybl -= (BYTE)dwecx;
		dweax++;
		*(LPBYTE)dwedi = bybl;
		byesp13 =bydl;
		}while(dweax < (DWORD)iebp);
	}
	return dweax + 0x04;
}


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 236
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
XiahEncDecProc.h

这个的代码呢?

嘿嘿
2010-3-10 19:26
0
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
要仔细研究一下的呢
2010-3-10 19:40
0
游客
登录 | 注册 方可回帖
返回
//