天堂1 2.20c 台版
ida 4.17轉成的碼 配上S-ICE 找的
只有s-ice才不會被當掉
這是 把封包解密
.text:00478B80 decode proc near ; CODE XREF: sub_0_46AD00+80 p
.text:00478B80 mov al, [ecx+3]
.text:00478B83 push ebx
.text:00478B84 mov bl, byte ptr dword_0_6AF514+2
.text:00478B8A push esi
.text:00478B8B push edi
.text:00478B8C mov edi, edx
.text:00478B8E mov dl, al
.text:00478B90 mov esi, 1
.text:00478B95 xor dl, bl
.text:00478B97 mov [ecx+3], dl
.text:00478B9A mov dl, [ecx+2]
.text:00478B9D mov bl, dl
.text:00478B9F xor bl, byte ptr dword_0_6AF514+3
.text:00478BA5 xor bl, al
.text:00478BA7 mov [ecx+2], bl
.text:00478BAA mov bl, [ecx+1]
.text:00478BAD mov al, bl
.text:00478BAF xor al, byte ptr dword_0_6AF518
.text:00478BB5 xor al, dl
.text:00478BB7 mov [ecx+1], al
.text:00478BBA mov al, [ecx]
.text:00478BBC xor al, byte ptr dword_0_6AF518+1
.text:00478BC2 xor al, bl
.text:00478BC4 mov [ecx], al
.text:00478BC6 mov bl, byte ptr dword_0_6AF514
.text:00478BCC mov dl, al
.text:00478BCE xor al, bl
.text:00478BD0 cmp edi, esi
.text:00478BD2 mov [ecx], al
.text:00478BD4 jle short loc_0_478BF2
.text:00478BD6
.text:00478BD6 loc_0_478BD6: ; CODE XREF: decode+70 j
.text:00478BD6 mov al, [esi+ecx]
.text:00478BD9 mov ebx, esi
.text:00478BDB and ebx, 7
.text:00478BDE mov bl, byte ptr dword_0_6AF514[ebx]
.text:00478BE4 xor bl, al
.text:00478BE6 xor bl, dl
.text:00478BE8 mov dl, al
.text:00478BEA mov [esi+ecx], bl
.text:00478BED inc esi
.text:00478BEE cmp esi, edi
.text:00478BF0 jl short loc_0_478BD6
.text:00478BF2
.text:00478BF2 loc_0_478BF2: ; CODE XREF: decode+54 j
.text:00478BF2 pop edi
.text:00478BF3 pop esi
.text:00478BF4 pop ebx
.text:00478BF5 retn
.text:00478BF5 decode endp
.text:00478BF5
.text:00478BF5 ; 闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡?
.text:00478BF6 align 10h
.text:00478C00
.text:00478C00 ; 詗詗詗詗詗詗詗?S U B R O U T I N E 詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗詗?
.text:00478C00
.text:00478C00
這是把封包 邊密
.text:00478C00 encode proc near ; CODE XREF: SendAndEncode+40 p
.text:00478C00 mov al, byte ptr dword_0_6AF51C
.text:00478C05 push ebx
.text:00478C06 mov bl, [ecx]
.text:00478C08 push esi
.text:00478C09 xor bl, al
.text:00478C0B mov esi, edx
.text:00478C0D mov eax, 1
.text:00478C12 mov [ecx], bl
.text:00478C14 cmp esi, eax
.text:00478C16 jle short loc_0_478C34
.text:00478C18
.text:00478C18 loc_0_478C18: ; CODE XREF: encode+32 j
.text:00478C18 mov bl, [eax+ecx-1]
.text:00478C1C mov edx, eax
.text:00478C1E and edx, 7
.text:00478C21 xor bl, byte ptr dword_0_6AF51C[edx]
.text:00478C27 mov dl, [eax+ecx]
.text:00478C2A xor dl, bl
.text:00478C2C mov [eax+ecx], dl
.text:00478C2F inc eax
.text:00478C30 cmp eax, esi
.text:00478C32 jl short loc_0_478C18
.text:00478C34
.text:00478C34 loc_0_478C34: ; CODE XREF: encode+16 j
.text:00478C34 mov al, byte ptr dword_0_6AF51C+2
.text:00478C39 mov bl, [ecx+3]
.text:00478C3C mov dl, [ecx+2]
.text:00478C3F xor bl, al
.text:00478C41 mov al, bl
.text:00478C43 mov [ecx+3], bl
.text:00478C46 mov bl, byte ptr dword_0_6AF51C+3
.text:00478C4C xor dl, al
.text:00478C4E mov al, [ecx+1]
.text:00478C51 xor dl, bl
.text:00478C53 mov bl, [ecx]
.text:00478C55 mov [ecx+2], dl
.text:00478C58 xor al, dl
.text:00478C5A mov dl, byte ptr dword_0_6AF520
.text:00478C60 xor al, dl
.text:00478C62 pop esi
.text:00478C63 mov [ecx+1], al
.text:00478C66 mov dl, byte ptr dword_0_6AF520+1
.text:00478C6C xor al, bl
.text:00478C6E pop ebx
.text:00478C6F xor al, dl
.text:00478C71 mov [ecx], al
.text:00478C73 retn
.text:00478C73 encode endp
基本上加密演算法跟天2很像 ,但是填充盒子的碼看不懂
第一個收到的封包很重要
0A 00 29 5E 8B E7 57 69 CC 3C
0a 00
代表封包10 byte 10 - 2 = 8 byte 真正要傳的資料
29
初始化KEY盒子的命令
5E 8B E7 57
初始的KEY值, 還需要一個是客端自己帶的key
69 CC 3C
無用 可能是要符合 blowfish 演算法的填充物
目前還是看不出如何初始化box
0x4666f0 是初始化盒子的進入點