一,纯肉眼跟踪法 先用CE 搜索一下是谁在改写当前的血量 00456448 |. 8996 5C020000 MOV DWORD PTR DS:[ESI+25C],EDX Dd esi+25c 向上找到头 004563A5 |. 8BF1 MOV ESI,ECX//ecx+25c Dd ecx+25c 在头部 F2 下断,看返回地址 0057B924 . 8BC8 MOV ECX,EAX Dd eax+25c 0057B903 |. 8B40 24 MOV EAX,DWORD PTR DS:[EAX+24] Dd [eax+24]+25c 0057B900 /$ 8B41 08 MOV EAX,DWORD PTR DS:[ECX+8] Dd [[ecx+8]+24]+25c 在上面的头部下断, 005747AF |. /EB 0D |JMP SHORT elementc.005747BE //返回在这里 005747A1 |. 8B4C85 1C |MOV ECX,DWORD PTR SS:[EBP+EAX*4+1C] Dd [[[EBP+EAX*4+1C]+8]+24]+25c …… 假设 EAX=0 Dd [[[EBP+1C]+8]+24]+25c 找到头部 0057473C |. 8B68 08 MOV EBP,DWORD PTR DS:[EAX+8] Dd [[[[eax+8]+1C]+8]+24]+25c 00574736 |. 8BD9 MOV EBX,ECX Dd [[[[[ecx+4]+8]+1C]+8]+24]+25c 004395D2 |> \8B4D 5C MOV ECX,DWORD PTR SS:[EBP+5C] Dd [[[[[[ebp+5c]+4]+8]+1C]+8]+24]+25c 找到头部 004394A4 |. 8BE9 MOV EBP,ECX Dd [[[[[[ecx+5c]+4]+8]+1C]+8]+24]+25c 向上找 00438B82 |. 8BCD MOV ECX,EBP ; |Dd [[[[[[EBP+5c]+4]+8]+1C]+8]+24]+25c 往上找……很长,在头部 00438145 |. 8BE9 MOV EBP,ECX Dd [[[[[[ecx+5c]+4]+8]+1C]+8]+24]+25c 返到上一级 0042C8AC |. 8B4D 1C MOV ECX,DWORD PTR SS:[EBP+1C] Dd [[[[[[[ebp+1c]+5c]+4]+8]+1C]+8]+24]+25c 走到头部 0042C7BB |. 8BE9 MOV EBP,ECX Dd [[[[[[[ecx+1c]+5c]+4]+8]+1C]+8]+24]+25c 最后在 0042C6B9 |. 8BCF |MOV ECX,EDI Dd [[[[[[[edi+1c]+5c]+4]+8]+1C]+8]+24]+25c 看了一下 EDI 的值,是 009811A0 这个就是基址, Dd [[[[[[[009811A0+1c]+5c]+4]+8]+1C]+8]+24]+25c 根据 XHY30 同学们找的基址来对比 dd [[[[[009811A0+1c]+8]+1c]+8]+24]+25c 二,CE/OD 配合查找法 1,先在CE 里搜索到血值 下断 HW 081423FC 00456448 |. 8996 5C020000 MOV DWORD PTR DS:[ESI+25C],EDX ; 写入血值 Dd esi+25c Dd esi+25c 004563A5 |. 8BF1 MOV ESI,ECX Dd ecx+25c 找到头部下断向上找 0057B924 . 8BC8 MOV ECX,EAX ; Dd eax+25c 因为再向上找会找到数组和循环,所以老师在这里...