00CF3AB0 1 push ebp
00CF3AB1 2 mov ebp,esp
00CF3AB3 3 sub esp,0x44
00CF3AB6 4 push ebx
00CF3AB7 5 push esi
00CF3AB8 6 push edi
00CF3AB9 7 mov dword ptr ss:[ebp-0x4],ecx 把ecx的值传给ebp减4,ecx的值游戏每次重新登录都会变
不过【ecx】的值是不变的是1 这里ecx的值是指针,把这个指
针传给ebp减四。这个指针游戏重新登录会变的不过里面的值是不会变的
00CF3ABC 8 cmp dword ptr ss:[ebp+0x8],0x43 ebp加8的值是1
00CF3AC0 9 jl XTUClient.00CF3AC4
00CF3AC2 10 jmp XTUClient.00CF3AEC
00CF3AC4 11 mov eax,dword ptr ss:[ebp+0x8] 此时eax的值是1
00CF3AC7 12 imul eax,eax,0x28 这里eax的值是28
00CF3ACA 13 mov ecx,dword ptr ss:[ebp-0x4] 把1传给ecx
00CF3ACD 14 mov edx,dword ptr ds:[ecx+eax+0x4] 这里是指针加上ecx里的值1加上eax里的值28加上0x4这里面的值是药的id
00CF3AD1 15 push edx 这是吧药的id号push进去
00CF3AD2 16 mov eax,dword ptr ss:[ebp+0x8] 此时eax的值是1
00CF3AD5 17 imul eax,eax,0x28 这里eax的值是28
00CF3AD8 18 mov ecx,dword ptr ss:[ebp-0x4] 把一1传给ecx
00CF3ADB 19 mov edx,dword ptr ds:[ecx+eax] 这里是指针加上ecx里的值一加上eax里的值28这里面的值是1
00CF3ADE 20 imul edx,edx,0xC 这个不太理解 imul有符号乘法不是只有一个操作数码??隐藏的不是eax吗 这里edx的值是c
00CF3AE1 21 mov eax,dword ptr ds:[edx+0x113D2B4] 这里是吧edx里值c加上0x113D2B4里的值传给eax 这个call的值是不变的
00CF3AE7 22 call eax
00CF3AE9 23 add esp,0x4
00CF3AEC 24 pop edi
00CF3AED 25 pop esi
00CF3AEE 26 pop ebx
00CF3AEF 27 mov esp,ebp
00CF3AF1 28 pop ebp
00CF3AF2 29 retn 0x4
下面是我的疑问 我分析的是8,9句是判断小于等于就跳
11到15句是计算指针里的值是药品id 然后把药品id压入堆栈
16到21就是计算call的地址所以我把上面的call代码简化换成了
push 0x000028ce 药id
mov eax,0x007ebbe4 call的地址
call eax
用注入工具注入
游戏能正常吃药 不过游戏一秒以后就崩溃了
我实在是想不到哪出的问题请老大们帮我决绝下
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)