外挂辅助技术研究-分析动作数组与攻击捡物功能

目标:


1、分析动作数组
2、分析攻击与打坐




思路:
   通过选中对象逆向回溯出动作数组
   通过动作对象访问逆向回溯到攻击CALL附近
   封包断点bp WSASend


225F5050
225F5298
225F54E0


//背包对象 怪物对象  动作对象 玩家对象
0061BD29  |.  BE 40E71C03   MOV ESI,Client.031CE740


//动作对象数组 
dd [31A9A98]+410+4*0




0079D2CF - 80 B8 30020000 00 - cmp byte ptr [eax+00000230],00
0079D2D6 - 75 6D - jne Client.exe+39D345
0079D2D8 - 8B 8C 9F 10040000  - mov ecx,[edi+ebx*4+00000410] << 从这里 F8单步步过跟
0079D2DF - 85 C9  - test ecx,ecx
0079D2E1 - 74 62 - je Client.exe+39D345


0079DB98 - 83 BF 08160000 35 - cmp dword ptr [edi+00001608],35
0079DB9F - 75 1F - jne Client.exe+39DBC0
0079DBA1 - 8B 84 9F 10040000  - mov eax,[edi+ebx*4+00000410] <<
0079DBA8 - 85 C0  - test eax,eax
0079DBAA - 74 14 - je Client.exe+39DBC0




0079DB2E  |. /E9 D9000000   JMP Client.0079DC0C
0079DB33  |> |83F8 FF       CMP EAX,-1
0079DB36  |. |0F84 D0000000 JE Client.0079DC0C
0079DB3C  |. |50            PUSH EAX
0079DB3D  |. |6A 01         PUSH 1
0079DB3F  |. |6A 00         PUSH 0
0079DB41  |. |8BCF          MOV ECX,EDI
0079DB43  |. |E8 B80FFFFF   CALL Client.0078EB00
0079DB48  |. |E9 BF000000   JMP Client.0079DC0C
0079DB4D  |> |8B8F 08160000 MOV ECX,DWORD PTR DS:[EDI+1608]
0079DB53  |. |8B97 D01B0000 MOV EDX,DWORD PTR DS:[EDI+1BD0]
0079DB59  |. |53            PUSH EBX
0079DB5A  |. |51            PUSH ECX
0079DB5B  |. |52            PUSH EDX
0079DB5C  |. |8BCF          MOV ECX,EDI
0079DB5E  |. |E8 9D0FFFFF   CALL Client.0078EB00
0079DB63  |. |E9 A4000000   JMP Client.0079DC0C
0079DB68  |> |E8 A3B2F2FF   CALL Client.006C8E10
0079DB6D  |. |84C0          TEST AL,AL
0079DB6F  |. |0F85 97000000 JNZ Client.0079DC0C
0079DB75  |. |803D 318B1A03>CMP BYTE PTR DS:[31A8B31],1
0079DB7C  |. |0F84 8A000000 JE Client.0079DC0C
0079DB82  |. |8B87 08160000 MOV EAX,DWORD PTR DS:[EDI+1608]
0079DB88  |. |8B8F D01B0000 MOV ECX,DWORD PTR DS:[EDI+1BD0]


0079DB8E  |. |53            PUSH EBX                                 ;  对象在数组里的下标
0079DB8F  |. |50            PUSH EAX                                 ;  35
0079DB90  |. |51            PUSH ECX                                 ;  5
0079DB91  |. |8BCF          MOV ECX,EDI
0079DB93  |. |E8 1878FFFF   CALL Client.007953B0                     ;  ecx=[31A9A98]
0079DB98  |. |83BF 08160000>CMP DWORD PTR DS:[EDI+1608],35
0079DB9F  |. |75 1F         JNZ SHORT Client.0079DBC0
0079DBA1  |. |8B849F 100400>MOV EAX,DWORD PTR DS:[EDI+EBX*4+410]     ;  ebx动作下标
0079DBA8  |. |85C0          TEST EAX,EAX
0079DBAA  |. |74 14         JE SHORT Client.0079DBC0
0079DBAC  |. |8B50 4C       MOV EDX,DWORD PTR DS:[EAX+4C]
0079DBAF  |. |A1 E018F400   MOV EAX,DWORD PTR DS:[F418E0]
0079DBB4  |. |8B88 7C020000 MOV ECX,DWORD PTR DS:[EAX+27C]
0079DBBA  |. |52            PUSH EDX
0079DBBB  |. |E8 F0BAEDFF   CALL Client.006796B0                     ;  动作使用CALL
0079DBC0  |> |83BF 08160000>CMP DWORD PTR DS:[EDI+1608],36
0079DBC7  |. |75 20         JNZ SHORT Client.0079DBE9
0079DBC9  |. |8B849F 100400>MOV EAX,DWORD PTR DS:[EDI+EBX*4+410]
0079DBD0  |. |85C0          TEST EAX,EAX
0079DBD2  |. |74 15         JE SHORT Client.0079DBE9
0079DBD4  |. |8B48 4C       MOV ECX,DWORD PTR DS:[EAX+4C]
0079DBD7  |. |8B15 E018F400 MOV EDX,DWORD PTR DS:[F418E0]


mov ebx,2
mov edi,31A9A98
mov edi,[edi]
mov eax,[edi+410+4*ebx]
mov edx,[eax+4c]
mov eax,[0xf418E0]
MOV ECX,DWORD PTR DS:[EAX+27C]
push edx
call 006796b0








#define  Base_ActionList 0x31C1EB0
+5C 名字




8B91380200002B9134020000B8ABAAAA2AF7EAD1FA8BC253c1E81F33db03c274 //第一个 能搜到 共2个
+0x31  //00677AD1-00677AA0


dc [[0x31C1EB0]+410]+5c


00677A9F    CC                          INT3


00677AA0    8B91 38020000               MOV EDX,DWORD PTR DS:[ECX+0x238]
00677AA6    2B91 34020000               SUB EDX,DWORD PTR DS:[ECX+0x234]
00677AAC    B8 ABAAAA2A                 MOV EAX,0x2AAAAAAB
00677AB1    F7EA                        IMUL EDX
00677AB3    D1FA                        SAR EDX,1
00677AB5    8BC2                        MOV EAX,EDX
00677AB7    53                          PUSH EBX
00677AB8    C1E8 1F                     SHR EAX,0x1F
00677ABB    33DB                        XOR EBX,EBX
00677ABD    03C2                        ADD EAX,EDX
00677ABF    74 7C                       JE SHORT Client.00677B3D
00677AC1    56                          PUSH ESI
00677AC2    57                          PUSH EDI
00677AC3    BE 10040000                 MOV ESI,0x410
00677AC8    EB 06                       JMP SHORT Client.00677AD0
00677ACA    8D9B 00000000               LEA EBX,DWORD PTR DS:[EBX]
00677AD0    A1 B01E1C03                 MOV EAX,DWORD PTR DS:[0x31C1EB0] //基址
00677AD5    833C06 00                   CMP DWORD PTR DS:[ESI+EAX],0x0






00677AA0    8B91 38020000   MOV EDX,DWORD PTR DS:[ECX+0x238]
00677AA6    2B91 34020000   SUB EDX,DWORD PTR DS:[ECX+0x234]
00677AAC    B8 ABAAAA2A     MOV EAX,0x2AAAAAAB
00677AB1    F7EA            IMUL EDX
00677AB3    D1FA            SAR EDX,1
00677AB5    8BC2            MOV EAX,EDX
00677AB7    53              PUSH EBX
00677AB8    C1E8 1F         SHR EAX,0x1F
00677ABB    33DB            XOR EBX,EBX
00677ABD    03C2            ADD EAX,EDX
00677ABF    74 7C           JE SHORT Client.00677B3D
00677AC1    56              PUSH ESI
00677AC2    57              PUSH EDI
00677AC3    BE 10040000     MOV ESI,0x410
00677AC8    EB 06           JMP SHORT Client.00677AD0
00677ACA    8D9B 00000000   LEA EBX,DWORD PTR DS:[EBX]
00677AD0    A1 B01E1C03     MOV EAX,DWORD PTR DS:[0x31C1EB0]               ; 动作基址
00677AD5    833C06 00       CMP DWORD PTR DS:[ESI+EAX],0x0
00677AD9    74 3C           JE SHORT Client.00677B17
00677ADB    8B0406          MOV EAX,DWORD PTR DS:[ESI+EAX]
00677ADE    8B50 4C         MOV EDX,DWORD PTR DS:[EAX+0x4C]
00677AE1    8B78 50         MOV EDI,DWORD PTR DS:[EAX+0x50]






007AAAAF   /0F85 97000000   JNZ Client.007AAB4C
007AAAB5   |803D 490F1C03 0>CMP BYTE PTR DS:[0x31C0F49],0x1
007AAABC   |0F84 8A000000   JE Client.007AAB4C
007AAAC2   |8B87 08160000   MOV EAX,DWORD PTR DS:[EDI+0x1608]
007AAAC8   |8B8F D01B0000   MOV ECX,DWORD PTR DS:[EDI+0x1BD0]
007AAACE   |53              PUSH EBX                                       ; 下标
007AAACF   |50              PUSH EAX                                       ; 1
007AAAD0   |51              PUSH ECX                                       ; 0
007AAAD1   |8BCF            MOV ECX,EDI
007AAAD3   |E8 08EAFEFF     CALL Client.007994E0                           ; 背包物品使用CALL //动作使用CALL
007AAAD8   |83BF 08160000 3>CMP DWORD PTR DS:[EDI+0x1608],0x35
007AAADF   |75 1F           JNZ SHORT Client.007AAB00
007AAAE1   |8B849F 10040000 MOV EAX,DWORD PTR DS:[EDI+EBX*4+0x410]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程安排,暂定,有可能会实时修改 编程语言,VC++6.0 工具主要为(OD1.1,CE5.4) 预计平均3天左右更新一课 大家好,我是郁金香老师:QQ150330575 欢迎大家参加梅州技术 VC++外挂编程VIP培训班。 在接下来的一段时间将由我和大家一起学习游戏外挂分析,制作。 课程分四个大章节 初级篇,中级篇,进阶篇,高级篇 初级篇内容:编写一个完整的,简单的外挂 C++的数据类型:Byte,Word,DWORD,int,float API函数的调mouse_event,GetWindowRect,SetCursorPos,FindWindow,SendMessage) CE5.4工具的使用方法 中级篇内容:调试工具的使用技巧,功能CALL的概念 调试工具OD1.1的使用技巧(如硬件断点,条件断点,内存断点。 常用汇编指令与对应高级语言的转换。 游戏功能CALL概念 找第一个功能CALL 外挂框架的构建(通用) 进阶篇内容:分析游戏内部数据,分析常用功能CALL 游戏数据实践找各种功能CALL(如打怪,选怪,物品使用,技能栏之类)及相应的代码编写 高级篇内容:编写完整外挂 完成一个相对完整的外挂,实现 自动挂机,打怪,存放物品之类的功能 1 入门篇.以《QQ连连看为例》 1.1、一个最简单的外挂 1.1.1、游戏数据分析(SPY++) 1.1.1、游戏窗口数据分析(SPY++) a、取得窗口相对坐标 b、读出游戏窗口信息GetWindowRect c、移动鼠标指针SetCursorPos 1.1.2 用VC++写个最简单的外挂(实现游戏开局) a、鼠拟鼠标单击mouse_event b、鼠标指针移动还原 c、集成到startgame函数里 1.2、用CE查找棋盘数据 1.2.1、数据类型:Bit,Byte,Word,Dword 、用CE查找坐位号; 1.2.2、用CE查出4个棋盘基址; 1.3、用模拟技术编制外挂 1.3.1 模拟鼠标点击实现 交换棋子 1.3.2 把所有功能集成封装到 函数里 1.3.3 利用棋盘数据 ,模拟实现下棋功能 1.3.4 编写完整外挂,界面美化 1.4、游戏加速.去掉对动画效果.非HOOK 1.4.1:用OD找出 动画延时代码 1.4.2:写代码去掉延时,实现游戏加速 2 中级篇 以热血江湖为例 2.1、分析前的准备..CALL简介: 2.1.1、CALL调用示例分析.远程代码注入器 2.1.2、调试工具OD简介,血值,魔力值,坐标偏移; 2.1.3、游戏基址概念; 2.1.4、常用汇编指令详解 2.1.5、内联汇编编程实例 2.2、游戏分析利器OD(OllyDbg) 2.2.1、分析角色基址 2.2.2、找打坐CALL 2.2.3、读出角色当前血值 2.2.4、远程注入代码,调用打坐CALL; 2.2.5、实例分析:找技能栏对象数组基址+偏移: 2.2.6: 拦截F1-F8功能CALL 2.3、外挂框架构建 2.3.1、DLL动态链接库构建,与调用 2.3.2、API与回调函数 2.3.3、DLL中构建窗口 2.4、用OD分析游戏功能CALL.《热血江湖》为例:主要是找CALL 2.4.1、选怪CALL 2.4.2、找游戏物品背包的基址+偏移 2.4.3、 吃红药(补血)CALL 2.4.4、 吃蓝(补魔)CALL 2.4.5、 技能CALL1 2.4.6、技能CALL2 2.4.7、所有技能CALL 2.4.8、捡物CALL 2.4.9、所有动作CALL 3、进阶篇 主要讲功能CALL的参数分析 汇编浮点指令/浮点运行/浮点数整数转换/汇编里的指针 3.1、喊话功能 3.2、走路 3.3、 怪物过滤 3.3.1、怪物属性分析 3.3.2、怪物列表关键代码分析 3.3.3、怪物列表基址+大小 3.3.4、怪物列表编写代码 3.3.5、怪物过滤 3.4、 物品过滤 3.4.1、物品属性分析 3.4.2、物品列表关键代码分析 3.4.3、找出物品列表基址+偏移 3.4.4、物品过滤(编程读出物品列表数据) 3.5、 组队相关 3.5.1、 玩家列表 3.5.2、 组队功能 3.5.3、 离队功能 3.6、购物/售物 3.6.1、与NPC对话框 3.6.2、打开购物/售物对话框 3.6.3、购物功能 3.6.4、售物功能 3.7、 摆摊.开店 a、开店CALL参数分析 b、写代码测试 4、高级篇 4.1、编写完整的外挂 4.2、游戏更新后的外挂更新 4.3、脚本功能 4.4、游戏多开实现 4.5、盗号的实现
课程安排,暂定,有可能会实时修改 编程语言,VC++6.0 工具主要为(OD1.1,CE5.4) 预计平均3天左右更新一课 大家好,我是郁金香老师:QQ150330575 欢迎大家参加梅州技术 VC++外挂编程VIP培训班。 在接下来的一段时间将由我和大家一起学习游戏外挂分析,制作。 课程分四个大章节 初级篇,中级篇,进阶篇,高级篇 初级篇内容:编写一个完整的,简单的外挂 C++的数据类型:Byte,Word,DWORD,int,float API函数的调mouse_event,GetWindowRect,SetCursorPos,FindWindow,SendMessage) CE5.4工具的使用方法 中级篇内容:调试工具的使用技巧,功能CALL的概念 调试工具OD1.1的使用技巧(如硬件断点,条件断点,内存断点。 常用汇编指令与对应高级语言的转换。 游戏功能CALL概念 找第一个功能CALL 外挂框架的构建(通用) 进阶篇内容:分析游戏内部数据,分析常用功能CALL 游戏数据实践找各种功能CALL(如打怪,选怪,物品使用,技能栏之类)及相应的代码编写 高级篇内容:编写完整外挂 完成一个相对完整的外挂,实现 自动挂机,打怪,存放物品之类的功能 1 入门篇.以《QQ连连看为例》 1.1、一个最简单的外挂 1.1.1、游戏数据分析(SPY++) 1.1.1、游戏窗口数据分析(SPY++) a、取得窗口相对坐标 b、读出游戏窗口信息GetWindowRect c、移动鼠标指针SetCursorPos 1.1.2 用VC++写个最简单的外挂(实现游戏开局) a、鼠拟鼠标单击mouse_event b、鼠标指针移动还原 c、集成到startgame函数里 1.2、用CE查找棋盘数据 1.2.1、数据类型:Bit,Byte,Word,Dword 、用CE查找坐位号; 1.2.2、用CE查出4个棋盘基址; 1.3、用模拟技术编制外挂 1.3.1 模拟鼠标点击实现 交换棋子 1.3.2 把所有功能集成封装到 函数里 1.3.3 利用棋盘数据 ,模拟实现下棋功能 1.3.4 编写完整外挂,界面美化 1.4、游戏加速.去掉对动画效果.非HOOK 1.4.1:用OD找出 动画延时代码 1.4.2:写代码去掉延时,实现游戏加速 2 中级篇 以热血江湖为例 2.1、分析前的准备..CALL简介: 2.1.1、CALL调用示例分析.远程代码注入器 2.1.2、调试工具OD简介,血值,魔力值,坐标偏移; 2.1.3、游戏基址概念; 2.1.4、常用汇编指令详解 2.1.5、内联汇编编程实例 2.2、游戏分析利器OD(OllyDbg) 2.2.1、分析角色基址 2.2.2、找打坐CALL 2.2.3、读出角色当前血值 2.2.4、远程注入代码,调用打坐CALL; 2.2.5、实例分析:找技能栏对象数组基址+偏移: 2.2.6: 拦截F1-F8功能CALL 2.3、外挂框架构建 2.3.1、DLL动态链接库构建,与调用 2.3.2、API与回调函数 2.3.3、DLL中构建窗口 2.4、用OD分析游戏功能CALL.《热血江湖》为例:主要是找CALL 2.4.1、选怪CALL 2.4.2、找游戏物品背包的基址+偏移 2.4.3、 吃红药(补血)CALL 2.4.4、 吃蓝(补魔)CALL 2.4.5、 技能CALL1 2.4.6、技能CALL2 2.4.7、所有技能CALL 2.4.8、捡物CALL 2.4.9、所有动作CALL 3、进阶篇 主要讲功能CALL的参数分析 汇编浮点指令/浮点运行/浮点数整数转换/汇编里的指针 3.1、喊话功能 3.2、走路 3.3、 怪物过滤 3.3.1、怪物属性分析 3.3.2、怪物列表关键代码分析 3.3.3、怪物列表基址+大小 3.3.4、怪物列表编写代码 3.3.5、怪物过滤 3.4、 物品过滤 3.4.1、物品属性分析 3.4.2、物品列表关键代码分析 3.4.3、找出物品列表基址+偏移 3.4.4、物品过滤(编程读出物品列表数据) 3.5、 组队相关 3.5.1、 玩家列表 3.5.2、 组队功能 3.5.3、 离队功能 3.6、购物/售物 3.6.1、与NPC对话框 3.6.2、打开购物/售物对话框 3.6.3、购物功能 3.6.4、售物功能 3.7、 摆摊.开店 a、开店CALL参数分析 b、写代码测试 4、高级篇 4.1、编写完整的外挂 4.2、游戏更新后的外挂更新 4.3、脚本功能 4.4、游戏多开实现 4.5、盗号的实现
免key版,511U盘资源,速度很快!经测试全部可下 课程分四个大章节 初级篇,中级篇,进阶篇,高级篇 初级篇内容:编写一个完整的,简单的外挂 C++的数据类型:Byte,Word,DWORD,int,float API函数的调mouse_event,GetWindowRect,SetCursorPos,FindWindow,SendMessage) CE5.4工具的使用方法 中级篇内容:调试工具的使用技巧,功能CALL的概念 调试工具OD1.1的使用技巧(如硬件断点,条件断点,内存断点。 常用汇编指令与对应高级语言的转换。 游戏功能CALL概念 找第一个功能CALL 外挂框架的构建(通用) 进阶篇内容:分析游戏内部数据,分析常用功能CALL 游戏数据实践找各种功能CALL(如打怪,选怪,物品使用,技能栏之类)及相应的代码编写 高级篇内容:编写完整外挂 完成一个相对完整的外挂,实现 自动挂机,打怪,存放物品之类的功能 1 入门篇.以《QQ连连看为例》 1.1、一个最简单的外挂 1.1.1、游戏窗口数据分析(SPY++) a、取得窗口相对坐标 b、读出游戏窗口信息GetWindowRect c、移动鼠标指针SetCursorPos 1.1.2 用VC++写个最简单的外挂(实现游戏开局) a、鼠拟鼠标单击mouse_event b、鼠标指针移动还原 c、集成到startgame函数里 1.2、用CE查找棋盘数据 1.2.1、CE中的数据类型 a、数据类型:Bit,Byte,Word,Dword,float,double b、用CE查找出坐位号; c、保存分析数据 1.2.2、编程读出坐位号; a、远程读取进程数据 b、打开远程进程 c、读取远程进程数据 1.2.3、用CE查出棋盘基址; a、找棋盘数据基址 b、分析棋盘数据结构 1.2.4、读出当前棋盘数据 a、编程读出棋盘数据 b、棋盘数据显示出来 1.3、用模拟技术编制外挂 1.3.1 分析棋子与棋盘坐标关系 a、鼠标软件模拟,函数SendMessage b、分析窗口内棋子相对坐标X,Y c、软件模拟点击棋盘坐标x,y处的棋子 1.3.2 消掉一对棋子的算法框架 a、遍历棋盘同类型棋子配对 b、构建算法框架 1.3.3 (Check2p)大致框架(算法核心) a、在这一对棋子间找相通路径的原理 b、(Check2p函数)框架代码 c、(CheckLine函数)检测2点是否有连通. 1.3.4 CheckLine实现 a、CheckLine函数实现 b、Check2p核心代码架构 1.3.5 Check2p完整代码实现 1.3.6 编写完整外挂,界面美化 1.4、游戏加速.去掉对动画效果.非HOOK 1.4.1:用OD找出 动画延时代码 1.4.2:写代码去掉延时,实现游戏加速 2 中级篇 以热血江湖为例 2.1、分析前的准备..CALL简介: 2.1.1、CALL调用示例分析.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值