入手点:物品数量
追踪笔记:
1406484F5 - 44 8B 46 18 - mov r8d,[rsi+18] << RSI=0000000002ADDDE0
000000014064847F | 48:8BF0 | mov rsi,rax |
00000001403AE3D1 | 48:8BC1 | mov rax,rcx |
00000001403AE3C0 | 48:8B0CD0 | mov rcx,qword ptr ds:[rax+rdx*8] |
00000001403AE3B9 | 48:8B41 18 | mov rax,qword ptr ds:[rcx+0x18] |
0000000140648477 | 48:8BCE | mov rcx,rsi |
000000014064813D | 48:8BB0 30330000 | mov rsi,qword ptr ds:[rax+0x3330] | 0000000096DFB2F0
00000001404FC9F9 | 48:8B40 60 | mov rax,qword ptr ds:[rax+0x60] |
00000001404FC9B9 | 48:8B40 38 | mov rax,qword ptr ds:[rax+0x38] | [rax+38]:"v齦僗 "
00000001404FC9A0 | 48:8B05 B1260B01 | mov rax,qword ptr ds:[0x1415AF058] |
最终公式
物品数量=[[[[[[[0x1415AF058]+0x38]+0x60]+0x3330]+0x18]+0*8]+0x18]
物品对象=[[[[[[0x1415AF058]+0x38]+0x60]+0x3330]+0x18]+0*8]
背包格子数量 = [[[[[0x1415AF058]+0x38]+0x60]+0x3330]+0x20]
物品ID=[[[[[[[0x1415AF058]+0x38]+0x60]+0x3330]+0x18]+0*8]+0x0C]
物品名字 直接用ce搜索物品的字符串 然后修改物品名 看一下那个是真正的物品地址
再到XDBG下访问断点 -- 硬件访问 ---字节
然后返回
然后断下来看看 RSI=物品对象
这个解密物品名字的call 需要两个参数 那就是RCX RDX
RCX是物品对象 RDX 是物品ID
然后call返回的RAX 就存放了物品名字 然后读出来即可
00000001403BBF48 | 48:8B06 | mov rax,qword ptr ds:[rsi] |
00000001403BBF4B | 4C:8B69 60 | mov r13,qword ptr ds:[rcx+0x60] |
00000001403BBF4F | 48:8BCE | mov rcx,rsi |
00000001403BBF52 | FF50 30 | call qword ptr ds:[rax+0x30] |
使用物品call
000000014063ED93 | 48:8BC8 | mov rcx,rax |
000000014063ED96 | 41:B9 01000000 | mov r9d,0x1 |
000000014063ED9C | 44:8BC3 | mov r8d,ebx |
000000014063ED9F | 33D2 | xor edx,edx |
000000014063EDA1 | E8 FA17D0FF | call <elementclient64.sub_1403405A0> |
RCX = 000000008B991200 找来源
RDX = 0
R8 = 0x02 物品位置
R9 = 0x1
RCX 来源
00000001404FC9A0 | 48:8B05 B1260B01 | mov rax,qword ptr ds:[0x1415AF058] |
00000001404FC9B9 | 48:8B40 38 | mov rax,qword ptr ds:[rax+0x38] |
00000001404FC9F9 | 48:8B40 60 | mov rax,qword ptr ds:[rax+0x60] |
000000014063ED93 | 48:8BC8 | mov rcx,rax |
ce 自动汇编测试代码
R8的物品位置自己替换
alloc(test,2048)
test:
sub rsp,0x28
mov r9,1
mov r8,2
mov rdx,0
mov rax,[0x1415AF058]
mov rax,[rax+0x38]
mov rax,[rax+0x60]
mov rcx,rax
call 0x01403405A0
add rsp,0x28
ret
createthread(test)