制作日記

こういうの作った方が、逃げにくいじゃない

ダメージ計算

そういや、gethitvar(damage)なんてトリガーあったな
使ったことないから、実際の意味合いは知らんけど、要は受けてる攻撃のダメージやろ
そんなトリガーがあるなら、静的解析だけでも割と調べられるんじゃね?
と、思って軽く調べてみた

+0x1028がgethitvar(damage)で、多段ヒットがあることを考慮すれば、
実際の処理は置いといても、そこに値を足し込む処理があるだろうなってことは予想できる

あとはgrepかけて
+0x1028に値を足し込むか、
取り出して足し算して入れ込む処理を探すだけ

grep結果

0041B192 81C428100000 add esp, 00001028h
0041B1F2 81C428100000 add esp, 00001028h
0041B252 81C428100000 add esp, 00001028h
00439A6A 8B9128100000 mov edx, [ecx+00001028h]
00441624 399E28100000 cmp [esi+00001028h], ebx
004416A5 899E28100000 mov [esi+00001028h], ebx
004416AD 899E28100000 mov [esi+00001028h], ebx
0044392A 8B8B28100000 mov ecx, [ebx+00001028h]
00443972 8B8B28100000 mov ecx, [ebx+00001028h]
00443A4F 8B8B28100000 mov ecx, [ebx+00001028h]
00443A97 8B8B28100000 mov ecx, [ebx+00001028h]
00444C1D 8B8D28100000 mov ecx, [ebp+00001028h]
00444C66 89B528100000 mov [ebp+00001028h], esi
00444C76 898528100000 mov [ebp+00001028h], eax
00444FB9 8B8E28100000 mov ecx, [esi+00001028h]
00445008 899E28100000 mov [esi+00001028h], ebx
00445E20 8B8D28100000 mov ecx, [ebp+00001028h]
00445E69 8B8528100000 mov eax, [ebp+00001028h]
00445F38 8B8D28100000 mov ecx, [ebp+00001028h]
00445F81 8B8528100000 mov eax, [ebp+00001028h]
0047C0F1 8B9628100000 mov edx, [esi+00001028h]


+0x1028に入れてる個所は数か所あるけど、
値の取り出しとか命令のアドレス的に、ここやろな

00444FB9 8B8E28100000 mov ecx, [esi+00001028h]
00445008 899E28100000 mov [esi+00001028h], ebx


それが下に載せてるらへん、実際にはもっと前からやけど読むの面倒
掛けて0.5足してサブルーチン読んでる、サブルーチンの中身は切り捨てやし四捨五入
で、戻り値eaxを+0x1028の値と足してる
それっぽい

あとは1個目の命令の [edi+3Ch]に何が入ってるか調べれば良いんじゃね


00444F9D 8B6F3C mov ebp, [edi+3Ch]
00444FA0 896C2420 mov [esp+20h], ebp
00444FA4 DB442420 fild dword ptr [esp+20h]
00444FA8 D88E8C010000 fmul dword ptr [esi+0000018Ch]
00444FAE DC0500F34900 fadd qword ptr [0049F300h] ; 0.5
00444FB4 E8F3D20400 call 004922ACh
00444FB9 8B8E28100000 mov ecx, [esi+00001028h]
00444FBF 8BD8 mov ebx, eax
00444FC1 03D9 add ebx, ecx
00444FC3 83FD01 cmp ebp, 01h
00444FC6 7C09 jl 00444FD1h
00444FC8 85DB test ebx, ebx
00444FCA 7505 jnz 00444FD1h
00444FCC BB01000000 mov ebx, 00000001h

* Referenced by an (U)nconditional or (C)onditional Jump or (c)all at Address:
| 00444FC6(C), 00444FCA(C)
|
00444FD1 8B4728 mov eax, [edi+28h]
00444FD4 85C0 test eax, eax
00444FD6 7526 jnz 00444FFEh
00444FD8 56 push esi
00444FD9 E8824AFFFF call 00439A60h
00444FDE 2BC3 sub eax, ebx
00444FE0 83C404 add esp, 04h
00444FE3 83F801 cmp eax, 01h
00444FE6 7D16 jge 00444FFEh
00444FE8 8B86240E0000 mov eax, [esi+00000E24h]
00444FEE 85C0 test eax, eax
00444FF0 740C jz 00444FFEh
00444FF2 56 push esi
00444FF3 E8684AFFFF call 00439A60h
00444FF8 8BD8 mov ebx, eax
00444FFA 83C404 add esp, 04h
00444FFD 4B dec ebx

* Referenced by an (U)nconditional or (C)onditional Jump or (c)all at Address:
| 00444FD6(C), 00444FE6(C), 00444FF0(C)
|
00444FFE 8B461C mov eax, [esi+1Ch]
00445001 BA01000000 mov edx, 00000001h
00445006 3BC2 cmp eax, edx
00445008 899E28100000 mov [esi+00001028h], ebx
0044500E 7508 jne 00445018h
00445010 399628260000 cmp [esi+00002628h], edx
00445016 754B jne 00445063h

コメントの投稿

非公開コメント

プロフィール

Author:drab
霊夢改変キャラ
「12 3 ! {V} [_]」
公開中
L霊夢でもl_reimuでも好きなように読んでください

最新記事
最新コメント
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク