MT4客户端通讯分析(一)——登录部分分析

免责声明:本文仅内容作为学习交流使用,不可用于任何商业途径
MT4客户端225通讯协议分析。

通过对send下断,找到第一个发送的数据包,即登录内容,通过调用栈往上找到关键的函数调用,登录函数接收以下4个参数
(1) 用户ID(int) (2) 密码(pchar) (3) 0 (4) 0
相关代码如下

_text:00434AD0                 sub     esp, 0A8h
_text:00434AD6                 push    ebx
_text:00434AD7                 push    ebp
_text:00434AD8                 push    esi
_text:00434AD9                 mov     esi, ecx
_text:00434ADB                 push    edi
_text:00434ADC                 xor     ebx, ebx
_text:00434ADE                 mov     ecx, 6
_text:00434AE3                 xor     eax, eax
_text:00434AE5                 lea     edi, [esp+0B8h+var_A7] ; 指向Buf的第二字节
_text:00434AE9                 mov     [esp+0B8h+buf], bl ; Buf的第一字节赋0
_text:00434AED                 rep stosd
_text:00434AEF                 mov     ebp, [esp+0B8h+arg_4] ; 参数密码
_text:00434AF6                 stosw
_text:00434AF8                 cmp     ebp, ebx
_text:00434AFA                 stosb
_text:00434AFB                 jz      loc_0_434CFA    ; 密码为空则退出
_text:00434B01                 cmp     dword ptr [esp+0B8h+ArgList], 1 ; 用户ID为1则退出
                    (1是MT4的默认管理员, 不能用于客户端登录)
_text:00434B09                 jl      loc_0_434CFA
_text:00434B0F                 mov     edi, ebp        ; 计算密码的长度存于ECX
_text:00434B11                 or      ecx, 0FFFFFFFFh
_text:00434B14                 xor     eax, eax
_text:00434B16                 repne scasb
_text:00434B18                 not     ecx
_text:00434B1A                 dec     ecx
_text:00434B1B                 cmp     ecx, 1          ; 密码最小长度1
_text:00434B1E                 jb      loc_0_434CFA
_text:00434B24                 cmp     dword ptr [esi+4], 0FFFFFFFFh
_text:00434B28                 jnz     short loc_0_434B3C ; ECX=271BBDC 一个空的Buffer
_text:00434B2A                 pop     edi
_text:00434B2B                 pop     esi
_text:00434B2C                 pop     ebp
_text:00434B2D                 mov     eax, 6
_text:00434B32                 pop     ebx
_text:00434B33                 add     esp, 0A8h
_text:00434B39                 retn    10h
_text:00434B3C ; ---------------------------------------------------------------------------
_text:00434B3C
_text:00434B3C loc_0_434B3C:                           ; CODE XREF: UserLogin+58j
_text:00434B3C                 lea     ecx, [esp+0B8h+var_6C] ; ECX=271BBDC 一个空的Buffer
_text:00434B40                 call    sub_0_433A10    ; SetMagicBufferTo ECX
_text:00434B45                 mov     edi, ebp        ; EDI = PSW
_text:00434B47                 or      ecx, 0FFFFFFFFh ; EXC = LEN(PSW)
_text:00434B4A                 xor     eax, eax
_text:00434B4C                 repne scasb
_text:00434B4E                 not     ecx
_text:00434B50                 dec     ecx
_text:00434B51                 push    ecx
_text:00434B52                 push    ebp
_text:00434B53         
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值