-
-
[原创]Xiah網絡遊戲的協議加密解密函數~!
-
发表于:
2010-3-10 17:10
4473
-
記得以前發過了,我沒發現我發那了,今天刪垃圾,看到了發出來,奇俠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期)