外挂技术移动物品到仓库代码编写

学习目标:
     移动物品函数封装
     
  作业:
     提取仓库列表基址的特征码,添回仓库列表基址更新代码。
     BOOL MoveGoodToDepot(char*szpGoodsName);//把背包里的指定物品 移动到仓库里边




#define Base_DepotList 0x31C9A24 //仓库列表基址 dd [ [0x31C9A24]+410+4*0]
#define BaseCAll_MoveGoods 0x007A0A20 //移动物品CALL




//在背包列表 结构里添加下列成员函数
BOOL SelGoods(DWORD ndIndex);//选中背包里的某一格
BOOL MoveGoodsToDepot(DWORD ndIndex=1);//移动选中物品到仓库的某一格






//物品移动CALL
//前提 先选中物品
//把背包里的物品 移动到仓库


mov ebx,4  //下标
mov EDI,dword ptr ds:[Base_BackPackList] //背包基址
MOV EAX,DWORD PTR DS:[EDI+EBX*4+0x410]
MOV ECX,DWORD PTR DS:[BaseSelGoodSkill]
MOV DWORD PTR DS:[ECX+0x228],EAX
MOV EDX,DWORD PTR DS:[BaseSelGoodSkill]
MOV BYTE PTR DS:[EDX+0x230],0x1
MOV EAX,DWORD PTR DS:[BaseSelGoodSkill]
MOV ECX,DWORD PTR DS:[EAX+0x228]
MOV DX,WORD PTR DS:[EDI+0x1608]
MOV WORD PTR DS:[ECX+0x1F2],DX


MOV EDI,DWORD PTR DS:[Base_DepotList]  //仓库列表基址
MOV ECX,DWORD PTR DS:[EDI+0x1608] //列表分类编号 
MOV EDX,DWORD PTR DS:[EDI+0x1BD0]
push 1
push ecx
push edx
mov ecx,edi
mov eax,BaseCAll_MoveGoods
CALL eax






DWORD TBACKPACK_LIST::SelGoods(DWORD ndIndex) //选中背包里的某一格
{
    DWORD ndObj=NULL;
    __try
    {
        __asm
        {
        mov ebx,ndIndex  //下标
        mov EDI,dword ptr ds:[Base_BackPackList] //背包基址
        MOV EAX,DWORD PTR DS:[EDI+EBX*4+0x410]
        mov ndObj,eax//取出对象
        MOV ECX,DWORD PTR DS:[BaseSelGoodSkill]
        MOV DWORD PTR DS:[ECX+0x228],EAX
        MOV EDX,DWORD PTR DS:[BaseSelGoodSkill]
        MOV BYTE PTR DS:[EDX+0x230],0x1
        MOV EAX,DWORD PTR DS:[BaseSelGoodSkill]
        MOV ECX,DWORD PTR DS:[EAX+0x228]
        MOV DX,WORD PTR DS:[EDI+0x1608]
        MOV WORD PTR DS:[ECX+0x1F2],DX
        }


    }__except(1)
    {
        DbgPrintf_Mine("异常 BOOL TBACKPACK_LIST::SelGoods(DWORD ndIndex) //选中背包里的某一格\r\n");
        return NULL;
    }
    return ndObj;
}
BOOL TBACKPACK_LIST::MoveGoodsToDepot(DWORD ndIndex) //移动选中物品到仓库的某一格
{
    __try
    {
        __asm
        {
            MOV EDI,DWORD PTR DS:[Base_DepotList]  //仓库列表基址
            MOV ECX,DWORD PTR DS:[EDI+0x1608] //列表分类编号 
            MOV EDX,DWORD PTR DS:[EDI+0x1BD0]
            mov eax,ndIndex
            push 1
            push ecx
            push edx
            mov ecx,edi
            mov eax,BaseCAll_MoveGoods
            CALL eax
        }
    }__except(1)
    {
        DbgPrintf_Mine("异常 TBACKPACK_LIST::MoveGoodsToDepot(DWORD ndIndex=1) //移动选中物品到仓库的某一格\r\n");
        return FALSE;
    }
    return TRUE;
}

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。