郁金香初级班 5/22 29-30

目录:

29:分析角色对象属性

30:编写代码获取护甲值

 

29:内容 分析角色对象属性过程

 1 //护甲值分析
 2 EAX=25461348
 3 EDX=00000000
 4 指针基址可能是 =25461348
 5 004F54DA - mov esi,[eax+edx*4+00000174]
 6 
 7 查找25461348-查找访问过多
 8 
 9 选择OD里面根跟
10 004F54DA - 8B B4 90 74010000     - mov esi,[eax+edx*4+00000174]
11 往上找
12 004F54 | 8B01                 | mov eax,dword ptr ds:[ecx]                           |
13 
14 
15 [[ecx]+00000174]
16 
17 006102 | 8D8E D0000000        | lea ecx,dword ptr ds:[esi+0xD0]                      |
18 
19 
20 [[esi+0xD0]+00000174]
21 
22 
23 
24 006101 | 56                   | push esi                                             |
25 006101 | 57                   | push edi                                             |
26 006101 | 6A 00                | push 0x0                                             |
27 006101 | 6A 01                | push 0x1                                             |
28 006101 | 53                   | push ebx                                             |
29 006101 | E8 04DF2300          | call wow.84E0E0                                      |
30 006101 | 50                   | push eax                                             |
31 006101 | E8 0EC0FFFF          | call wow.60C1F0                                      |
32 006101 | 6A 02                | push 0x2                                             |
33 006101 | 53                   | push ebx                                             |
34 006101 | 8BF0                 | mov esi,eax                                          |
35 
36 重写汇编 获取eax 不向上找
37 参数一个 
38 0489F61 1E36FC7C     "player"
39 
40  push eax                                             |
41  call wow.60C1F0                                      |
42  add esp,4
分析过程

30:编写代码

注意卡主线程

DWORD R4(UINT_PTR 地址)
{
    __try
    {
        return *(DWORD*)地址;//ReadProcessMemory
    }
    __except (1)
    {
        return 0;
    }
}

// mzas 消息处理程序
VOID CALLBACK zhuxian(HWND h, UINT arg2, UINT_PTR arg3_id, DWORD time)
{
    //每毫秒就要执行一次 无限次执行
    KillTimer(h,10086);
    char* 参1 = "player";
    DWORD call1= 0x60C1F0;
    int 返回值 = 0;
    _asm
    {
        push 参1
        call call1
        add esp, 4
        mov 返回值,eax
    }
    
    DWORD hj= R4(R4(返回值 + 0xD0) + 0x174);
    
    char buf[299];
    snprintf(buf, sizeof(buf), "%d", hj);
    if (hj != 0)
    {
        MessageBoxA(0, buf, "护甲", 0);

    }
    else 
    {
        MessageBoxA(0, "获取失败", "护甲", 0);

    }


        
    

}

void mzas::OnBnClickedButton1()
{
    // TODO: 在此添加控件通知处理程序代码
    HWND 游戏窗口句柄 = FindWindowA("GxWindowClassD3d", "魔兽世界");
    ::SetTimer(游戏窗口句柄, 10086, 1, zhuxian);

}


void mzas::OnBnClickedButton2()
{
    AllocConsole();
    // TODO: 在此添加控件通知处理程序代码
}


void mzas::OnBnClickedButton3()
{
    FreeConsole();//关闭控制台
    // TODO: 在此添加控件通知处理程序代码
}
代码

 

posted @ 2023-05-22 18:56  大橘|博客  阅读(26)  评论(0)    收藏  举报