|
人物辅助状态的查找一直都没有好的思路。前面看了大家写得一些帖子,数据的结构大致是了解了,但是如何查找的思路还是不大清楚。恳请大家指点!!!
发个走路CALL的查找过程,供大家参考:
走路CALL
1、从00914B00 B8 D4100000 mov eax,0x10D4 封包函数 开始下断,走路就断,一直到这:
00ADE3C2 8947 44 mov dword ptr ds:[edi+0x44],eax
00ADE3C5 0FB755 00 movzx edx,word ptr ss:[ebp]
00ADE3C9 66:8957 0C mov word ptr ds:[edi+0xC],dx
00ADE3CD 8B0B mov ecx,dword ptr ds:[ebx]
00ADE3CF 894F 10 mov dword ptr ds:[edi+0x10],ecx
00ADE3D2 8B53 04 mov edx,dword ptr ds:[ebx+0x4]
00ADE3D5 8957 14 mov dword ptr ds:[edi+0x14],edx
00ADE3D8 8B4B 08 mov ecx,dword ptr ds:[ebx+0x8]
00ADE3DB 894F 18 mov dword ptr ds:[edi+0x18],ecx
00ADE3DE 50 push eax
00ADE3DF 8BCF mov ecx,edi
00ADE3E1 C647 1C 01 mov byte ptr ds:[edi+0x1C],0x1
00ADE3E5 8947 20 mov dword ptr ds:[edi+0x20],eax
00ADE3E8 E8 03FCFFFF call sro_clie.00ADDFF0
分析可知[EDI+C]为地图值,[EDI+10]为横坐标值,[EDI+14]为高值,[EDI+18]为纵坐标值
往上查找EDI的由来
2、发现附近有基址[1256e34]
对比分析数据发现[1256e34]的值和EDI相差694
最后得出:edi=[1256e34]+694
3、编程可知。只要往edi+10,加14,+18的地址写入数据就可以走路了,其它的CALL没有必要调用。验证通过 |
|