外挂辅助技术研究-封装背包对象列表+读物背包物品信息

来源:互联网 发布:上古卷轴5淘宝服装合集 编辑:程序博客网 时间:2024/06/14 03:38
目标:
1、封装好背包列表数据
2、读取背包物品信息


dd [31A8B3C]+410+4*ecx //ecx表示背包列表 下标0..35
+5C  //物品名字
+0F1 //物品功能描述
+244 //物品数量

#define  Base_BackPackList 0x31A8B3C  //背包列表基址dd [31A8B3C]+410+4*ecx


typedef struct TBACK_PACK_OBJ //背包物品对象
{
//+5C  //物品名字
char *szGoodName;
//+0F1 //物品功能描述
char *szGoodMsg;
//+244 //物品数量
DWORD ndGoodNun;

}_TBACK_PACK_OBJ;

#define nSizePackBack 36
typedef struct TBACKPACK_LIST //背包列表结构
{
    TBACK_PACK_OBJ mtGoodList[nSizePackBack];
    TBACKPACK_LIST* GetData();
}_TBACKPACK_LIST;



/背包相关代码
//+5C  //物品名字
#define offset_BackPackObjName 0x5c
//+0F1 //物品功能描述
#define offset_BackPackObjMsg 0x0F1
//+244 //物品数量
#define offset_BackPackObjNum 0x244
TBACKPACK_LIST* TBACKPACK_LIST::GetData() //初始化
{//dd [31A8B3C]+410+4*ecx
    try
    { 
        DWORD ndBase=*(DWORD*)Base_BackPackList;
        DWORD ndFirstGoodsBase=ndBase+0x410;
        DWORD ndObj=NULL;
        for (int i=0;i<nSizePackBack;i++)
        {
            ndObj=*(DWORD*)(ndFirstGoodsBase+4*i);//取出第i格对象地址
            if (ndObj==NULL)
            {
                this->mtGoodList[i].ndGoodNun=0;
                continue;
            }
            this->mtGoodList[i].ndGoodNun=*(DWORD*)(ndObj+offset_BackPackObjNum);//取出物品数量
            this->mtGoodList[i].szGoodName=(char*)(ndObj+offset_BackPackObjName);//读取物品名字
            this->mtGoodList[i].szGoodMsg=(char*)(ndObj+offset_BackPackObjMsg);//读取物品功能描述
        }
    }
    catch (...)
    {
        //处理异常
    }
     
    return this;
}
0 0
原创粉丝点击