ugnagブログ

たいした内容はありません。思いつきで書いているだけ。
開発日記がメインかな。

<< お返事6 | main | ParCodeEditor Ver1.41リリース >>

英小文字の定数/変数判定

ふと気が付いた。
もしかしたら、判定できるかも。
もちろん、100%ではないが、高確率でいける気がする。



●暗号化されているコードの場合

 ●英字は全て大文字のみの場合(条件1)
  G-Zのみを小文字に変換

 ●英字は大文字と小文字が混在(条件2)
  そのまま
  (あえて区別してるのだから、信用する)

 ●英字は小文字のみでg-zを含む(条件3)
  a-fを大文字に変換
  (g-zを使っていながら、a-fの変数は使わないだろう。
   しかも全部小文字で)
 ●英字は小文字のみでg-zを含まない
  ●1〜2桁目にa-fがある場合(条件4)
   全て大文字へ変換
  (1桁目はコマンドであるため変数ということはあり得ない。
   2桁目も変数である可能性は非常に低い。
   それを小文字で書いているなら、英字は全て小文字というポリシーだと
   思われる)
  ●1〜2桁目にa-fがない場合
   ●2バイト目以降の1バイトの構成が異なる英字が存在する(条件5)
    (1cabcdefが該当、1caabbccや1c0a0b0cは非該当)
    全て大文字へ変換
    (暗号化コードで両桁が異なる変数というのはあり得ない)
   ●その他(条件6)
    判別不能


●暗号化されて無いコード

 ●英字は全て大文字のみの場合(条件7)
  G-Zのみを小文字に変換

 ●英字は大文字と小文字が混在(条件8)
  そのまま
  (あえて区別してるのだから、信用する)

 ●英字は小文字のみでg-zを含む(条件9)
  a-fを大文字に変換
  (g-zを使っていながら、a-fの変数は使わないだろう。しかも全部小文字で)
 ●英字は小文字のみでg-zを含まない
  ●1桁目にa-fがある場合(条件10)
   全て大文字へ変換
  (1桁目はコマンドであるため変数ということはあり得ない。
   それを小文字で書いているなら、英字は全て小文字というポリシーだと思われる)
  ●1桁目にa-fがない場合(条件11)
   判別不能


000000AF 000000XX → 000000AF 000000xx 条件7
00000axx 000000f0 → 00000Axx 000000F0 条件9
0000000a 0000000b → 0000000a 0000000b 条件11(判定不能)

4コードの2行目などは誤動作の可能性もあるが、まあ大丈夫だろう。
プログラム・開発(ParCodeEditor) | comments (3) | -

Comments

ugnag | 2006/06/09 05:27 PM
今見直したら、条件5や6って該当することってないかも。
ugnag | 2006/06/09 05:47 PM
よく考えたら、

a00000bb 00000000

で、bbが変数なんてないかなぁ?
でも、こんな書き方だと、人間だって前後を見ないと判断できないはず。
コメントからbbを探すのもなぁ。
しかも'bb='だったり'bb:'だったりいろいろだし、きりがない。

「こんな書き方するヤツが悪い」ということにしてしまおう。
ugnag | 2006/06/11 05:50 PM
順調です。
条件5と6は面倒なので省略しました。

あとは、テストして、zip化すればok。

予定通り、明日リリースできそうです。

Comment Form

本文に書いて下さい
本文にh抜きで書いて下さい