デバッガ
Windowsを使うのが面倒だったので、普通に読んだ
0x1190にある以下の関数がメインの処理
GhidraであればFUN_00401190
https://gyazo.com/51fa83febeb9da21a675025ed5a49ca9
FUN_00401000が0を返すと、FLAGを出すっぽい
ifの外にある0x4022a2には何が入っているのかよくわからなかった
local_d, e, 14, 10と分割されてしまっているが、ここに入っている16進数はすべてASCII文字列として読めるので、これをつなげればFLAGが出る(順番に注意…メモリ上の並びをイメージしながら)
printfにわたっているのはlocal_14という変数だが、これは逆コンパイルの結果であって、実際にはNULLに出会うまでメモリの内容を出力していく
アセンブラを見るほうがわかりやすいかもしれない
せっかくなので、FUN_00401000も見てみよう
よくあるanti-debugging機構
https://gyazo.com/54b1d4e928e9950614668e8c51a035b8
プロセスの一覧を取得して(CreateToolhelp32Snapshot)、それぞれのプロセスについて見ていく(Process32FirstWで先頭のプロセスを取ってきて、ループ内部からProcess32NextWを読んで次のを取ってくる)
長いif文で、プロセス名を判別している
Ollydbg(デバッガ)、notepad(メモ帳)、iexplore, Wiresharkなどを開いていたらループを抜けてreturn
返り値がどこで操作されているのかわからん…
FUN_0040122bはおそらく関数のエピローグ(終了処理)