背包遍历
操作步骤
突破口[挪动物品位置 跟踪失败]
1.尝试4字节 未知初始化扫描
2.扫描未变动的值,多点几次
3.挪动物品位置 扫描变动的数值,点一次
4.切换扫描未变动的数值,多点几次
5.还原物品位置 扫描变动的数值,点一次
6.切换扫描未变动的数值,多点几次
7.挪动物品位置 扫描精确数值0 点一次
8.切换扫描未变动的数值,多点几次
9.还原物品位置 扫描变动的数值,点一次
10.重复6-9步骤 如图所示,可以尝试逐个下断点追追看看
2057貌似是物品id,拿他开刀,下硬件访问断点如图所示
051BECE4
32F2BEF4
32F2C00C 2057 ===>>>刀口
32F2C014
32F2C02C
00915E54 . 8B86 0C020000 mov eax, dword ptr [esi+20C] 追esi
esi = 32F2BE00
ecx一直变动,条件断点能断下,说明这里是对的,有可能在遍历
009158D0 . 6A FF push -1
009158D2 . 68 FB0BBD00 push 00BD0BFB ; SE 处理程序安装
009158D7 . 64:A1 0000000>mov eax, dword ptr fs:[0]
009158DD . 50 push eax
009158DE . 64:8925 00000>mov dword ptr fs:[0], esp
009158E5 . 81EC E0000000 sub esp, 0E0
009158EB . 53 push ebx
009158EC . 55 push ebp
009158ED . 56 push esi
009158EE . 57 push edi
009158EF . 8D4424 18 lea eax, dword ptr [esp+18]
009158F3 . 6A 00 push 0
009158F5 . 8BF1 mov esi, ecx==================>>ecx一直变动,条件断点能断下,说明这里是对的,有可能在遍历
009158F7 . 50 push eax
009158F8 . E8 13E0FBFF call 008D3910
Ctrl+F9返回到
008DD3B3 |. C746 30 00000>mov dword ptr [esi+30], 0
008DD3BA |. 85FF test edi, edi
008DD3BC |. 0F84 9C000000 je 008DD45E
008DD3C2 |> 8B4F 08 /mov ecx, dword ptr [edi+8]
008DD3C5 |. E8 7667FFFF |call 008D3B40
008DD3CA |. 84C0 |test al, al
008DD3CC |. 74 4F |je short 008DD41D
008DD3CE |. 8B4F 08 |mov ecx, dword ptr [edi+8]
008DD3D1 |. 8B86 F0000000 |mov eax, dword ptr [esi+F0]
008DD3D7 |. 3BC8 |cmp ecx, eax
008DD3D9 |. 74 42 |je short 008DD41D
008DD3DB |. E8 E081FFFF |call 008D55C0
008DD3E0 |. 85C0 |test eax, eax
008DD3E2 |. 75 39 |jnz short 008DD41D
008DD3E4 |. 8B4F 08 |mov ecx, dword ptr [edi+8]
008DD3E7 |. E8 D467FFFF |call 008D3BC0
008DD3EC |. 83F8 06 |cmp eax, 6
008DD3EF |. 75 0C |jnz short 008DD3FD
008DD3F1 |. 8B4F 08 |mov ecx, dword ptr [edi+8]
008DD3F4 |. E8 C7970300 |call 00916BC0
008DD3F9 |. 84C0 |test al, al
008DD3FB |. 75 20 |jnz short 008DD41D
008DD3FD |> 8B5424 10 |mov edx, dword ptr [esp+10]
008DD401 |. 8B4424 14 |mov eax, dword ptr [esp+14]
008DD405 |. 8B4F 08 |mov ecx, dword ptr [edi+8]
008DD408 |. 52 |push edx
008DD409 |. 50 |push eax
008DD40A |. 55 |push ebp
008DD40B |. 53 |push ebx
008DD40C |. E8 CF81FFFF |call 008D55E0
008DD411 |. 8B4F 08 |mov ecx, dword ptr [edi+8]
008DD414 |. 8B11 |mov edx, dword ptr [ecx]
008DD416 |. FF52 20 |call dword ptr [edx+20] ; 000000000
008DD419 |. 84C0 |test al, al
008DD41B |. 74 25 |je short 008DD442
008DD41D |> 8B7F 0C |mov edi, dword ptr [edi+C]
008DD420 |. 85FF |test edi, edi
008DD422 |.^ 75 9E \jnz short 008DD3C2
008DD424 |. EB 38 jmp short 008DD45E
008DD426 |> 68 D0A8CC00 push 00CCA8D0 ; ASCII "AUIDialog::RenderControls(), Failed to call RenderControlsInViewport()"
008DD42B |. 6A 01 push 1
008DD42D |. 68 3E080000 push 83E
008DD432 |. E8 795FFEFF call 008C33B0
008DD437 |. 83C4 0C add esp, 0C
008DD43A |. 5F pop edi
008DD43B |. 5E pop esi
008DD43C |. 5D pop ebp
008DD43D |. 5B pop ebx
008DD43E |. 83C4 24 add esp, 24
008DD441 |. C3 retn
好像是链表结构,回头在分析
051BECE4 ===>>>刀口
32F2BEF4
32F2C00C 2057
32F2C014
32F2C02C
不知所以然
004CB5F0 /$ 8B51 10 mov edx, dword ptr [ecx+10]
004CB5F3 |. 33C0 xor eax, eax
004CB5F5 |. 85D2 test edx, edx
004CB5F7 |. 7E 2A jle short 004CB623
004CB5F9 |. 53 push ebx
004CB5FA |. 8B5C24 08 mov ebx, dword ptr [esp+8]
004CB5FE |. 56 push esi
004CB5FF |. 8B71 0C mov esi, dword ptr [ecx+C]
004CB602 |. 57 push edi
004CB603 |. 8B7C24 14 mov edi, dword ptr [esp+14]
004CB607 |> 8B0E /mov ecx, dword ptr [esi]
004CB609 |. 85C9 |test ecx, ecx
004CB60B |. 74 0D |je short 004CB61A
004CB60D |. 3959 08 |cmp dword ptr [ecx+8], ebx
004CB610 |. 75 08 |jnz short 004CB61A
004CB612 |. 3979 34 |cmp dword ptr [ecx+34], edi
004CB615 |. 7C 03 |jl short 004CB61A
004CB617 |. 0341 14 |add eax, dword ptr [ecx+14]
004CB61A |> 83C6 04 |add esi, 4
004CB61D |. 4A |dec edx
004CB61E |.^ 75 E7 \jnz short 004CB607
004CB620 |. 5F pop edi
004CB621 |. 5E pop esi
004CB622 |. 5B pop ebx
004CB623 \> C2 0800 retn 8
051BECE4 ===>>> 不知所以然
32F2BEF4 ===>>> 刀口
32F2C00C 2057 ===>>> 跟踪到链表
32F2C014
32F2C02C
跟踪失败,代码跳跃太大,线路不好赶紧切换,没必要难为自己
051BECE4 ===>>> 不知所以然
32F2BEF4 ===>>> 跟踪失败
32F2C00C 2057 ===>>> 跟踪到链表
32F2C014
32F2C02C ===>>> 刀口
00916B10 /$ 56 push esi
00916B11 |. 57 push edi
00916B12 |. 8B7C24 14 mov edi, dword ptr [esp+14]
00916B16 |. 8BF1 mov esi, ecx
00916B18 |. 85FF test edi, edi
00916B1A |. 7C 3A jl short 00916B56
00916B1C |. 83FF 08 cmp edi, 8
00916B1F |. 7D 35 jge short 00916B56
00916B21 |. 53 push ebx
00916B22 |. 8B5C24 14 mov ebx, dword ptr [esp+14]
00916B26 |. 55 push ebp
00916B27 |. 8B6C24 14 mov ebp, dword ptr [esp+14]
00916B2B |. 85FF test edi, edi
00916B2D |. 75 17 jnz short 00916B46
00916B2F |. 3BAE 2C020000 cmp ebp, dword ptr [esi+22C]
00916B35 |. 75 08 jnz short 00916B3F
00916B37 |. 399E 0C020000 cmp dword ptr [esi+20C], ebx
00916B3D |. 74 07 je short 00916B46
00916B3F |> 8BCE mov ecx, esi
00916B41 |. E8 1AEAFBFF call 008D5560
00916B46 |> 89ACBE 2C0200>mov dword ptr [esi+edi*4+22C], ebp ===>>> 好像是数组
00916B4D |. 899CBE 0C0200>mov dword ptr [esi+edi*4+20C], ebx
00916B54 |. 5D pop ebp
00916B55 |. 5B pop ebx
00916B56 |> 5F pop edi
00916B57 |. 5E pop esi
00916B58 \. C2 0C00 retn 0C