制作日記

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

トップ

トップ
※申し訳ないですが、メールでの返信は出来ません。

DEP回避して任意コード実行
_reimu_ver191.ico

DTCリターンアドレス改竄テストキャラ(ver0.7xとは別物です)
_reimu_ver181.ico

MUGEN用プロセスメモリリーダ、memRead 最終更新 2013/11/17
memRead.ico
CUIアプリです、普通にアイコンをダブルクリックでも起動できます

リンクを右クリックして、「対象をファイルに保存」からダウンロード
ファイルの拡張子をrarに変えてから解凍してください

MUGENステコン入力支援マクロ
入力補完、短縮表記機能有り版(取説)
stateControl_2.js
入力補完、短縮表記機能なし版
stateControl_1.js
使い方とかはjsの先頭に書いてあるので、メモ帳で開くなりして読んでください

バグ報告等々コメントして頂けると助かります
公開物とそれらに関する情報の利用は、内容に依らず自由にして頂いて問題ないです

過去verは続きへ追いやられました

続きを読む

今期アニメ

セントールの悩みがぶっちぎりで一番やな

未就学児の水着着替えシーンをねっとり30秒かけて描く忠実な原作再現、ぐう有能


原作も同じ話をちょうど無料公開してるから、読んどくとええんやで
http://www.comic-ryu.jp/_centor/comic/17.html#5

ほんと予想以上に出来が良くて満足
他の漫画原作系で良いのはメイドインアビス、徒然チルドレン辺りか

DTCの%fがどうの

それ自体はどうでも良い
%gとか%eでも呼ばれるよ、とかもどうでも良いんだけど

[[char+0x345C]+0x4]を実行するのがテンプレなんかね
それで良いんですかねぇ
あそこはDTCで出力した文字列がそのまま保存されるわけじゃないんだけどなあ

[char+0x345C]は表示文字列の保存場所で

[[char+0x345C]+0x4]は文字列保存用の配列で行ごとに分割して保存、char*
[[char+0x345C]]は分割した各文字列へのアドレスの配列、char*[]

[[char+0x345C]+0x8]は一行の文字数
[[char+0x345C]+0xC]は行数

[[char+0x345C]+0x10]は
分割した各文字列へのアドレスの配列について、先頭行のアドレスを保存しているindex
[[char+0x345C]+0x14]は
分割した各文字列へのアドレスの配列について、表示する要素数 - 1
ここが1なら、[[char+0x345C]+0x10]のindexの文字列とindex + 1の文字列を表示する、2ならindex + 2まで
サイクリックに保存しているから先頭のindexが0でない場合もあるから、正確には(index + n) mod 行数


デカいcharの配列を1つ確保して、[[char+0x345C]+0x4]にアドレス保存
行ごとに適当に分割してそこに保存していく
自動改行以外にも\nで明示的に改行した場合も分割される
自動改行の場合は概ね文字列の分割位置をずらして対応する
\nのほうは既に分割されてる境界に合わせて保存する

"ABCDE"という文字列があったとしてCとDの間が自動改行されるとしたら
"ABC"と"DE"の間にnull文字が挿入されるだけで、連続した領域に保存される
対して"ABC\nDE"だと
"ABC"と"DE"が連続せず別々に保存される、自動改行と違って間にnull文字が1個入るだけではない

つまるところ、デバッグ表示の場合は1行が0x4D文字だから
それ以上のコードを埋め込もうとしても、0x4Dのとこで勝手にnull終端される
\n=0x0Aが入っても分割される

コードはここやぞ
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

思い出した

記事書いた後すぐにやりかた忘れてたけど、ふと思い出した
text="%c%*d%n%"
params=0,4094,0,4931584

原因は知らんが%.*dにしたら落ちるから、最低でも2文字出力

アセンブラ書く人が増えて

嬉しいんやなって

textの文字列直接実行はステコンまとめる必要性を感じなくて、そういう発想自体なかった
16進からDTCのステコン吐くプログラム自前で書いてるから、それで事足りるし

真っ当?なキャラ製作者の観点も大切やねんなって思った
どこから真っ当と言っていいのかは甚だ疑問だけども

あと新でも出来そうなのは利点かね
新の方は幅指定できないから、馬鹿正直に1024byte埋めないとだめだけど


そんなこんなで久しぶりにMUGEN起動して全然関係ないことしてた
一部、拡張子でファイル種別判別してんのな
だから、spriteで指定するファイルはsffとかpcxにせんとあかんのか
sffぐらい自動判別して頂戴よ

ここね、xmなんてのもあるんやな
00418250  /$ 55             PUSH EBP
00418251 |. 8B6C24 08 MOV EBP,DWORD PTR SS:[ESP+8]
00418255 |. 56 PUSH ESI
00418256 |. 57 PUSH EDI
00418257 |. 8BFD MOV EDI,EBP
00418259 |. 83C9 FF OR ECX,FFFFFFFF
0041825C |. 33C0 XOR EAX,EAX
0041825E |. F2:AE REPNE SCAS BYTE PTR ES:[EDI]
00418260 |. F7D1 NOT ECX
00418262 |. 49 DEC ECX
00418263 |. 8BF1 MOV ESI,ECX
00418265 |. 83FE 04 CMP ESI,4
00418268 |. 0F8E 02010000 JLE winmugen.00418370
0041826E |. 807C2E FC 2E CMP BYTE PTR DS:[ESI+EBP-4],2E
00418273 |. 0F85 F7000000 JNZ winmugen.00418370
00418279 |. 8D7C2E FD LEA EDI,DWORD PTR DS:[ESI+EBP-3]
0041827D |. 68 68424A00 PUSH winmugen.004A4268 ; ASCII "pcx"
00418282 |. 57 PUSH EDI
00418283 |. E8 085D0800 CALL winmugen.0049DF90
00418288 |. 83C4 08 ADD ESP,8
0041828B |. 85C0 TEST EAX,EAX
0041828D |. 75 09 JNZ SHORT winmugen.00418298
0041828F |. 5F POP EDI
00418290 |. 5E POP ESI
00418291 |. B8 01000000 MOV EAX,1
00418296 |. 5D POP EBP
00418297 |. C3 RETN
00418298 |> 68 6C424A00 PUSH winmugen.004A426C ; ASCII "sff"
0041829D |. 57 PUSH EDI
0041829E |. E8 ED5C0800 CALL winmugen.0049DF90
004182A3 |. 83C4 08 ADD ESP,8
004182A6 |. 85C0 TEST EAX,EAX
004182A8 |. 75 09 JNZ SHORT winmugen.004182B3
004182AA |. 5F POP EDI
004182AB |. 5E POP ESI
004182AC |. B8 02000000 MOV EAX,2
004182B1 |. 5D POP EBP
004182B2 |. C3 RETN
004182B3 |> 68 70424A00 PUSH winmugen.004A4270 ; ASCII "wav"
004182B8 |. 57 PUSH EDI
004182B9 |. E8 D25C0800 CALL winmugen.0049DF90
004182BE |. 83C4 08 ADD ESP,8
004182C1 |. 85C0 TEST EAX,EAX
004182C3 |. 75 09 JNZ SHORT winmugen.004182CE
004182C5 |. 5F POP EDI
004182C6 |. 5E POP ESI
004182C7 |. B8 03000000 MOV EAX,3
004182CC |. 5D POP EBP
004182CD |. C3 RETN
004182CE |> 68 74424A00 PUSH winmugen.004A4274 ; ASCII "snd"
004182D3 |. 57 PUSH EDI
004182D4 |. E8 B75C0800 CALL winmugen.0049DF90
004182D9 |. 83C4 08 ADD ESP,8
004182DC |. 85C0 TEST EAX,EAX
004182DE |. 75 09 JNZ SHORT winmugen.004182E9
004182E0 |. 5F POP EDI
004182E1 |. 5E POP ESI
004182E2 |. B8 04000000 MOV EAX,4
004182E7 |. 5D POP EBP
004182E8 |. C3 RETN
004182E9 |> 68 78424A00 PUSH winmugen.004A4278 ; ASCII "mp3"
004182EE |. 57 PUSH EDI
004182EF |. E8 9C5C0800 CALL winmugen.0049DF90
004182F4 |. 83C4 08 ADD ESP,8
004182F7 |. 85C0 TEST EAX,EAX
004182F9 |. 75 09 JNZ SHORT winmugen.00418304
004182FB |. 5F POP EDI
004182FC |. 5E POP ESI
004182FD |. B8 05000000 MOV EAX,5
00418302 |. 5D POP EBP
00418303 |. C3 RETN
00418304 |> 68 7C424A00 PUSH winmugen.004A427C ; ASCII "mid"
00418309 |. 57 PUSH EDI
0041830A |. E8 815C0800 CALL winmugen.0049DF90
0041830F |. 83C4 08 ADD ESP,8
00418312 |. 85C0 TEST EAX,EAX
00418314 |. 75 09 JNZ SHORT winmugen.0041831F
00418316 |. 5F POP EDI
00418317 |. 5E POP ESI
00418318 |. B8 06000000 MOV EAX,6
0041831D |. 5D POP EBP
0041831E |. C3 RETN
0041831F |> 68 80424A00 PUSH winmugen.004A4280 ; ASCII "mod"
00418324 |. 57 PUSH EDI
00418325 |. E8 665C0800 CALL winmugen.0049DF90
0041832A |. 83C4 08 ADD ESP,8
0041832D |. 85C0 TEST EAX,EAX
0041832F |. 75 09 JNZ SHORT winmugen.0041833A
00418331 |. 5F POP EDI
00418332 |. 5E POP ESI
00418333 |. B8 07000000 MOV EAX,7
00418338 |. 5D POP EBP
00418339 |. C3 RETN
0041833A |> 68 84424A00 PUSH winmugen.004A4284 ; ASCII "s3m"
0041833F |. 57 PUSH EDI
00418340 |. E8 4B5C0800 CALL winmugen.0049DF90
00418345 |. 83C4 08 ADD ESP,8
00418348 |. 85C0 TEST EAX,EAX
0041834A |. 75 09 JNZ SHORT winmugen.00418355
0041834C |. 5F POP EDI
0041834D |. 5E POP ESI
0041834E |. B8 07000000 MOV EAX,7
00418353 |. 5D POP EBP
00418354 |. C3 RETN
00418355 |> 68 88424A00 PUSH winmugen.004A4288 ; ASCII "zip"
0041835A |. 57 PUSH EDI
0041835B |. E8 305C0800 CALL winmugen.0049DF90
00418360 |. 83C4 08 ADD ESP,8
00418363 |. 85C0 TEST EAX,EAX
00418365 |. 75 09 JNZ SHORT winmugen.00418370
00418367 |. 5F POP EDI
00418368 |. 5E POP ESI
00418369 |. B8 09000000 MOV EAX,9
0041836E |. 5D POP EBP
0041836F |. C3 RETN
00418370 |> 83FE 03 CMP ESI,3
00418373 |. 7E 41 JLE SHORT winmugen.004183B6
00418375 |. 807C2E FD 2E CMP BYTE PTR DS:[ESI+EBP-3],2E
0041837A |. 75 3A JNZ SHORT winmugen.004183B6
0041837C |. 8D742E FE LEA ESI,DWORD PTR DS:[ESI+EBP-2]
00418380 |. 68 8C424A00 PUSH winmugen.004A428C ; ASCII "xm"
00418385 |. 56 PUSH ESI
00418386 |. E8 055C0800 CALL winmugen.0049DF90
0041838B |. 83C4 08 ADD ESP,8
0041838E |. 85C0 TEST EAX,EAX
00418390 |. 75 09 JNZ SHORT winmugen.0041839B
00418392 |. 5F POP EDI
00418393 |. 5E POP ESI
00418394 |. B8 07000000 MOV EAX,7
00418399 |. 5D POP EBP
0041839A |. C3 RETN
0041839B |> 68 90424A00 PUSH winmugen.004A4290 ; ASCII "da"
004183A0 |. 56 PUSH ESI
004183A1 |. E8 EA5B0800 CALL winmugen.0049DF90
004183A6 |. 83C4 08 ADD ESP,8
004183A9 |. 85C0 TEST EAX,EAX
004183AB |. 75 09 JNZ SHORT winmugen.004183B6
004183AD |. 5F POP EDI
004183AE |. 5E POP ESI
004183AF |. B8 08000000 MOV EAX,8
004183B4 |. 5D POP EBP
004183B5 |. C3 RETN
004183B6 |> 5F POP EDI
004183B7 |. 5E POP ESI
004183B8 |. 33C0 XOR EAX,EAX
004183BA |. 5D POP EBP
004183BB \. C3 RETN
プロフィール

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

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