首页
社区
课程
招聘
[原创]某游戏登陆前对密文的一次加密
发表于: 2014-12-25 10:21 5177

[原创]某游戏登陆前对密文的一次加密

2014-12-25 10:21
5177

10006510    8B5424 08       MOV EDX,DWORD PTR SS:[ESP+8]
10006514    56              PUSH ESI                                                     ; 027B05B0入栈
10006515    33F6            XOR ESI,ESI
10006517    85D2            TEST EDX,EDX
10006519    7E 53           JLE SHORT Net.1000656E                                       ; 验证包大小
1000651B    53              PUSH EBX
1000651C    55              PUSH EBP
1000651D    57              PUSH EDI
1000651E    8B7C24 14       MOV EDI,DWORD PTR SS:[ESP+14]                                ; 带加密的文本的地址交给 edi
10006522    8D6E 01         LEA EBP,DWORD PTR DS:[ESI+1]                                 ; ebp+1
10006525    8B41 04         MOV EAX,DWORD PTR DS:[ECX+4]                                 ; 读取出当前加密次数
10006528    0FB64401 0C     MOVZX EAX,BYTE PTR DS:[ECX+EAX+C]                            ; 这里是以ECX为表头 EAX为表指针 +C来取出BYTE拓展为DWORD传递给EAX
1000652D    30043E          XOR BYTE PTR DS:[ESI+EDI],AL                                 ; 这里异或明文首地址+次数处的一个字节,AL(次数)
10006530    8A043E          MOV AL,BYTE PTR DS:[ESI+EDI]                                 ; 取出异或一次的密文
10006533    8B59 08         MOV EBX,DWORD PTR DS:[ECX+8]                                 ; 这里也是加密次数
10006536    8A9C0B 0C010000 MOV BL,BYTE PTR DS:[EBX+ECX+10C]                             ; 取出表+EBX(次数)+10c处的密文 给BL
1000653D    32D8            XOR BL,AL                                                    ; 第二次异或
1000653F    881C3E          MOV BYTE PTR DS:[ESI+EDI],BL                                 ; 结果再次传递给加密处结果
10006542    0169 04         ADD DWORD PTR DS:[ECX+4],EBP                                 ; 增加次数 ebp为1
10006545    B8 00010000     MOV EAX,100
1000654A    3941 04         CMP DWORD PTR DS:[ECX+4],EAX                                 ; 比较当前次数是否为100 后面40字节可能另外有处理
1000654D    7C 07           JL SHORT Net.10006556
1000654F    C741 04 0000000>MOV DWORD PTR DS:[ECX+4],0                                   ; 传递0到第一个加密次数
10006556    0169 08         ADD DWORD PTR DS:[ECX+8],EBP                                 ; 叠加一到第二个加密次数
10006559    3941 08         CMP DWORD PTR DS:[ECX+8],EAX
1000655C    7C 07           JL SHORT Net.10006565
1000655E    C741 08 0000000>MOV DWORD PTR DS:[ECX+8],0                                   ; 如果不是小于就清空第二次加密次数为0
10006565    03F5            ADD ESI,EBP                                                  ; 增加寄存器加密次数1
10006567    3BF2            CMP ESI,EDX                                                  ; 比较包大小 1,0000008C 看来要按照上面准备一张表来循环加密了
10006569  ^ 7C BA           JL SHORT Net.10006525                                        ; 加密140次  140个字节一次加密
1000656B    5F              POP EDI
1000656C    5D              POP EBP
1000656D    5B              POP EBX
1000656E    5E              POP ESI
1000656F    C2 0800         RETN 8

登陆协议 第一个字节8C(140)数据包大小 00 01 00 账号(经过处理)以00结尾
在后面 密码的MD5值以00结尾
在后面就是一串08-d8-33-47-b5-d8以0结尾 在后面就是固定的f0 d5 3e
0013FA10
06AA9018疑似表
005181bb 处理账号前的CALL
C42AD527
073B0C28
0013EFD0这里还是没加密的内容这里应该是把字符串处理后然后在拷贝到1003Ae28  在执行加密
1003Ae28  加密此内容发送

密码是MD5加密
08-d8-33-47-b5-d8
74 75 76 77 78
61 62 63 64 65

0013DE44

1003Ae28

0004fd1c

加密后的密文样本

AC 9A BD 26 54 97 12 51 38 BA AC B6 80 F2 A4 56 20 DA 1C 46 60 82 64 C6 00 7A EC B6 C0 B2 64 56
E0 5A FC A6 D8 50 13 C5 23 D8 5C D3 65 13 5C F7 D7 2A 2A E5 14 A1 17 32 E1 CB 1A 0E 79 03 C2 2E
14 7F 8B C4 20 E2 E4 A6 F0 02 81 72 B8 DF 97 65 0D EE 2B 6B A2 37 C9 82 42 7A 6C 36 40 32 E4 56
60 5A 7C 26 60 62 24 26 C0 3A EC 36 00 72 E4 16 60 9A 1C 06 20 C2 24 86 80 FA 2C B6 C0 B2 A4 96
20 9A BC 26 20 E2 64 26 B0 6F 92 B6

表样本
E0 0B 03 10 00 00 00 00 00 00 00 00 1F CA 29 AC 03 1E 2D A0 27 B2 71 D4 8B 86 F5 48 2F 9A B9 FC
13 EE BD F0 37 82 01 24 9B 56 85 98 3F 6A 49 4C 23 BE 4D 40 47 52 91 74 AB 26 15 E8 4F 3A D9 9C
33 8E DD 90 57 22 21 C4 BB F6 A5 38 5F 0A 69 EC 43 5E 6D E0 67 F2 B1 14 CB C6 35 88 6F DA F9 3C
53 2E FD 30 77 C2 41 64 DB 96 C5 D8 7F AA 89 8C 63 FE 8D 80 87 92 D1 B4 EB 66 55 28 8F 7A 19 DC
73 CE 1D D0 97 62 61 04 FB 36 E5 78 9F 4A A9 2C 83 9E AD 20 A7 32 F1 54 0B 06 75 C8 AF 1A 39 7C
93 6E 3D 70 B7 02 81 A4 1B D6 05 18 BF EA C9 CC A3 3E CD C0 C7 D2 11 F4 2B A6 95 68 CF BA 59 1C
B3 0E 5D 10 D7 A2 A1 44 3B 76 25 B8 DF 8A E9 6C C3 DE ED 60 E7 72 31 94 4B 46 B5 08 EF 5A 79 BC
D3 AE 7D B0 F7 42 C1 E4 5B 16 45 58 FF 2A 09 0C E3 7E 0D 00 07 12 51 34 6B E6 D5 A8 0F FA 99 5C
F3 4E 9D 50 17 E2 E1 84 7B B6 65 F8 3F 50 95 8A 23 FC 49 86 67 08 DD 62 0B 74 51 1E 0F 40 A5 BA
73 6C D9 36 37 F8 ED 92 5B E4 E1 CE DF 30 B5 EA C3 DC 69 E6 07 E8 FD C2 AB 54 71 7E AF 20 C5 1A
13 4C F9 96 D7 D8 0D F2 FB C4 01 2E 7F 10 D5 4A 63 BC 89 46 A7 C8 1D 22 4B 34 91 DE 4F 00 E5 7A
B3 2C 19 F6 77 B8 2D 52 9B A4 21 8E 1F F0 F5 AA 03 9C A9 A6 47 A8 3D 82 EB 14 B1 3E EF E0 05 DA
53 0C 39 56 17 98 4D B2 3B 84 41 EE BF D0 15 0A A3 7C C9 06 E7 88 5D E2 8B F4 D1 9E 8F C0 25 3A
F3 EC 59 B6 B7 78 6D 12 DB 64 61 4E 5F B0 35 6A 43 5C E9 66 87 68 7D 42 2B D4 F1 FE 2F A0 45 9A
93 CC 79 16 57 58 8D 72 7B 44 81 AE FF 90 55 CA E3 3C 09 C6 27 48 9D A2 CB B4 11 5E CF 80 65 FA
33 AC 99 76 F7 38 AD D2 1B 24 A1 0E 9F 70 75 2A 83 1C 29 26 C7 28 BD 02 6B 94 31 BE 6F 60 85 5A
D3 8C B9 D6 97 18 CD 32 BB 04 C1 6E 00 00 00 00 F4 C5 D3 F7 47 0D 00 00 F0 41 77 02 C0 00 77 02
B2 C5 D2 B0 06 0D 00 0C 9C 2A 00 00 FF FF FF FF


[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 3
支持
分享
最新回复 (3)
雪    币: 719
活跃值: (777)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
2
时间匆忙 注释难免有些混乱 大神不要笑话。。。。
2014-12-25 10:23
0
雪    币: 719
活跃值: (777)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
3
密码是这种d57f21e6a273781dbf8b7657940f3b03:简单MD5加密一下
2014-12-25 11:53
0
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
很不错,向楼主学习。
2014-12-25 14:00
0
游客
登录 | 注册 方可回帖
返回