kkmomo 發表於 2022-3-12 20:42:59

TwMS v241.2 怪物座標

Mob base 1: 145A9B248
Mob base 2: 145A9AC80
+90        // Index modulo = 1F (=31), 3F(=63), ... 根據整張圖怪的數量決定
Index = ROR([[[[[+88]+Index*8]+18]+08]+460], 5) % [+90]
Index 是取餘數後的結果
pointer 1, 這個 pointer 不一定有整張圖的怪物座標,有時要清一下怪才會增加,不過應該至少有8成
[[[[[+88]+Index*8]+18]+08]+360]-20+FA4        // X : int32*
[[[[[+88]+Index*8]+18]+08]+360]-20+FA8        // Y : int32*
[[[[[+88]+Index*8]+18]+08]+360]-20+850        // MobType : 4 byte pointer
[[[[+88]+Index*8]+18]+08]+460                // Index_dividend_rol_5 : uint32*
pointer 2, 是上方 pointer 1 的其中一隻, 只是不需要帶入 index
[[[[+2E78]+70]+08]+360]-20+FA4                // X : int32
[[[[+2E78]+70]+08]+360]-20+FA8                // Y : int32
[[[[+2E78]+70]+08]+360]-20+850                // MobType : 4 byte
[[[+2E78]+70]+08]+460                        // Index_dividend_rol_5 : uint32*
trace
14211D0FC - 48 8B 1D 45E19703     - mov rbx,
1421D529A - 4C 8B 91 88000000     - mov r10,
1421D52C3 - 49 8B 04 D2           - mov rax,
1421D533B - 48 8B 58 18           - mov rbx,
1421D67EF - 49 8B 48 08           - mov rcx,
14215BCC7 - 49 8B 8D 60030000     - mov rcx,
14215BCCE - 4C 8D 61 E0           - lea r12,
143A6A3A7 - 41 89 87 A40F0000     - mov ,eax

141AEEA3F - 48 8B 0D 3AC2FA03     - mov rcx,
143BD73C7 - 48 8B 8E 782E0000     - mov rcx,
1421D67BD - 4D 8B 47 70           - mov r8,
1421D67EF - 49 8B 48 08           - mov rcx,
14215BCC7 - 49 8B 8D 60030000     - mov rcx,
14215BCCE - 4C 8D 61 E0           - lea r12,
143A6A3A7 - 41 89 87 A40F0000     - mov ,eax

1421D52BD - F7 B1 90000000        - div
1420FF3E0 - 8B 81 60040000        - mov eax,
143A8F300 - 8B 81 50080000        - mov eax,
143A6A564 - 41 89 87 A80F0000     - mov ,eax

givemeasmile01 發表於 2022-3-12 22:25:06

跟之前我逆向追的結果大差不差,自己加解密還是太麻煩了,於是大多數人還是直接hook函數結果.
但說到底我還是比較欣賞大佬這種的,有空能發個逆向過程感覺能幫助更多人深入研究。 感謝分享

eee369766509 發表於 2022-3-12 22:29:37

总么用这个吸怪
頁: [1]
查看完整版本: TwMS v241.2 怪物座標