游戏逆向逻辑接口定义
跟逆向的协同是制定标准交互接口
gtr_api.h
gtr_api.h
1
/*
2 gtr_api.h
3 ========================
4 定义与游戏逻辑交互的接口
5 2009.12.12 zhangbin created
6 1. 修改二进制图片的传输方式,通过context完成
7 2. 定义输出接口 init()/cleanup(),其他函数通过内部登记来实现
8 2009.12.13 zhangbin
9 1.添加日志回调
10
11 2010.3.25 zhangbin
12 1.添加 auth() 密保认证回调;captureImage()抓屏幕回调
13 3.添加 Gt_CallContext.id字段
14 2010.3.29 zhangbin
15 1.修正部分声明的错误
16
17 */
18 #ifndef _GT_API_H
19 #define _GT_API_H
20 #include < windows.h >
21
22
23 enum Gt_ReturnValueT{
24 GT_FALSE = 0 , // 假
25 GT_TRUE, // 真
26 GT_UNABLECONNECT, // 无法连接
27 GT_PASSWORDERROR, // 账号密码错误
28 GT_PLAYERINLINE, // 玩家在线
29 GT_VERSIONERROR, // 版本错误
30 GT_UNABLEGETINFO, // 无法获得
31 GT_VERIFYCODEERROR, // 验证码错误
32 GT_ROLELOCK, // 角色被封
33 GT_MBERROR, // 密保卡错误
34 GT_ROLENEEDCHANGENAME, // 角色需要修改名字(DNF合服)
35 GT_ROLEKICK, // 角色被踢下线
36 // GT_NOROLE, // 角色名不存在
37 // GT_NOBUYERROLE, // 买家不存在
38 GT_SECONDPWDERROR, // 二级密码或者仓库密码错误
39 GT_UNABLEMOVETO, // 无法到达
40 GT_UNABLETALKTO, // 无法对话
41 GT_TIMEOUT, // 超时
42 GT_PlAYERNOFEE, // 卖家游戏点卡不足
43 GT_CONNECTBREAK, // 连接中断
44 GT_NOTEXISTED, // 访问对象不存在 2010.3.27
45 GT_SKIP_PASS, // 此调用无需判断,直接忽略
46 GT_OK = GT_TRUE, // 成功
47 GT_UNKNOWN = 0xffff
48 };
49
50 typedef int GT_BOOL;
51 #define POUT
52 #define PIN
53 #define PINOUT
54
55 typedef Gt_ReturnValueT GT_RESULT;
56 typedef int Gt_NPCID;
57
58 enum Gt_ImageTypeT{
59 GT_IMAGEJPEG = 1 ,
60 GT_IMAGEPNG,
61 GT_IMAGEBMP
62 };
63
64 enum Gt_GameItemT{
65 GT_ITEM_1, // 金币
66 GT_ITEM_2, // 金砖
67 GT_ITEM_MAX
68 };
69
70 struct Gt_ApiList;
71
72 typedef struct Gt_CallContext{
73 int timeout ; // msec 调用超时
74 void * cookie; // 外部使用
75 void * cookie2; // 游戏内部使用,可用于保持状态
76 char * xdata; // 数据交换地址,数据必须立刻复制
77 int xsize; // 数据交换大小
78 int xtype; // 交换数据类型
79 Gt_ApiList * apilist; // 函数入口表 游戏dll内部维持接口表,在初始化时赋值给此变量
80 void ( * log)(Gt_CallContext * ctx, char * msg); // 游戏逻辑运行时日志输出
81 void ( * log2)(Gt_CallContext * ctx, char * data, int size); // 游戏逻辑运行时日志输出
82 char * ( * auth_coords)(Gt_CallContext * ctx, char * coords); // 坐标认证
83 char * ( * auth_image)(Gt_CallContext * ctx,Gt_ImageTypeT imagetype, char * imagedata, int size, int width, int height);
84 void ( * capture_image)(Gt_CallContext * ctx, char * excName, char * imagedata, int size, int width, int height);
85 int id; // 游戏逻辑使用
86 }CALLCTX;
87
88
89 struct Gt_ApiList{
90 GT_RESULT ( * SelectServer)( char * ,CALLCTX * ); // 选大区 订单中大区信息 OK 无法连接 SelectServer char*
91 GT_RESULT ( * SelectArea)( char * ,CALLCTX * ); // 选小区 订单中小区信息 OK 无法连接 SelectArea char*
92 // null 自动选择线路
93 GT_RESULT ( * SelectLineByName)( char * line,CALLCTX * ); // 选线路 Ping值较低 OK 无法连接 SelectLine void
94 // -1 自动选择线路
95 GT_RESULT ( * SelectLineByIndex)( int line,CALLCTX * ); // 选线路 Ping值较低 OK 无法连接 SelectLine void
96 GT_RESULT ( * Login)( char * usr, char * passwd,CALLCTX * ); // 账号密码输入 订单中账号密码信息 OK 账号密码错误 玩家在线 版本错误 Login char* account, char* pwd
97 GT_RESULT ( * IsExistDynMB)(CALLCTX * ); // 查询动态密保 有 无 IsExistDynMB void
98 GT_RESULT ( * IsRightClass)( int ,CALLCTX * ); // 查询角色阵营 订单中卖家阵营 是 否 IsRightClass int
99 GT_RESULT ( * IsExistBackHomeSkill)(CALLCTX * ); // 查询回城技能 是 否 IsExistBackHomeSkill void
100 GT_RESULT ( * UseBackHomeSkill)(CALLCTX * ); // 使用回城技能 OK 失败 UseBackHomeSkill void
101 GT_RESULT ( * IsExistBackHomeItem)(CALLCTX * ); // 查询是否存在回城物品 是 否
102 GT_RESULT ( * UseBackHomeItem)(CALLCTX * ); // 使用回城物品 OK 失败
103 GT_RESULT ( * QueryRoleLevel)( char * ,POUT int * ,CALLCTX * ); // 查询卖家角色等级 OK 失败 QuerySellerLevel char*, int*
104 GT_RESULT ( * SelectRoleByName)( char * ,CALLCTX * ); // 角色选择 订单中的角色名信息 OK 角色名不存在 角色需要修改名字(DNF合服) SelectRoleByName char*
105 GT_RESULT ( * SelectRoleByIndex)( int ,CALLCTX * ); // 序号选择 订单中的角色序号信息 OK 无法登陆该序号角色 SelectRoleByIndex int
106 GT_RESULT ( * IsExistRoleByName)( char * ,CALLCTX * ); // 查询买家角色名 订单中买家角色名信息 有 无 IsExistBuyerByName char*
107 GT_RESULT ( * AddRoleToFriend)( char * ,CALLCTX * ); // 加买家为好友 订单中买家角色名信息 OK 无该玩家 AddBuyerToFriend char*
108 GT_RESULT ( * QuerySafeTime)(POUT int * ,CALLCTX * ); // 获取安全时间 安全时间 QuerySafeTime int*
109 GT_RESULT ( * IsExistNPC)(Gt_NPCID ,CALLCTX * ); // 判定指定NPC是否在附近 NPCID 是 否 IsExistNPC int
110 GT_RESULT ( * OpenWarehouse)( char * passwd,CALLCTX * ); // 打开仓库 订单中的仓库密码信息 OK 密码错误 OpenWarehouse char*
111 GT_RESULT ( * OpenMailBox)( char * passwd,CALLCTX * ); // 邮箱 二级密码
112 GT_RESULT ( * OpenBank)( char * passwd,CALLCTX * ); // 银行 二级密码
113 GT_RESULT ( * OpenExchange)( char * passwd,CALLCTX * ); // 交易所 二级密码
114 GT_RESULT ( * OpenGrocer)( char * passwd,CALLCTX * ); // 杂货商 二级密码
115
116 GT_RESULT ( * MoveToByNpcID)(Gt_NPCID,CALLCTX * ); // 跑地图 NPCID OK 无法到达 MoveToByNpcID int NPCID
117 GT_RESULT ( * Talk)(Gt_NPCID,CALLCTX * ); // 与邮箱NPC对话 NPCID OK 无法对话 Talk int NPCID
118 // 查询物品数量 , item - 具体的游戏可交易的对象(金币、元宝、金砖。。。)
119 GT_RESULT ( * QueryItemsInBag)(Gt_GameItemT item,POUT INT64 * ,CALLCTX * ); // 背包
120 GT_RESULT ( * QueryItemsInWarehouse)(Gt_GameItemT item,POUT INT64 * ,CALLCTX * ); // 仓库
121 GT_RESULT ( * QueryItemsInBank)(Gt_GameItemT item,POUT INT64 * ,CALLCTX * ); // 银行
122 GT_RESULT ( * QueryItemsInExchange)(Gt_GameItemT item,POUT INT64 * ,CALLCTX * ); // 交易所
123 // 邮件特例处理
124 GT_RESULT ( * IsEnoughItemsInMailbox)(Gt_GameItemT item,PINOUT INT64 * ,CALLCTX * ); // 邮箱金币是否满足差额
125 // 获得指定物品数量
126 GT_RESULT ( * WithdrawItemsInWarehouse)(Gt_GameItemT item,PINOUT INT64 * ,CALLCTX * ); // 获取仓库金币信息 返回仓库中金币数额 无法获取 QueryGoldsInWarehouse int64*
127 GT_RESULT ( * WithdrawItemsInBank)(Gt_GameItemT item,PINOUT INT64 * ,CALLCTX * ); // 获取仓库金币信息 返回仓库中金币数额 无法获取 QueryGoldsInWarehouse int64*
128 GT_RESULT ( * WithdrawItemsInExchange)(Gt_GameItemT item,PINOUT INT64 * ,CALLCTX * ); // 获取仓库金币信息 返回仓库中金币数额 无法获取 QueryGoldsInWarehouse int64*
129 GT_RESULT ( * WithdrawItemsInMailbox)(Gt_GameItemT item,PINOUT INT64 * ,CALLCTX * ); // 邮箱金币是否满足差额
130 // 发送邮件
131 GT_RESULT ( * SendMail)( char * reciever, char * title, char * content,INT64,CALLCTX * );
132 // 兑换给Npc
133 GT_RESULT ( * SellItem)( int item, int itemNum,CALLCTX * ); // 兑换银票,金砖 金币数额 返回兑换后金币数额 无法获取 SellItem int64
134
135
136 GT_RESULT ( * Begin)(CALLCTX * ); // 开单
137 GT_RESULT ( * End)(CALLCTX * ); // 结单
138
139 // GT_RESULT (*QueryBuyerLevel)(char*,POUT int * ,CALLCTX*); // 查询买家等级 订单中买家角色名信息 买家角色等级 QueryBuyerLevel char*
140 // GT_RESULT (*IsExistSecondPwd)(CALLCTX*); // 查询二级码 是 否 IsExistSecondPwd void
141 // GT_RESULT (*InputSecondPwd)(char* ,CALLCTX*); // 输入二级码 订单中的二级码信息 OK 密码错误 InputeSecondPwd char*
142 // GT_RESULT (*IsExistVerifyCode)(CALLCTX*); // 是否有验证码 是 否 IsExistVerifyCode void
143 // GT_RESULT (*GetVerifyCode)(CALLCTX*); // 获取验证码 验证码图片 无法获得 GetVerifyCode char** buf, int* // 通过ctx::xdata,xsize进行数据交换
144 // GT_RESULT (*InputeVerifyCode)(char* ,CALLCTX*); // 验证码输入 答题器中的验证码信息 OK 验证码错误 InputeVerifyCode char*
145 // GT_RESULT (*IsExistMB)(CALLCTX*); // 是否有密保卡 是 否 IsExistMB void
146 // GT_RESULT (*GetMBCord)(CALLCTX*); // 获取密保坐标 OK 无法获得 GetMBCord char** buf, int* // 通过ctx::xdata,xsize进行数据交换
147 // GT_RESULT (*InputMBInfo)(char* ,CALLCTX*); // 密保卡输入 答题器中的密保卡信息 OK 密保卡错误 InputeMBInfo char*
148
149 };
150
151 //////////////////////////////////////////////////////////////////////// //
152 // game-dll必须导出以下函数即可
153 GT_BOOL Init( char * gamedir,CALLCTX * ctx);
154 void CleanUp(CALLCTX * ctx);
155
156
157
158 #endif
2 gtr_api.h
3 ========================
4 定义与游戏逻辑交互的接口
5 2009.12.12 zhangbin created
6 1. 修改二进制图片的传输方式,通过context完成
7 2. 定义输出接口 init()/cleanup(),其他函数通过内部登记来实现
8 2009.12.13 zhangbin
9 1.添加日志回调
10
11 2010.3.25 zhangbin
12 1.添加 auth() 密保认证回调;captureImage()抓屏幕回调
13 3.添加 Gt_CallContext.id字段
14 2010.3.29 zhangbin
15 1.修正部分声明的错误
16
17 */
18 #ifndef _GT_API_H
19 #define _GT_API_H
20 #include < windows.h >
21
22
23 enum Gt_ReturnValueT{
24 GT_FALSE = 0 , // 假
25 GT_TRUE, // 真
26 GT_UNABLECONNECT, // 无法连接
27 GT_PASSWORDERROR, // 账号密码错误
28 GT_PLAYERINLINE, // 玩家在线
29 GT_VERSIONERROR, // 版本错误
30 GT_UNABLEGETINFO, // 无法获得
31 GT_VERIFYCODEERROR, // 验证码错误
32 GT_ROLELOCK, // 角色被封
33 GT_MBERROR, // 密保卡错误
34 GT_ROLENEEDCHANGENAME, // 角色需要修改名字(DNF合服)
35 GT_ROLEKICK, // 角色被踢下线
36 // GT_NOROLE, // 角色名不存在
37 // GT_NOBUYERROLE, // 买家不存在
38 GT_SECONDPWDERROR, // 二级密码或者仓库密码错误
39 GT_UNABLEMOVETO, // 无法到达
40 GT_UNABLETALKTO, // 无法对话
41 GT_TIMEOUT, // 超时
42 GT_PlAYERNOFEE, // 卖家游戏点卡不足
43 GT_CONNECTBREAK, // 连接中断
44 GT_NOTEXISTED, // 访问对象不存在 2010.3.27
45 GT_SKIP_PASS, // 此调用无需判断,直接忽略
46 GT_OK = GT_TRUE, // 成功
47 GT_UNKNOWN = 0xffff
48 };
49
50 typedef int GT_BOOL;
51 #define POUT
52 #define PIN
53 #define PINOUT
54
55 typedef Gt_ReturnValueT GT_RESULT;
56 typedef int Gt_NPCID;
57
58 enum Gt_ImageTypeT{
59 GT_IMAGEJPEG = 1 ,
60 GT_IMAGEPNG,
61 GT_IMAGEBMP
62 };
63
64 enum Gt_GameItemT{
65 GT_ITEM_1, // 金币
66 GT_ITEM_2, // 金砖
67 GT_ITEM_MAX
68 };
69
70 struct Gt_ApiList;
71
72 typedef struct Gt_CallContext{
73 int timeout ; // msec 调用超时
74 void * cookie; // 外部使用
75 void * cookie2; // 游戏内部使用,可用于保持状态
76 char * xdata; // 数据交换地址,数据必须立刻复制
77 int xsize; // 数据交换大小
78 int xtype; // 交换数据类型
79 Gt_ApiList * apilist; // 函数入口表 游戏dll内部维持接口表,在初始化时赋值给此变量
80 void ( * log)(Gt_CallContext * ctx, char * msg); // 游戏逻辑运行时日志输出
81 void ( * log2)(Gt_CallContext * ctx, char * data, int size); // 游戏逻辑运行时日志输出
82 char * ( * auth_coords)(Gt_CallContext * ctx, char * coords); // 坐标认证
83 char * ( * auth_image)(Gt_CallContext * ctx,Gt_ImageTypeT imagetype, char * imagedata, int size, int width, int height);
84 void ( * capture_image)(Gt_CallContext * ctx, char * excName, char * imagedata, int size, int width, int height);
85 int id; // 游戏逻辑使用
86 }CALLCTX;
87
88
89 struct Gt_ApiList{
90 GT_RESULT ( * SelectServer)( char * ,CALLCTX * ); // 选大区 订单中大区信息 OK 无法连接 SelectServer char*
91 GT_RESULT ( * SelectArea)( char * ,CALLCTX * ); // 选小区 订单中小区信息 OK 无法连接 SelectArea char*
92 // null 自动选择线路
93 GT_RESULT ( * SelectLineByName)( char * line,CALLCTX * ); // 选线路 Ping值较低 OK 无法连接 SelectLine void
94 // -1 自动选择线路
95 GT_RESULT ( * SelectLineByIndex)( int line,CALLCTX * ); // 选线路 Ping值较低 OK 无法连接 SelectLine void
96 GT_RESULT ( * Login)( char * usr, char * passwd,CALLCTX * ); // 账号密码输入 订单中账号密码信息 OK 账号密码错误 玩家在线 版本错误 Login char* account, char* pwd
97 GT_RESULT ( * IsExistDynMB)(CALLCTX * ); // 查询动态密保 有 无 IsExistDynMB void
98 GT_RESULT ( * IsRightClass)( int ,CALLCTX * ); // 查询角色阵营 订单中卖家阵营 是 否 IsRightClass int
99 GT_RESULT ( * IsExistBackHomeSkill)(CALLCTX * ); // 查询回城技能 是 否 IsExistBackHomeSkill void
100 GT_RESULT ( * UseBackHomeSkill)(CALLCTX * ); // 使用回城技能 OK 失败 UseBackHomeSkill void
101 GT_RESULT ( * IsExistBackHomeItem)(CALLCTX * ); // 查询是否存在回城物品 是 否
102 GT_RESULT ( * UseBackHomeItem)(CALLCTX * ); // 使用回城物品 OK 失败
103 GT_RESULT ( * QueryRoleLevel)( char * ,POUT int * ,CALLCTX * ); // 查询卖家角色等级 OK 失败 QuerySellerLevel char*, int*
104 GT_RESULT ( * SelectRoleByName)( char * ,CALLCTX * ); // 角色选择 订单中的角色名信息 OK 角色名不存在 角色需要修改名字(DNF合服) SelectRoleByName char*
105 GT_RESULT ( * SelectRoleByIndex)( int ,CALLCTX * ); // 序号选择 订单中的角色序号信息 OK 无法登陆该序号角色 SelectRoleByIndex int
106 GT_RESULT ( * IsExistRoleByName)( char * ,CALLCTX * ); // 查询买家角色名 订单中买家角色名信息 有 无 IsExistBuyerByName char*
107 GT_RESULT ( * AddRoleToFriend)( char * ,CALLCTX * ); // 加买家为好友 订单中买家角色名信息 OK 无该玩家 AddBuyerToFriend char*
108 GT_RESULT ( * QuerySafeTime)(POUT int * ,CALLCTX * ); // 获取安全时间 安全时间 QuerySafeTime int*
109 GT_RESULT ( * IsExistNPC)(Gt_NPCID ,CALLCTX * ); // 判定指定NPC是否在附近 NPCID 是 否 IsExistNPC int
110 GT_RESULT ( * OpenWarehouse)( char * passwd,CALLCTX * ); // 打开仓库 订单中的仓库密码信息 OK 密码错误 OpenWarehouse char*
111 GT_RESULT ( * OpenMailBox)( char * passwd,CALLCTX * ); // 邮箱 二级密码
112 GT_RESULT ( * OpenBank)( char * passwd,CALLCTX * ); // 银行 二级密码
113 GT_RESULT ( * OpenExchange)( char * passwd,CALLCTX * ); // 交易所 二级密码
114 GT_RESULT ( * OpenGrocer)( char * passwd,CALLCTX * ); // 杂货商 二级密码
115
116 GT_RESULT ( * MoveToByNpcID)(Gt_NPCID,CALLCTX * ); // 跑地图 NPCID OK 无法到达 MoveToByNpcID int NPCID
117 GT_RESULT ( * Talk)(Gt_NPCID,CALLCTX * ); // 与邮箱NPC对话 NPCID OK 无法对话 Talk int NPCID
118 // 查询物品数量 , item - 具体的游戏可交易的对象(金币、元宝、金砖。。。)
119 GT_RESULT ( * QueryItemsInBag)(Gt_GameItemT item,POUT INT64 * ,CALLCTX * ); // 背包
120 GT_RESULT ( * QueryItemsInWarehouse)(Gt_GameItemT item,POUT INT64 * ,CALLCTX * ); // 仓库
121 GT_RESULT ( * QueryItemsInBank)(Gt_GameItemT item,POUT INT64 * ,CALLCTX * ); // 银行
122 GT_RESULT ( * QueryItemsInExchange)(Gt_GameItemT item,POUT INT64 * ,CALLCTX * ); // 交易所
123 // 邮件特例处理
124 GT_RESULT ( * IsEnoughItemsInMailbox)(Gt_GameItemT item,PINOUT INT64 * ,CALLCTX * ); // 邮箱金币是否满足差额
125 // 获得指定物品数量
126 GT_RESULT ( * WithdrawItemsInWarehouse)(Gt_GameItemT item,PINOUT INT64 * ,CALLCTX * ); // 获取仓库金币信息 返回仓库中金币数额 无法获取 QueryGoldsInWarehouse int64*
127 GT_RESULT ( * WithdrawItemsInBank)(Gt_GameItemT item,PINOUT INT64 * ,CALLCTX * ); // 获取仓库金币信息 返回仓库中金币数额 无法获取 QueryGoldsInWarehouse int64*
128 GT_RESULT ( * WithdrawItemsInExchange)(Gt_GameItemT item,PINOUT INT64 * ,CALLCTX * ); // 获取仓库金币信息 返回仓库中金币数额 无法获取 QueryGoldsInWarehouse int64*
129 GT_RESULT ( * WithdrawItemsInMailbox)(Gt_GameItemT item,PINOUT INT64 * ,CALLCTX * ); // 邮箱金币是否满足差额
130 // 发送邮件
131 GT_RESULT ( * SendMail)( char * reciever, char * title, char * content,INT64,CALLCTX * );
132 // 兑换给Npc
133 GT_RESULT ( * SellItem)( int item, int itemNum,CALLCTX * ); // 兑换银票,金砖 金币数额 返回兑换后金币数额 无法获取 SellItem int64
134
135
136 GT_RESULT ( * Begin)(CALLCTX * ); // 开单
137 GT_RESULT ( * End)(CALLCTX * ); // 结单
138
139 // GT_RESULT (*QueryBuyerLevel)(char*,POUT int * ,CALLCTX*); // 查询买家等级 订单中买家角色名信息 买家角色等级 QueryBuyerLevel char*
140 // GT_RESULT (*IsExistSecondPwd)(CALLCTX*); // 查询二级码 是 否 IsExistSecondPwd void
141 // GT_RESULT (*InputSecondPwd)(char* ,CALLCTX*); // 输入二级码 订单中的二级码信息 OK 密码错误 InputeSecondPwd char*
142 // GT_RESULT (*IsExistVerifyCode)(CALLCTX*); // 是否有验证码 是 否 IsExistVerifyCode void
143 // GT_RESULT (*GetVerifyCode)(CALLCTX*); // 获取验证码 验证码图片 无法获得 GetVerifyCode char** buf, int* // 通过ctx::xdata,xsize进行数据交换
144 // GT_RESULT (*InputeVerifyCode)(char* ,CALLCTX*); // 验证码输入 答题器中的验证码信息 OK 验证码错误 InputeVerifyCode char*
145 // GT_RESULT (*IsExistMB)(CALLCTX*); // 是否有密保卡 是 否 IsExistMB void
146 // GT_RESULT (*GetMBCord)(CALLCTX*); // 获取密保坐标 OK 无法获得 GetMBCord char** buf, int* // 通过ctx::xdata,xsize进行数据交换
147 // GT_RESULT (*InputMBInfo)(char* ,CALLCTX*); // 密保卡输入 答题器中的密保卡信息 OK 密保卡错误 InputeMBInfo char*
148
149 };
150
151 //////////////////////////////////////////////////////////////////////// //
152 // game-dll必须导出以下函数即可
153 GT_BOOL Init( char * gamedir,CALLCTX * ctx);
154 void CleanUp(CALLCTX * ctx);
155
156
157
158 #endif