みけCATのにっき(仮)
つれづれなるまゝに、日くらし、PCにむかひて、心に移りゆくよしなし事を、そこはかとなく書きつくれば、あやしうこそものぐるほしけれ。
(本当か!?)
出典

Windows32 API Constance 検索の裏ワザ

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Windows32 API Constance 検索の裏ワザ

投稿記事 by みけCAT » 10年前

今回は、Windows32 API Constance 検索 Ver0.7 (apiconst)の裏ワザを紹介します。
バージョンアップ対策用WebArchive

裏ワザを使う前に、まずは普通にこのソフトウェアを利用してみましょう。
どのようなウィンドウスタイルがあるかを知るために、「WS_」で前方一致検索をしてみます。
apiconst_normal_ws.png
普通に「WS_」で前方一致(?)検索
apiconst_normal_ws.png (31.79 KiB) 閲覧数: 602 回
「WS_」で前方一致検索をしたはずなのに、WinSock関連のゴミが大量に引っかかってきました。
これは直感的な挙動ではないですね。

次に、このソフトウェアのセットにはdbファイルがあるので、とりあえず「'」で検索してみます。
apiconst_error.png
エラー
apiconst_error.png (32.76 KiB) 閲覧数: 604 回
すると、なぜかエラーになってしまいました。かなり欠陥があるソフトウェアのようですね。

さて、察しのいい人はここまでで裏ワザのコマンドがわかったでしょう。
それでも、裏ワザを紹介していきます。
これ以降のコマンドでは、コンボボックスの設定は全て「前方一致」「#define」にしました。

まずは、最初に失敗した前方一致検索に再挑戦します。

CODE:

' or Name glob 'WS_*' and '%'='
で検索します。
apiconst_waza_ws.png
裏ワザを使って「WS_」で前方一致検索
apiconst_waza_ws.png (33.43 KiB) 閲覧数: 583 回
こんどはゴミが引っかからず、きれいな検索結果が得られました。
「WS_*」の部分を変えることで、いろいろな検索ができるでしょう。

ここからは画像を省略します。

次に、知っておくと便利な情報を取得します。

CODE:

' union select 1,name,sql from sqlite_master --
で検索します。
すると、

CODE:

#define TConst	CREATE TABLE TConst (ID INTEGER PRIMARY KEY, Name, Const)
#define TValu	CREATE TABLE TValu (ID INTEGER PRIMARY KEY, wxpos, wypos)
と出てきました。

この情報を用いると、通常は名前→数値しか検索できないですが、数値→名前の逆引きが可能になります。
例えば、値が0x00001000である定数を検索してみましょう。

CODE:

' or Const='$00001000' and '%'='
で検索します。
結果は

CODE:

#define AA_A_OPEN	$00001000
#define BAUD_14400	$00001000
#define BEGIN_PATH	$00001000
#define BF_SOFT	$00001000
#define BIF_BROWSEFORCOMPUTER	$00001000
#define BINDF_SILENTOPERATION	$00001000
#define BS_PUSHLIKE	$00001000
#define CBF_FAIL_SELFCONNECTIONS	$00001000
#define CERT_CONFIDENCE_HYGIENE	$00001000
#define CERT_QUERY_CONTENT_FLAG_PFX	$00001000
#define CERT_STORE_LOCALIZED_NAME_PROP_ID	$00001000
#define CERT_STORE_MAXIMUM_ALLOWED_FLAG	$00001000
など、184件見つかりました。

さらに、種類と定数を両方指定しての逆引きもできます。例えば、

CODE:

' or (Name glob 'WS_*' and Const='$00080000') and '%'='
で検索すると、

CODE:

#define WS_EX_LAYERED	$00080000
#define WS_SYSMENU	$00080000
と出てきました。
これで、例えばActiveBasicで作ったファイルで、スタイルの数値の意味がわからなくても、調べられますね。

皆様も、この裏ワザを活用して、快適なWindows32 API 定数検索ライフを送りましょう!

YuO
記事: 947
登録日時: 14年前

Re: Windows32 API Constance 検索の裏ワザ

投稿記事 by YuO » 10年前

うわぁ……。

SQL Injection脆弱性ですね……。
LIKE検索はプレースホルダ使うにしても一筋縄ではいかないので,ちゃんと方法をしらないと思ったように動かないんですよね……。
さらに,バインド値をエスケープするにしても,そのエスケープ対象がDB依存という……。