制作日記

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

DTCで一度に1024文字以上出力すると落ちる原因

これもstatedefが長すぎて落ちるのと根本は同じ原因だねー
スタックオーバーフローでリターンアドレスがあぼん

目的の個所以外のリターンアドレスも弄ってしまうから、
そこらへんを戻してやる処理を加えれば、環境依存なしで任意のコード実行できるっぽい
statedefと違って、%nでコードを書き込む余裕もあるし

処理的には、↓の辺り
004132ADからのリターン先を書き換える
ただ、スタック上に数か所同じ文字列がぶち込まれてるから、そこのはみ出した分の補修が必要
そのぐらい任意のコードが実行できればどうとでもなるわな

MUGENって怖いね!


004131F0 /$ 81EC 04040000 SUB ESP,404
004131F6 |. 53 PUSH EBX
004131F7 |. 55 PUSH EBP
004131F8 |. 56 PUSH ESI
004131F9 |. 8BB424 1404000>MOV ESI,DWORD PTR SS:[ESP+414]
00413200 |. 57 PUSH EDI
00413201 |. 8B46 14 MOV EAX,DWORD PTR DS:[ESI+14]
00413204 |. 8B0E MOV ECX,DWORD PTR DS:[ESI]
00413206 |. 8B56 0C MOV EDX,DWORD PTR DS:[ESI+C]
00413209 |. 8B6E 08 MOV EBP,DWORD PTR DS:[ESI+8]
0041320C |. 8B1C81 MOV EBX,DWORD PTR DS:[ECX+EAX*4]
0041320F |. 8B8C24 1C04000>MOV ECX,DWORD PTR SS:[ESP+41C]
00413216 |. 8D8424 2004000>LEA EAX,DWORD PTR SS:[ESP+420]
0041321D |. 895424 10 MOV DWORD PTR SS:[ESP+10],EDX
00413221 |. 50 PUSH EAX
00413222 |. 8D5424 18 LEA EDX,DWORD PTR SS:[ESP+18]
00413226 |. 51 PUSH ECX
00413227 |. 52 PUSH EDX
00413228 |. E8 22FF0700 CALL winmugen.0049314F
0041322D |. 8BFB MOV EDI,EBX
0041322F |. 83C9 FF OR ECX,FFFFFFFF
00413232 |. 33C0 XOR EAX,EAX
00413234 |. 83C4 0C ADD ESP,0C
00413237 |. F2:AE REPNE SCAS BYTE PTR ES:[EDI]
00413239 |. 8A4424 14 MOV AL,BYTE PTR SS:[ESP+14]
0041323D |. 8D5424 14 LEA EDX,DWORD PTR SS:[ESP+14]
00413241 |. F7D1 NOT ECX
00413243 |. 49 DEC ECX
00413244 |. 84C0 TEST AL,AL
00413246 |. 74 57 JE SHORT winmugen.0041329F
00413248 |. 4D DEC EBP
00413249 |> 3BCD /CMP ECX,EBP
0041324B |. 7D 05 |JGE SHORT winmugen.00413252
0041324D |. 803A 0A |CMP BYTE PTR DS:[EDX],0A
00413250 |. 75 3B |JNZ SHORT winmugen.0041328D
00413252 |> C60419 00 |MOV BYTE PTR DS:[ECX+EBX],0
00413256 |. 8B4E 14 |MOV ECX,DWORD PTR DS:[ESI+14]
00413259 |. 41 |INC ECX
0041325A |. 894E 14 |MOV DWORD PTR DS:[ESI+14],ECX
0041325D |. 8B4C24 10 |MOV ECX,DWORD PTR SS:[ESP+10]
00413261 |. 394E 14 |CMP DWORD PTR DS:[ESI+14],ECX
00413264 |. 7C 07 |JL SHORT winmugen.0041326D
00413266 |. C746 14 000000>|MOV DWORD PTR DS:[ESI+14],0
0041326D |> 8B7E 14 |MOV EDI,DWORD PTR DS:[ESI+14]
00413270 |. 8B46 10 |MOV EAX,DWORD PTR DS:[ESI+10]
00413273 |. 3BF8 |CMP EDI,EAX
00413275 |. 75 0F |JNZ SHORT winmugen.00413286
00413277 |. 40 |INC EAX
00413278 |. 3BC1 |CMP EAX,ECX
0041327A |. 8946 10 |MOV DWORD PTR DS:[ESI+10],EAX
0041327D |. 7C 07 |JL SHORT winmugen.00413286
0041327F |. C746 10 000000>|MOV DWORD PTR DS:[ESI+10],0
00413286 |> 8B06 |MOV EAX,DWORD PTR DS:[ESI]
00413288 |. 33C9 |XOR ECX,ECX
0041328A |. 8B1CB8 |MOV EBX,DWORD PTR DS:[EAX+EDI*4]
0041328D |> 8A02 |MOV AL,BYTE PTR DS:[EDX]
0041328F |. 3C 0A |CMP AL,0A
00413291 |. 74 04 |JE SHORT winmugen.00413297
00413293 |. 880419 |MOV BYTE PTR DS:[ECX+EBX],AL
00413296 |. 41 |INC ECX
00413297 |> 8A42 01 |MOV AL,BYTE PTR DS:[EDX+1]
0041329A |. 42 |INC EDX
0041329B |. 84C0 |TEST AL,AL
0041329D |.^75 AA \JNZ SHORT winmugen.00413249
0041329F |> 5F POP EDI
004132A0 |. 5E POP ESI
004132A1 |. C60419 00 MOV BYTE PTR DS:[ECX+EBX],0
004132A5 |. 5D POP EBP
004132A6 |. 5B POP EBX
004132A7 |. 81C4 04040000 ADD ESP,404
004132AD \. C3 RETN

コメントの投稿

非公開コメント

No title

少し理解しただが、私は任意コードを実行のアドレスがわかりません、たとえver1.81が使うのアドレスをコーピするでも、mugenもまた落ちる、いったい何が足りないのが?私のコードは大丈夫だが、補修のコードもあるし。
プロフィール

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

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