追逐自己的梦想----------辅助制作第二十四课:寻路call的分析

来源:互联网 发布:plc编程培训机构 编辑:程序博客网 时间:2024/05/16 13:57
分析关键:1.目的地坐标(通过不断改变目的地坐标来找到目的地坐标的地址,然后分析出基址即可)(XYZ , XZY ,XY)//寻路动作0046FC0B - D9 40 E4  - fld dword ptr [eax-1C]0046FC0E - 8B 91 98020000  - mov edx,[ecx+00000298]0046FC14 - D9 9A 34020000  - fstp dword ptr [edx+00000234] <<0046FC1A - 8B 7F 04  - mov edi,[edi+04]0046FC1D - A1 20A4F500 - mov eax,[Client.exe+B5A420]EAX=2EB435B4EBX=448EDF5CECX=1A91D248EDX=1A7C8A08ESI=2E992408EDI=2EBF30C4ESP=00187518EBP=00187550EIP=0046FC1A得到这样的一个地址fstp dword ptr [edx+00000234]0046FBFA  |.  50            PUSH EAX0046FBFB  |.  8BCF          MOV ECX,EDI0046FBFD  |.  E8 7EF7FFFF   CALL Client.0046F3800046FC02  |.  8B47 04       MOV EAX,DWORD PTR DS:[EDI+4]0046FC05  |.  8B0D 20A4F500 MOV ECX,DWORD PTR DS:[F5A420]0046FC0B  |.  D940 E4       FLD DWORD PTR DS:[EAX-1C]0046FC0E  |.  8B91 98020000 MOV EDX,DWORD PTR DS:[ECX+298]0046FC14  |.  D99A 34020000 FSTP DWORD PTR DS:[EDX+234]0046FC1A  |.  8B7F 04       MOV EDI,DWORD PTR DS:[EDI+4]0046FC1D  |.  A1 20A4F500   MOV EAX,DWORD PTR DS:[F5A420]0046FC22  |.  D947 EC       FLD DWORD PTR DS:[EDI-14]0046FC25  |.  8B88 98020000 MOV ECX,DWORD PTR DS:[EAX+298]0046FC2B  |.  D999 38020000 FSTP DWORD PTR DS:[ECX+238]0046FC31  |.  85F6          TEST ESI,ESI0046FC33  |.  74 09         JE SHORT Client.0046FC3E0046FC35  |.  56            PUSH ESI0046FC36  |.  E8 A1324D00   CALL Client.00942EDC得到的人物坐标就是dd [[0xf5a420]+298]+234就是 人物的坐标2.人物角色对象(先找人物基址,然后通过访问了人物基址的代码来逆向找到关键访问代码)006BC9E5 - 83 B8 2C020000 00 - cmp dword ptr [eax+0000022C],00006BC9EC - 0F84 E9080000 - je Client.exe+2BD2DB006BC9F2 - A1 ACBE1D03 - mov eax,[Client.exe+2DDBEAC] <<006BC9F7 - 85 C0  - test eax,eax006BC9F9 - 0F84 88000000 - je Client.exe+2BCA87006B7676 - 83 BE 28030000 00 - cmp dword ptr [esi+00000328],00006B767D - 0F84 37020000 - je Client.exe+2B78BA006B7683 - 8B 0D ACBE1D03  - mov ecx,[Client.exe+2DDBEAC] <<006B7689 - 85 C9  - test ecx,ecx006B768B - 0F84 29020000 - je Client.exe+2B78BA006B7804 - 6A 00 - push 00006B7806 - 89 96 30020000  - mov [esi+00000230],edx006B780C - 8B 0D ACBE1D03  - mov ecx,[Client.exe+2DDBEAC] <<006B7812 - 8B 01  - mov eax,[ecx]006B7814 - 8B 50 04  - mov edx,[eax+04]006B7893 - 0FAF C8  - imul ecx,eax006B7896 - 89 4D 98  - mov [ebp-68],ecx006B7899 - 8B 0D ACBE1D03  - mov ecx,[Client.exe+2DDBEAC] <<006B789F - 8D 45 9C  - lea eax,[ebp-64]006B78A2 - DA 65 98  - fisub [ebp-68]004C86A9 - D9 1D C41EF500  - fstp dword ptr [Client.exe+B51EC4]004C86AF - D9 1D C81EF500  - fstp dword ptr [Client.exe+B51EC8]004C86B5 - 8B 0D ACBE1D03  - mov ecx,[Client.exe+2DDBEAC] <<004C86BB - D9 45 10  - fld dword ptr [ebp+10]004C86BE - 83 B9 88010000 00 - cmp dword ptr [ecx+00000188],0000410C73 - 3B 1D A0BE1D03  - cmp ebx,[Client.exe+2DDBEA0]00410C79 - 0F85 AB000000 - jne Client.exe+10D2A00410C7F - A1 ACBE1D03 - mov eax,[Client.exe+2DDBEAC] <<00410C84 - C6 80 CC1D0000 00 - mov byte ptr [eax+00001DCC],0000410C8B - A1 ACBE1D03 - mov eax,[Client.exe+2DDBEAC]00410C7F - A1 ACBE1D03 - mov eax,[Client.exe+2DDBEAC]00410C84 - C6 80 CC1D0000 00 - mov byte ptr [eax+00001DCC],0000410C8B - A1 ACBE1D03 - mov eax,[Client.exe+2DDBEAC] <<00410C90 - 83 B8 F81C0000 00 - cmp dword ptr [eax+00001CF8],0000410C97 - 0F84 D5030000 - je Client.exe+110723.寻路状态(0,1)006B77D2 - BB 01000000 - mov ebx,00000001006B77D7 - 8B CE  - mov ecx,esi006B77D9 - 88 9E 28020000  - mov [esi+00000228],bl <<006B77DF - E8 7CEEFFFF - call Client.exe+2B6660006B77E4 - 8B 0D F836F300  - mov ecx,[Client.exe+B336F8]006B77B8  |.  83BE C4020000>CMP DWORD PTR DS:[ESI+2C4],0006B77BF  |.  0F84 F3000000 JE Client.006B78B8006B77C5  |.  83BE C8020000>CMP DWORD PTR DS:[ESI+2C8],0006B77CC  |.  0F84 E6000000 JE Client.006B78B8006B77D2  |.  BB 01000000   MOV EBX,1006B77D7  |.  8BCE          MOV ECX,ESI006B77D9  |.  889E 28020000 MOV BYTE PTR DS:[ESI+228],BL006B77DF  |.  E8 7CEEFFFF   CALL Client.006B6660006B77E4  |.  8B0D F836F300 MOV ECX,DWORD PTR DS:[F336F8]006B77EA  |.  2B8E B4020000 SUB ECX,DWORD PTR DS:[ESI+2B4]006B77F0  |.  6A 00         PUSH 0006B77F2  |.  898E 2C020000 MOV DWORD PTR DS:[ESI+22C],ECX006B77F8  |.  8B15 FC36F300 MOV EDX,DWORD PTR DS:[F336FC]006B77FE  |.  2B96 B8020000 SUB EDX,DWORD PTR DS:[ESI+2B8]006B7804  |.  6A 00         PUSH 0006B7806  |.  8996 30020000 MOV DWORD PTR DS:[ESI+230],EDX004705F6 - 8B 0D 20A4F500  - mov ecx,[Client.exe+B5A420]004705FC - D9 06  - fld dword ptr [esi]004705FE - 8B 91 98020000  - mov edx,[ecx+00000298] <<00470604 - D9 9A 34020000  - fstp dword ptr [edx+00000234]0047060A - A1 20A4F500 - mov eax,[Client.exe+B5A420]  //最后得到的寻路状态公式就是 [[F5A420]+298]+228dd [[0xf5a420]+298]+234就是 人物的坐标[[0xf5a420]+298]+234 X +238 Y目的坐标+228 //寻路状态004EBCDF - 91 - xchg eax,ecx004EBCE0 - 28 02  - sub [edx],al004EBCE2 - 00 00  - add [eax],al <<004EBCE4 - 74 65 - je Client.exe+EBD4B004EBCE6 - A1 0859E300 - mov eax,[Client.exe+A35908]寻路call的分析:0077A5FE  |.  8B4E 04       MOV ECX,DWORD PTR DS:[ESI+4]0077A601  |.  3BCB          CMP ECX,EBX0077A603  |.  74 0E         JE SHORT Client.0077A6130077A605  |.  8B55 10       MOV EDX,DWORD PTR SS:[EBP+10]0077A608  |.  8B01          MOV EAX,DWORD PTR DS:[ECX]0077A60A  |.  8B40 04       MOV EAX,DWORD PTR DS:[EAX+4]0077A60D  |.  52            PUSH EDX0077A60E  |.  57            PUSH EDI0077A60F  |.  6A 03         PUSH 30077A611  |.  FFD0          CALL EAX                                 ;  可能的寻路call50077A613  |>  389E 44030000 CMP BYTE PTR DS:[ESI+344],BL0077A619  |.  74 0D         JE SHORT Client.0077A6280077A61B  |.  F605 2537F300>TEST BYTE PTR DS:[F33725],800077A622  |.^ 0F84 42FDFFFF JE Client.0077A36A0077A628  |>  8BCE          MOV ECX,ESI然后发现堆栈的内容为0018CCE0   000000030018CCE4   000000790018CCE8   00000000与坐标没有任何关系  可以排除了006BCA92  |.  6BD2 68       IMUL EDX,EDX,68006BCA95  |.  81BA 9877F800>CMP DWORD PTR DS:[EDX+F87798],1C85006BCA9F  |.  75 0C         JNZ SHORT Client.006BCAAD006BCAA1  |.  8BCE          MOV ECX,ESI006BCAA3  |.  E8 28AEFFFF   CALL Client.006B78D0006BCAA8  |.  E9 2E080000   JMP Client.006BD2DB006BCAAD  |>  8B45 10       MOV EAX,DWORD PTR SS:[EBP+10]006BCAB0  |.  50            PUSH EAX006BCAB1  |.  57            PUSH EDI006BCAB2  |.  8BCE          MOV ECX,ESI006BCAB4  |.  E8 87ABFFFF   CALL Client.006B7640                     ;  可能的寻路call4006BCAB9  |.  E9 1D080000   JMP Client.006BD2DB006BCABE  |>  83FF 78       CMP EDI,78                               ;  Case 7 of switch 006BC9AE006BCAC1  |.  0F85 14080000 JNZ Client.006BD2DB006BCAC7  |.  E8 949BFFFF   CALL Client.006B6660006BCACC  |.  E9 0A080000   JMP Client.006BD2DB006BCAD1  |>  8B8E 40020000 MOV ECX,DWORD PTR DS:[ESI+240]           ;  Case 8 of switch 006BC9AE006BCAD7  |.  8B51 28       MOV EDX,DWORD PTR DS:[ECX+28]006BCADA  |.  8915 B8161B03 MOV DWORD PTR DS:[31B16B8],EDX006BCAE0  |.  8B86 40020000 MOV EAX,DWORD PTR DS:[ESI+240]0018CCA0   000000790018CCA4   000000000018CCA8   000000790018CCAC   1ADC0A800018CCB0   000000000018CCB4   000000790018CCB8   0FE609A00018CCBC   00724525  返回到 Client.00724525 来自 Client.00778EE00018CCC0   000000790018CCC4   1ADC0A800018CCC8   000000000018CCCC   070D2B500018CCD0   0000004E0018CCD4   06BC5AED同理   call4也可以排除了006B7890  |.  885D B8       MOV BYTE PTR SS:[EBP-48],BL006B7893  |.  0FAFC8        IMUL ECX,EAX006B7896  |.  894D 98       MOV DWORD PTR SS:[EBP-68],ECX006B7899  |.  8B0D ACBE1D03 MOV ECX,DWORD PTR DS:[31DBEAC]006B789F  |.  8D45 9C       LEA EAX,DWORD PTR SS:[EBP-64]006B78A2  |.  DA65 98       FISUB DWORD PTR SS:[EBP-68]006B78A5  |.  50            PUSH EAX006B78A6  |.  68 EF030000   PUSH 3EF006B78AB  |.  D95D A4       FSTP DWORD PTR SS:[EBP-5C]006B78AE  |.  D95D C8       FSTP DWORD PTR SS:[EBP-38]006B78B1  |.  8B11          MOV EDX,DWORD PTR DS:[ECX]006B78B3  |.  8B52 04       MOV EDX,DWORD PTR DS:[EDX+4]006B78B6  |.  FFD2          CALL EDX                                 ;  可能的寻路call3006B78B8  |>  5F            POP EDI006B78B9  |.  5B            POP EBX006B78BA  |>  8B4D FC       MOV ECX,DWORD PTR SS:[EBP-4]006B78BD  |.  33CD          XOR ECX,EBP006B78BF  |.  5E            POP ESI006B78C0  |.  E8 BBC02800   CALL Client.00943980006B78C5  |.  8BE5          MOV ESP,EBP006B78C7  |.  5D            POP EBP006B78C8  \.  C2 0800       RETN 8006B78CB      CC            INT3006B78CC      CC            INT3006B78CD      CC            INT3006B78CE      CC            INT3006B78CF      CC            INT3006B78D0  /$  55            PUSH EBP006B78D1  |.  8BEC          MOV EBP,ESP006B78D3  |.  B8 10280000   MOV EAX,28100018CC18   000003EF0018CC1C   0018CC34  ASCII "f&呙"0018CC20   000000540018CC24   000000790018CC28   000000000018CC2C   1A8691680018CC30   000000FA0018CC34   C3DF26660018CC38   000000000018CC3C   440C4C280018CC40   000000000018CC44   00000000可以发现一些地址 然后数据窗口中跟随,发现有坐标,有可能是寻路call暂时留着 下面先分析下面两个的004EBD0D   .  E8 1E7BF2FF   CALL Client.00413830004EBD12   >  8B95 D4AAFFFF MOV EDX,DWORD PTR SS:[EBP+FFFFAAD4]004EBD18   .  52            PUSH EDX004EBD19   .  8D85 9CFDFFFF LEA EAX,DWORD PTR SS:[EBP-264]004EBD1F   .  50            PUSH EAX004EBD20   .  83EC 1C       SUB ESP,1C004EBD23   .  8BFC          MOV EDI,ESP004EBD25   .  B9 07000000   MOV ECX,7004EBD2A   .  8DB5 9CAAFFFF LEA ESI,DWORD PTR SS:[EBP+FFFFAA9C]004EBD30   .  F3:A5         REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS>004EBD32   .  8B0D 0859E300 MOV ECX,DWORD PTR DS:[E35908]004EBD38   .  E8 B347F8FF   CALL Client.004704F0                     ;  可能的寻路call2004EBD3D   .  8BBD F4AAFFFF MOV EDI,DWORD PTR SS:[EBP+FFFFAAF4]004EBD43   .  8BB5 ECAAFFFF MOV ESI,DWORD PTR SS:[EBP+FFFFAAEC]004EBD49   .  EB 2E         JMP SHORT Client.004EBD79004EBD4B   >  8B8D D4AAFFFF MOV ECX,DWORD PTR SS:[EBP+FFFFAAD4]004EBD51   .  8B86 601D0000 MOV EAX,DWORD PTR DS:[ESI+1D60]004EBD57   .  51            PUSH ECX004EBD58   .  8D96 A4160000 LEA EDX,DWORD PTR DS:[ESI+16A4]004EBD5E   .  52            PUSH EDX004EBD5F   .  50            PUSH EAX00187618   C3D526660018761C   C3898AD700187620   444ACC2800187624   0000000000187628   000000000018762C   0000000000187630   0000000000187634   0018C99C  ASCII "f&呙"00187638   2ED363940018763C   06BC5A3500187640   2E1BDFC000187644   1A86916800187648   00187684dd esp 可以发现这个也是坐标   但是多了一个Z坐标暂时留着 先分析最后一个00470D59  |.  8B5D A4       MOV EBX,DWORD PTR SS:[EBP-5C]00470D5C  |.  51            PUSH ECX00470D5D  |.  83EC 1C       SUB ESP,1C00470D60  |.  8BFC          MOV EDI,ESP00470D62  |.  B9 07000000   MOV ECX,700470D67  |.  8BF3          MOV ESI,EBX00470D69  |.  F3:A5         REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS>00470D6B  |.  83EC 1C       SUB ESP,1C00470D6E  |.  8BFC          MOV EDI,ESP00470D70  |.  B9 07000000   MOV ECX,700470D75  |.  8D75 08       LEA ESI,DWORD PTR SS:[EBP+8]00470D78  |.  F3:A5         REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS>00470D7A  |.  8B4D C4       MOV ECX,DWORD PTR SS:[EBP-3C]00470D7D  |.  E8 7EEDFFFF   CALL Client.0046FB00                     ;  可能的寻路call100470D82  |.  8B55 C0       MOV EDX,DWORD PTR SS:[EBP-40]00470D85  |.  8B42 04       MOV EAX,DWORD PTR DS:[EDX+4]00470D88  |.  D940 E4       FLD DWORD PTR DS:[EAX-1C]00470D8B  |.  D91B          FSTP DWORD PTR DS:[EBX]00470D8D  |.  D940 E8       FLD DWORD PTR DS:[EAX-18]00470D90  |.  D95B 04       FSTP DWORD PTR DS:[EBX+4]call1同call2  所有这3个call 都有可能是寻路call 但是最有可能的就是外层call3由call3可以知道 esp的改变的值为13所有 这个函数有3个参数 dd eax$ ==>    >43A9170A$+4      >00000000$+8      >44A20E66$+C      >00000000$+10     >00000000$+14     >0000FFFF$+18     >00000001$+1C     >11837201$+20     >00000000$+24     >00000000$+28     >00000000$+2C     >00000000最后得到的寻路call就是这个sub esp ,0x30mov eax , esp mov dword ptr ss:[eax + 0],-99  //Xfild dword ptr ss:[eax + 0]fstp dword ptr ss:[eax + 0]mov dword ptr ss:[eax + 4],0mov dword ptr ss:[eax + 8],100 //yfild dword ptr ss:[eax + 8]fstp dword ptr ss:[eax + 8]mov dword ptr ss:[eax + 0C],0mov dword ptr ss:[eax + 10],0mov dword ptr ss:[eax + 14],0000FFFFmov dword ptr ss:[eax + 18],1mov dword ptr ss:[eax + 1c],11837201mov dword ptr ss:[eax + 20],0mov dword ptr ss:[eax + 24],0mov dword ptr ss:[eax + 28],0mov dword ptr ss:[eax + 2c],0push 0x54push eax push 0x3efMOV ECX,DWORD PTR DS:[31DBEAC]MOV EDX,DWORD PTR DS:[ECX]MOV EDX,DWORD PTR DS:[EDX+4]CALL EDXadd esp,0x30

0 0