追逐自己的梦想----------辅助制作第二十四课:寻路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
- 追逐自己的梦想----------辅助制作第二十四课:寻路call的分析
- 追逐自己的梦想----------辅助制作第二十五课:存仓库call分析
- 追逐自己的梦想----------辅助制作第二十八课:打开系统NPC CALL分析
- 追逐自己的梦想----------辅助制作第二十六课:存仓库call实现
- 追逐自己的梦想----------辅助制作第五课:分析并测试物品使用CALL
- 追逐自己的梦想----------辅助制作第二十一课:分析技能自动修炼call
- 追逐自己的梦想----------辅助制作第一课:人物属性分析
- 追逐自己的梦想----------辅助制作第二十七课:身上装备更换的分析与实现
- 追逐自己的梦想----------辅助制作第二课:人物气功加点分析
- 追逐自己的梦想----------辅助制作第二十九课:分析打开NPC后功能打开
- 追逐自己的梦想----------辅助制作第十课:分析动作数组以及攻击捡物品等功能call的封装
- 追逐自己的梦想----------辅助制作第二十二课:分析修炼条件的判断
- 追逐自己的梦想----------辅助制作第三十八课:物品出售的分析和实现
- 追逐自己的梦想----------辅助制作第十六课:分析技能列表
- 追逐自己的梦想----------辅助制作第三十六课:物品购买分析
- 追逐自己的梦想----------辅助制作第三十四课:向仓库存入N个物品对象函数封装实现
- 追逐自己的梦想----------辅助制作第三课:注入辅助窗口到游戏进程中
- 追逐自己的梦想----------辅助制作第九课:分析怪物列表及怪物属性的封装等
- 二分答案
- 专注内容,形式次之,立帖为证
- 欢迎使用CSDN-markdown编辑器
- 【USACO3.3.2】商店购物 状态压缩动态规划
- [刷题]Binary Tree Preorder Traversal
- 追逐自己的梦想----------辅助制作第二十四课:寻路call的分析
- ViewPager的页面的加载和移除
- MFC(0)关于MFC中的界面与业务逻辑的分离
- 如何看待 TJ 宣布退出 Node.js 开发,转向 Go?
- 28、传感器
- Java_语法基础_i+++j该如何计算
- Android下Json数据解析
- C++二叉树类实现
- spring中@Component @resource注解的说明