x64游戏 诛仙背包数组的遍历

入手点:物品数量  

追踪笔记:

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)

  • 15
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

letting go我终于舍得为你放开手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值