evaeva 10 發表於 February 21, 2005 檢舉 Share 發表於 February 21, 2005 不知道发到什么地方合适因为研究区说大陆和台湾的用语不同暂时发到这里经过多次的重起终于找到了加密的地方。准备IDA Pro,softIce等工具先说一下原理s-->c 接收的第一个封包 00 id ver rsa-key 1 4 4 128 它采用的是rsa-1024算法是1024位不是128位的。c-->s 发送的第一个封包blowfish-encrypted-msg 144BlowFish用新的keykey = "_;5.]94-31==-%xT!^[$\000"解开后封包结构如下 00 rsa-encrypted-msg align checksum 1 128 7 8其中rsa-encrypted-msg就是对用户名和密码做的rsa-1024加密。加密函数在l2.exe里用IDA反汇编后找rsapub函数Blowfish的加解密函数放到了core.dll 里了而network.dll已经被废弃了它里面的一些函数被放到Engine.dl里了我曾经在network.dll里苦苦搜索N天彻夜不眠后来有一天突然发现l2.exe根本就没用到它差点没把我气晕差点就不想再搞它了一句话TMD太累了 [s:11] 。现在大陆版的就是这样一个框架LoginServer的版本号是409160x00009fd4,GameSever的版本号是4200x000001a4。经过测试LoginServer可以正常登录。登录时你会发现LoginServer发过来的封包都是明文的。但客户端发送的封包还是需要经过BlowFish加密的用的是新key。新key是这样找到的 用IDA Pro打开Engine.dll文件找到输入函数FBlowFish::InitializeBlowFish引用的地方有两个0x103E1719,0x103E189E,key就在他们前面一行103E1707: cmp eax , 9FD4h ;比较版本号 40916103E170C: push 15h ;key的长度压入栈103E170E: jge loc_103E1899 ;版本大于等于40916就跳转103E1714: push offset a_9431@ ; "[;'.]94-31==-%&@!^+]" 〈==旧key*****103E1719: call ds:?InitializeBlowfish@FBlowFish@@QAEFQAEF@Z ; FBlowFish::InitializeBlowfish(uchar * const,short) ...103E1899 loc_103E1899: ; CODE XREF: 103E170Ej103E1899 push offset a_5_9431Xt ; "_;5.]94-31==-%xT!^[$" 〈==新key****103E189E call ds:?InitializeBlowfish@FBlowFish@@QAEFQAEF@Z ; FBlowFish::InitializeBlowfish(uchar * const,short)想自己跟踪的需要作如下几步1生成L2.exeEngine.dllCore.dll的nsm文件并在SoftIce Loader 里加载进去。2先启动SoftIce再启动L2.exe并在登录窗口停下来输入好用户名和密码。3呼出SoftIce对rsapubsendFBlowFish::BloeFishEncrypt下断点也可以只 设rsapub一个断点。4回到L2.exe程序的登录窗口点击登录就可以跟进去了 鏈接文章 分享到其他網站
Recommended Posts
請登入後來留意見
在登入之後,您才能留意見
立即登入