游戏逆向逻辑接口定义

游戏逆向逻辑接口定义
跟逆向的协同是制定标准交互接口

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


你可能感兴趣的:(游戏逆向逻辑接口定义)