【分享】天堂2登录加密方法


Recommended Posts

不知道发到什么地方合适因为研究区说大陆和台湾的用语不同暂时发到这里

经过多次的重起终于找到了加密的地方。准备IDA Pro,softIce等工具

先说一下原理

s-->c 接收的第一个封包

00 id ver rsa-key

1 4 4 128

它采用的是rsa-1024算法是1024位不是128位的。

c-->s 发送的第一个封包

blowfish-encrypted-msg

144

BlowFish用新的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 ;比较版本号 40916

103E170C: 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: 103E170Ej

103E1899 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程序的登录窗口点击登录就可以跟进去了

鏈接文章
分享到其他網站

請登入後來留意見

在登入之後,您才能留意見



立即登入