Cuzっ 发表于 2015-3-21 10:38:38

热血江湖 最新寻路CALL,技能CALL,轻功CALL,无限视距

热血江湖 最新寻路CALL,技能CALL,轻功CALL,无限视距
刚玩C++没几天,就发上来和大家交流一下。。另外求穿墙。。物品进包。和优化CPU的方法。我实在找不出了

#define Tmp_Base 0x31DBEAC         //人物基址
#define WalkCall 0x4C8670         //走路CALL
//走路CALL
void walk(float x, float y)
{
    int TT;
    TT = *(int*)Tmp_Base;
    *(float*)(TT+ 0x1650) = x;
    *(float*)(TT + 0x1658) = y;
    *(float*)(TT + 0x14BC) = x;
    *(float*)(TT + 0x14C4) = y;
    *(int*)(TT + 0x14D8) = 1;
    *(int*)(TT + 0x14D4) = 1;
    *(int*)(TT + 0x14DC) = 0;
    _asm{
                               mov esi, Tmp_Base
            mov esi,
            mov edx, dword ptr ds :
            mov ecx, dword ptr ds :
            push 0x2
            sub esp, 0xC
            mov eax, esp
            mov dword ptr ds : , edx
            mov edx, dword ptr ds :
            mov dword ptr ds : , ecx
            mov ecx, esi
            mov dword ptr ds : , edx
            mov eax, WalkCall
            call eax
         }
}

--------------------------------
#define SkillCall0x4E0190       ///技能CALL
#define SkillCallBase 0x18A4AC    //技能CALL参数基址
void IdSkillCall(int Fwhat)
{
    _asm{
      mov eax, SkillCallBase
            mov ecx, Tmp_Base
            mov ecx,
            lea eax, dword ptr ss :
            push eax
            mov eax, SkillCallBase
            mov byte ptr ss : , 0xFF
            mov edi, Fwhat                           // 技能ID
            mov dword ptr ss : , edi
            mov eax, SkillCall
            call eax
    }

}
在快捷键CALL 进去的最下方

----------------------------------------
#define LightCall 0x4F7E00   //轻功CALL
#define LightCallBase 0x17DB5C    //轻功CALL参数基址

void LightSkillCall(int Fwhat)
{
    int State;
    State = *(int*)Tmp_Base + 0x1F54;
    State = *(int*)State;    //判断轻功是否开启 0未开启 1开启
    if (State == 0)
    {
      _asm{
            mov ecx, Tmp_Base
                mov ecx,
                mov eax, Fwhat
                push eax
                mov eax, LightCallBase
                lea eax, dword ptr ss :
                push eax
                mov eax, LightCall
                call eax
      }
    }
}

-------------------------------------
#define BeyondHorizon 0x40D5B0      //无限视距

DWORD dwOldProtect; //无限视距
    VirtualProtect(LPVOID(BeyondHorizon), 4, PAGE_EXECUTE_READWRITE, &dwOldProtect);    //改变内存属性
    *(byte*)BeyondHorizon = 0xEB;

这个是我爆热血宝宝得来的内存点,我也不会逆向出来,求思路




技能树效果遍历所有在武功/ 武功出现的技能   直接把结构遍历发上来了
寻找方法。。鼠标点击技能窗口里面的技能 那么会产生一个鼠标对象,放下后为0,以对象为根源 寻找出数组

#define AttackSkillListBase 0x31B85B0//武功技能数组基址
#define AssistSkillListBase 0x31B85B4// 技能数组基址

typedef struct SKILL_OBJ
{
    int CoolingTime;//24C 冷却时间
    char *Name;//5C 技能名字
    int Class;//8   0x1C
    int Id;//C
    int XXXX; //标示 0x4C
    int Address; //对象
    int Judge;// +1F6 WORD型 已学会为1 未学会为0
}_SKILL_OBJ;
//技能数组结构
typedef struct SKILL_LIST
{
    SKILL_OBJ OBJ;
    SKILL_LIST *GetData();
}_SKILL_LIST;







//技能初始化
SKILL_LIST *SKILL_LIST::GetData()
{
    try
    {
      int base = *(int*)AttackSkillListBase + 0x410;    //攻击武功
      int obj = NULL;
      for (int i = 0; i < 100; i++)
      {
            if (i > 50)
            {
                base = *(int*)AssistSkillListBase + 0x410;   // 武功
                obj = *(int*)(base + 4 * (i - 50));
            }
            else
            {
                obj = *(int*)(base + 4 * i);
            }
            if (obj == NULL)
            {
                this->OBJ.Class = 0;
                continue;
            }
            this->OBJ.Address = base + 4 * i;   //对象
            this->OBJ.Name = (char*)(obj + 0x5C);//名字
            this->OBJ.CoolingTime = *(int*)(obj + 0x24C);//冷却时间
            this->OBJ.Id = *(int*)(obj + 0xC);   //ID
            this->OBJ.Class = *(int*)(obj + 0x8);   //类型
            this->OBJ.XXXX = *(int*)(obj + 0x4C);   //标示
            this->OBJ.Judge = *(WORD*)(obj + 0x1F6);//已学会为1 未学会为0
      }
    }
    catch (...)
    {
      OutputDebugStringA("技能数组指针失败");
    }
    return this;
}

Cuzっ 发表于 2015-3-21 10:39:32


看见很多人问为什么遍历选怪会出现问题。那么正好给大家解决了。



其实是指针的问题,当访问数组里面的对象的时候 可能对象是空的。那么在空的前提下再去访问其 +8 +C那么便会出错 加上一 判断是空就进行下一次循环即可

Sallyma 发表于 2015-3-21 10:40:26

选怪的问题,要判断选怪的对象属性基址是否为0,如果是就不执行,如果有对象就可以选怪。不然就游戏崩溃。
多看游戏里面的反汇编代码,代码怎么写,自己也要跟着他写,特别是条件判断不能忽视。

zhuzhuli 发表于 2015-3-24 06:24:08

前排支持下了哦~

haohao1314 发表于 2015-3-26 09:15:51

强烈支持楼主ing……

ghost_z 发表于 2015-3-26 09:26:00

鄙视楼下的顶帖没我快,哈哈

qqshqq 发表于 2015-3-31 11:21:56

呵呵,低调,低调!

aumkb 发表于 2015-4-14 15:18:37

需要的就是这个

冻柠乐 发表于 2015-4-22 10:09:00

不错,非常好,谢谢了

ft4314094 发表于 2015-7-4 20:06:10

好东西。拿走了,感谢楼主分享
页: [1] 2
查看完整版本: 热血江湖 最新寻路CALL,技能CALL,轻功CALL,无限视距