继续上次研究,先整理一下上次的研究,英雄最多有八颗星的血量,分别用0x5 0x19 0x2d 0x41 0x55 0x69 0x7d 0x91表示,比如如果英雄有8颗星的时候就顺序发送0x5 0x19 0x2d 0x41 0x55 0x69 0x7d 0x91这8个参数,有6颗星的时候就顺序发送0x5 0x19 0x2d 0x41 0x55 0x69这三个参数
当有八颗星时,其实是来自5.0/0.625 当有七颗星时,其实是来自4.375/0.625,依次类推
上面的5.0 ,4.375等来自[ebp-0x18]=[[[esi+8]+0x18]+0xf4],那么下边就分析一下这个是怎么来的
.text:0048C4B4 ; DATA XREF: hero_blood_1+36o
.text:0048C4B4 mov ecx, [esi+8]
.text:0048C4B7 ; 25: v4 = *(_DWORD *)(v3 + 24);
.text:0048C4B7 mov eax, [ecx+18h]
.text:0048C4BA ; 26: v5 = *(float *)(v4 + 240);
.text:0048C4BA mov edx, [eax+0F0h]
.text:0048C4C0 ; 27: v6 = *(float *)(v4 + 244);
.text:0048C4C0 mov eax, [eax+0F4h]
.text:0048C4C6 mov [ebp+var_20], edx
.text:0048C4C9 mov [ebp+var_18], eax ; biggest is 5.000