制作日記

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

トップ

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

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は続きへ追いやられました

続きを読む

ライブラリのリンクとか

アセンブラ書くのって面倒なのよ

mugen起動するとかぐらいなら、文字列埋め込んで引数渡してexec叩くだけだから簡単(だと思う)
スレッド作るのは、それだけならなんとか
呼び出し規約とか気を付ける必要はあるけど、関数用意してスレッド作成の関数に渡すだけやろ?

子プロセス起動して云々やりだすと面倒?
というか、SAM氏のとこのコメントに子プロセス起動と書いたけど、windowsってforkないんだっけ?
CreateProcessとかexe起動だけやったっけ
なら、子プロセス起動って自作のexe起動しか選択肢ないのか
ここは自分が良くLinux向けの開発やってるせいで、間違えてたわ

となると、ライブラリのリンクいらないんじゃね?
アセンブラで自作モジュール起動するだけでええやん
アセンブラでファイル探索書くのめんどい?

ライブラリリンクする明確な利点は
メッセージも取ったり、スレッド立てたりとかか

ああ、でも子プロセス起動するにもwinmmugenからCreateProcessのsymbol参照してないしなぁ
GetProcAddress叩かないとか
CreateProcessの引数積むのも面倒だし
子プロセス作るためだけでもライブラリをリンクしてCから関数呼んだ方が楽か

コメント

思った以上に長いし、適当すぎた
こっちにちゃんと書くべきやった

まあ、ええわ

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文字出力
プロフィール

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

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