silly 发表于 2010-3-10 17:07

Xiah網絡遊戲的協議加密解密函數~!

今天刪垃圾,看到了發出來,奇俠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;
}

Hmily 发表于 2010-3-10 17:10

感谢婷婷爆料~

明次 发表于 2010-3-10 17:14

好长啊....

marvell 发表于 2010-3-10 17:19

好多好多年前 玩过这个游戏...
页: [1]
查看完整版本: Xiah網絡遊戲的協議加密解密函數~!