Legend登陆验证说明

客户端  在各种闲置状态 发送

执行QueryDynCode

刚登陆场景就发送CM_QUERYDYNCODE

并加密

cnsIntro 登陆场景
dMsg := MakeDefaultMsg(CM_QUERYDYNCODE, 0, 0, 0, 0);

DCP_mars.InitStr((‘sWebSite’));//加密密码

S := DCP_mars.DecryptString(g_pRcHeader.sWebSite);//sWebSite 用网站地址解密

DCP_mars.InitStr(S);//解密后的地址用作加密密码

S := DCP_mars.EncryptString(S);//加密

SendSocket(EncodeMessage(dMsg) + EncodeString(S)); //发送给登陆网关

Format(‘#1%s!’, [{Code, } sendstr])

登陆网关解密 //DecodeBuf misc单元 其实和edcode单元的一样

nDeCodeLen := DecodeBuf(Addr, Len, nABuf);

解密分析后 再加密2次

Randomize();

nRand := Random(High(Word));//得到一个随机数

g_DCP_mars.InitStr(IntToStr(nRand));//把这个随机数作为加密的Key

g_DCP_mars.Reset;

szKey1 := EncodeString(g_DCP_mars.EncryptString(g_pszDecodeKey^));

g_pszDecodeKey就是网址作为加密密匙 //配置工具写入的

m_wRandKey := Random(High(Word));//再次取得一个随机数

Cmd.ident := SM_QUERYDYNCODE;

Cmd.Recog := g_pLTCrc^;//logintool CRC 长度

Cmd.param := nRand;//这是用于加密和解密的Key,但是需要转成String

Cmd.tag := m_wRandKey;

Cmd.Series := Length(szKey1);

EncodeBuf(Integer(@Cmd), SizeOf(TCmdPack), Integer(@pszBuf[0]));//把Cmd加密,保存到pszBuf中

EncodeBuf(Integer(@g_pszEndeBuffer[0]), g_nEndeBufLen, nBBuf);

szSend := ‘#’ + StrPas(@pszBuf[0]) + szKey1 + StrPas(PChar(nBBuf)) + ‘!’;

返回客户端    m_tIOCPSender.SendData(m_pOverlapSend, @szSend[1], Length(szSend));

客户端全局消息处理函数处理

SM_QUERYDYNCODE

g_bLoginKey^ := False;

Str := Copy(body, 1, msg.series);

Str := DecodeString(Str);

DCP_mars.InitStr(IntToStr(msg.param));

Str := DCP_mars.DecryptString(Str);

DCP_mars.InitStr(”);

Str := DCP_mars.DecryptString(Str);

DCP_mars.InitStr((‘sWebSite’));//解密密码

Str2 := DCP_mars.DecryptString(g_pRcHeader.sWebSite);

if CompareText(Str, Str2) = 0 then begin

g_bLoginKey^ := True;

g_pkeywords := NewStr(”);

g_pkeywords^ := IntToHex(msg.tag, 8);

rdstr := Copy(body, msg.series + 1, Length(body) – msg.series);

edBuf := FEndeBuffer;

FillChar(edBuf^, 16 * 1024, #0);

len := DecodeBuf(Integer(@rdstr[1]), Length(rdstr), Integer(edBuf));

nFuncPos := Integer(@FEndeBuffer);

//asm pushad end;

ptrGetFunc := LPGETDYNCODE(nFuncPos);

cnsSelChr, cnsReSelChr 选择人物场景

dMsg := MakeDefaultMsg(CM_QUERYSELCHARCODE, 0, 0, 0, 0);

SendSocket(EncodeMessage(dMsg));//直接发送给selgate

下载说明:
1.本站资源都是白菜价出售,同样的东西,我们不卖几百,也不卖几十,甚至才卖几块钱,一个永久会员能下载全站100%源码了,所以单独购买也好,会员也好均不提供相关技术服务。
2.如果源码下载地址失效请联系站长QQ进行补发。
3.本站所有资源仅用于学习及研究使用,请必须在24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担。资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您权益请联系本站删除!
4.本站站内提供的所有可下载资源(软件等等)本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发);但本网站不能保证资源的准确性、安全性和完整性,由于源码具有复制性,一经售出,概不退换。用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug;同时本站用户必须明白,【安安资源网】对提供下载的软件等不拥有任何权利(本站原创和特约原创作者除外),其版权归该资源的合法拥有者所有。
5.请您认真阅读上述内容,购买即以为着您同意上述内容,由于源码具有复制性,一经售出,概不退换。
安安资源网 » Legend登陆验证说明