3-2.制御フロー解析

3-2-1.制御フロー解析の可視化

関数の呼び出し関係に基づいてAPIを抽出するのではなく、コンパイラが最適化のために行う制御フロー解析を応用してプログラムを解析して特徴を抽出する。この方法ならば関数の内部の分岐やループなども対象となるので、リスト3-1-4-1リスト3-1-4-2のプログラムのように関数内部でのコードの順番に依存しない結果が得られる。しかしどちらを先に行ってもプログラムの機能が同一であるという場合に、その順番を入れ換えた場合には同一の結果は得られない。

リスト3-1-2-1のプログラムを制御フロー解析した場合にはグラフ3-2-1-1のようになる。

グラフ3-2-1-1
digraph "g" {
  "block1" -> "block2";
  "block1" -> "block3";
  "block2" -> "block1";
  "block3" -> "block4";
  "block3" -> "block5";
  "block4" -> "block5";
  "block5" -> "block5";
  "block2" [label = "block2\nApiB"];
  "block4" [label = "block4\nApiA"];
  "block5" [label = "block5\nApiC"];
}

グラフ3-2-1-1

制御フロー解析を行い可視化するスクリプトctlflw.plを作成した。ctlflw.plIDA Proの出力結果からGraphvizのデータを作る。グラフは関数ごとにサブグラフを作るようにした。W32/Bagleの亜種とW32/Korgoの亜種、W32/Mydoomの亜種、W32/Netskyの亜種、Text maidの各バージョン、ネットワーク関連のプログラムについてctlflw.plを用いてグラフを作った。(しかしこれらのグラフはあまりにも大きいため、多くは後述の400行の制限に該当する。)

表3-2-1-1 W32/Bagleの各亜種の制御フロー解析グラフ
名称IDA Pro出力Graphvizグラフ
W32/Bagle.A w32bg__a.lstw32bg__a.dot w32bg__a.png
W32/Bagle.B w32bg__b.lstw32bg__b.dot w32bg__b.png
W32/Bagle.C w32bg__c.lstw32bg__c.dot w32bg__c.png
W32/Bagle.D w32bg__d.lstw32bg__d.dot w32bg__d.png
W32/Bagle.J w32bg__j.lstw32bg__j.dot w32bg__j.png
W32/Bagle.K w32bg__k.lstw32bg__k.dot w32bg__k.png
W32/Bagle.N w32bg__n.lstw32bg__n.dot w32bg__n.png
W32/Bagle.P w32bg__p.lstw32bg__p.dot w32bg__p.png
W32/Bagle.Q w32bg__q.lstw32bg__q.dot w32bg__q.png
W32/Bagle.R w32bg__r.lstw32bg__r.dot w32bg__r.png
W32/Bagle.S w32bg__s.lstw32bg__s.dot w32bg__s.png
W32/Bagle.T w32bg__t.lstw32bg__t.dot w32bg__t.png
W32/Bagle.X w32bg__x.lstw32bg__x.dot w32bg__x.png
W32/Bagle.Z w32bg__z.lstw32bg__z.dot w32bg__z.png
W32/Bagle.AA w32bg_aa.lstw32bg_aa.dot w32bg_aa.png
W32/Bagle.AD w32bg_ad.lstw32bg_ad.dot w32bg_ad.png
W32/Bagle#115w32bg115.lstw32bg115.dot w32bg115.png
表3-2-1-2 W32/korgoの各亜種の制御フロー解析グラフ
名称IDA Pro出力Graphvizグラフ
W32/Korgo.A w32krg_a.lstw32krg_a.dotw32krg_a.png
W32/Korgo.B w32krg_b.lstw32krg_b.dotw32krg_b.png
W32/Korgo.C w32krg_c.lstw32krg_c.dotw32krg_c.png
W32/Korgo.E w32krg_e.lstw32krg_e.dotw32krg_e.png
W32/Korgo.G w32krg_g.lstw32krg_g.dotw32krg_g.png
W32/Korgo.N w32krg_n.lstw32krg_n.dotw32krg_n.png
W32/Korgo.P w32krg_p.lstw32krg_p.dotw32krg_p.png
W32/Korgo.Q w32krg_q.lstw32krg_q.dotw32krg_q.png
W32/Korgo.R w32krg_r.lstw32krg_r.dotw32krg_r.png
W32/Korgo.S w32krg_s.lstw32krg_s.dotw32krg_s.png
W32/Korgo.T w32krg_t.lstw32krg_t.dotw32krg_t.png
W32/Korgo.V w32krg_v.lstw32krg_v.dotw32krg_v.png
W32/Korgo.Z w32krg_z.lstw32krg_z.dotw32krg_z.png
W32/Korgo.AAw32krgaa.lstw32krgaa.dotw32krgaa.png
W32/Korgo.ABw32krgab.lstw32krgab.dotw32krgab.png
W32/Korgo.ACw32krgac.lstw32krgac.dotw32krgac.png
表3-2-1-3 W32/Mydoomの各亜種の制御フロー解析グラフ
名称IDA Pro出力Graphvizグラフ
W32/Mydoom.A w32myd_a.lstw32myd_a.dotw32myd_a.png
W32/Mydoom.B w32myd_b.lstw32myd_b.dotw32myd_b.png
W32/Mydoom.F w32myd_f.lstw32myd_f.dotw32myd_f.png
W32/Mydoom.G w32myd_g.lstw32myd_g.dotw32myd_g.png
W32/Mydoom.H w32myd_h.lstw32myd_h.dotw32myd_h.png
W32/Mydoom.L w32myd_l.lstw32myd_l.dotw32myd_l.png
W32/Mydoom.N w32myd_n.lstw32myd_n.dotw32myd_n.png
W32/Mydoom.O w32myd_o.lstw32myd_o.dotw32myd_o.png
W32/Mydoom.R w32myd_r.lstw32myd_r.dotw32myd_r.png
W32/Mydoom.S w32myd_s.lstw32myd_s.dotw32myd_s.png
W32/Mydoom.T w32myd_t.lstw32myd_t.dotw32myd_t.png
W32/Mydoom.X w32myd_x.lstw32myd_x.dotw32myd_x.png
W32/Mydoom.AFw32mydaf.lstw32mydaf.dotw32mydaf.png
W32/Mydoom.AMw32mydam.lstw32mydam.dotw32mydam.png
W32/Mydoom.BHw32mydbh.lstw32mydbh.dotw32mydbh.png
W32/Mydoom.BNw32mydbn.lstw32mydbn.dotw32mydbn.png
W32/Mydoom#46w32myd46.lstw32myd46.dotw32myd46.png
表3-2-1-4 W32/Netskyの各亜種の制御フロー解析グラフ
名称IDA Pro出力Graphvizグラフ
W32/Netsky.Bw32nts_b.lstw32nts_b.dotw32nts_b.png
W32/Netsky.Lw32nts_l.lstw32nts_l.dotw32nts_l.png
W32/Netsky.Mw32nts_m.lstw32nts_m.dotw32nts_m.png
W32/Netsky.Ow32nts_o.lstw32nts_o.dotw32nts_o.png
W32/Netsky.Ww32nts_w.lstw32nts_w.dotw32nts_w.png
表3-2-1-5 Text maidの各バージョンの制御フロー解析グラフ
名称IDA Pro出力Graphvizグラフ
Text maid 1.9Etm019eja.lsttm019eja.dot tm019eja.png
Text maid 1.9Ftm019fja.lsttm019fja.dot tm019fja.png
Text maid 1.9Gtm019gja.lsttm019gja.dot tm019gja.png
Text maid 1.9Htm019hja.lsttm019hja.dot tm019hja.png
Text maid 1.9Itm019ija.lsttm019ija.dot tm019ija.png
Text maid 1.9Jtm019jja.lsttm019jja.dot tm019jja.png
Text maid 1.9Ktm019kja.lsttm019kja.dot tm019kja.png
Text maid 1.9Ltm019lja.lsttm019lja.dot tm019lja.png
Text maid 1.9Mtm019mja.lsttm019mja.dot tm019mja.png
Text maid 1.9Ntm019nja.lsttm019nja.dot tm019nja.png
Text maid 1.9Otm019oja.lsttm019oja.dot tm019oja.png
Text maid 1.9Ptm019pja.lsttm019pja.dot tm019pja.png
Text maid 1.9Qtm019qja.lsttm019qja.dot tm019qja.png
Text maid 1.9Rtm019rja.lsttm019rja.dot tm019rja.png
Text maid 1.9Stm019sja.lsttm019sja.dot tm019sja.png
Text maid 1.9Ttm019tja.lsttm019tja.dot tm019tja.png
Text maid 1.9Utm019uja.lsttm019uja.dot tm019uja.png
表3-2-1-6 ネットワーク関連プログラムの制御フロー解析グラフ
名称IDA Pro出力Graphvizグラフ
fingerfinger.lstfinger.dotfinger.png
ftp ftp.lst ftp.dot ftp.png
ping ping.lst ping.dot ping.png
telnettelnet.lsttelnet.dottelnet.png
tftp tftp.lst tftp.dot tftp.png

3-2-2.制御フロー解析の共通構造の発見

2つのctlflw.plの出力である有向グラフを比較して共通構造を発見するC言語のプログラムgm.cを作成した。gm.cはすべてのノードの組み合わせを列挙して最も共通するエッジが多い組み合わせを求める。単純に全パターンを計算すると効率が悪いので次のような工夫をした。

  1. 予め探索の深度毎に残りのエッジの数を計算しておく
  2. 探索する毎にエッジが一致/不一致することが確定した部分を計算し、残りのエッジがすべて一致したと仮定して最後まで探索したときの一致数を求める
  3. 2の点数がすでにわかっている最大の一致数以下ならば探索を打ち切る
  4. エッジを多く持つノードから順番に探索する

gm.cグラフ3-2-2-1グラフ3-2-2-2の共通構造を探した場合、出力結果はグラフ3-2-2-3になる。

グラフ3-2-2-1
digraph "g" {
  "0" -> "1";
  "1" -> "2";
  "1" -> "3";
  "2" -> "4";
  "2" -> "5";
}

グラフ3-2-2-1

グラフ3-2-2-2
digraph "g" {
  "a" -> "b";
  "b" -> "c";
  "b" -> "d";
  "d" -> "e";
  "e" -> "d";
  "e" -> "g";
  "f" -> "d";
  "f" -> "g";
}

グラフ3-2-2-2

グラフ3-2-2-3
digraph "g" {
  "0-0000" -> "0-0001";
  "0-0000" -> "0-0003";
  "0-0000" [label = "1\nb"];
  "0-0001" -> "0-0004";
  "0-0001" -> "0-0005" [color = red];
  "0-0001" [label = "2\nd"];
  "0-0002" -> "0-0000";
  "0-0002" [label = "0\na"];
  "0-0003" [label = "3\nc"];
  "0-0004" [label = "4\ne"];
  "0-0005" [label = "5", color = red, fontcolor = red];
  "0-0004" -> "0-0001" [color = blue];
  "0-0004" -> "1-0003" [color = blue];
  "1-0003" [label = "g", color = blue, fontcolor = blue];
  "1-0004" -> "0-0001" [color = blue];
  "1-0004" -> "1-0003" [color = blue];
  "1-0004" [label = "f", color = blue, fontcolor = blue];
}

グラフ3-2-2-3

グラフ3-2-2-1グラフ3-2-2-2のようにノードの数が数個程度ならば計算には時間がかからない。しかし計算量はおおよそノードの数の階乗に比例して計算量が増加する。制御フロー解析の結果はノードの数が100を越えるので現在のPCでは計算困難である。

3-2-3.グラフ同型判定問題

制御フロー解析の共通構造の発見とは、2つのグラフG1とG2が与えられたとき、G1とG2の部分グラフのうち同型となる最大のグラフを求める問題である。この問題は部分グラフ同型判定問題[12]を含んでいる。部分グラフ同型判定問題とは2つのグラフG1とG2与えられたとき、G1がG2の部分グラフと同型か否かを判定する問題である。部分グラフ同型判定問題はNP完全なので計算困難である。計算困難とされる部分グラフ同型判定問題を含んでいるこの問題もまた計算困難である。

一方、グラフ同型判定問題はNP完全にはならないと考えられる[13]。グラフ同型判定問題は部分グラフ同型判定問題に比べて計算量は少なくなると考えられる。ゆえにグラフ同型判定の利用を検討する。

3-2-4.同一構造の関数の発見

ctlflw.plによる制御フロー解析の結果は関数ごとにサブグラフを出力する。ここに注目してサブグラフ同士の比較を行い、一致するサブグラフに含まれるノードの数からコンピュータウイルスの比較を行うC言語のプログラムgeq.cを作成した。geq.cは任意の数の逆アセンブルリストを比較してHTML形式のテーブルを出力する。geq.cはサブグラフにならない関数(即ち、1つのノードだけで構成される関数)は比較の対象としない。

表3-2-4-1はW32/Bagleの各亜種、表3-2-4-2はW32/Korgoの各亜種、表3-2-4-3はW32/Mydoomの各亜種、表3-2-4-4はW32/Netskyの各亜種、表3-2-4-5Text maidの各バージョンについてgeq.cを用いて比較を行い距離を求めた表である。Text maidはコンピュータウイルスではないが各バージョンを亜種とみなし比較を行った。また表3-2-4-6は誤認が生じないか確かめるために各亜種とネットワーク関連のプログラムの比較を行った表である。

サブグラフにならない関数も含めて、またサブグラフをまたぐエッジも含めて全体が同型となる場合には項目を1つにまとめる。3-1-3.API抽出の比較とは異なり出力結果で距離が0になることもありうる。

表3-2-4-1 W32/Bagleの各亜種間の距離
a c j n p q r x z aa ad
115 8909 9822 8154 8053 8056 8041 8081 9822 7973 7997 7961
a 9753 4533 6521 6533 6553 6685 9755 6737 6666 6706
c 9706 9799 9800 9801 9801 2012 9778 9772 9761
j 4674 4690 4716 4828 9708 4578 4500 4836
n 291 1036 1327 9800 4062 4163 4345
p 1057 1347 9800 4077 4178 4360
q 288 9802 3851 3949 4123
r 9801 3946 4045 4223
x 9779 9773 9762
z 593 1148
aa 870
表3-2-4-2 W32/Korgoの各亜種間の距離
b c e g n p q r s t v z ab
a 2781 5459 9136 9141 9141 9285 9284 9292 9067 9284 9285 9064 9312
b 5459 9136 9141 9141 9285 9284 9292 9067 9284 9285 9064 9312
c 8650 8657 8657 8810 8808 8820 8609 8808 8810 8605 8852
e 1095 1866 4780 4774 4817 1739 4774 4780 1715 4936
g 1171 4805 4799 4841 1403 4799 4805 1378 4959
n 4805 4799 4841 2139 4799 4805 2116 4959
p 896 1436 4584 1522 1534 4205 2438
q 1227 4578 1310 1322 4198 2235
r 4241 916 929 4602 1847
s 4195 4202 810 4366
t 270 4559 1220
v 4565 958
z 4720
表3-2-4-3 W32/Mydoomの各亜種間の距離
a b f g l o r s t af ag am bh bn
46 9817 8165 8048 8088 9064 9016 557 9904 9595 9710 8825 7198 1826 9662
a 9589 9744 9747 9856 9850 9805 9897 9872 9877 9819 9775 9785 9911
b 7218 6750 8434 7930 8575 9914 9829 9813 4838 6290 8202 9854
f 5243 7221 7116 7859 9937 9592 9656 7454 5546 8761 9660
g 7142 6577 7901 9937 9739 9740 7010 5139 8702 9818
l 4637 8929 9939 9787 9787 8536 7725 8953 9804
o 8997 9902 9807 9847 8055 7149 9077 9826
r 9900 9596 9684 8845 7334 1627 9665
s 5247 6043 9875 9909 9893 9701
t 1694 9844 9582 9795 9011
af 9835 9676 9819 9294
ag 4082 8522 9869
am 8120 9646
bh 9813
表3-2-4-4 W32/Netskyの各亜種間の距離
l m o w
b9772 9771 8207 7627
l 1540 9789 9812
m 9788 9811
o 2128
表3-2-4-5 Text maidの各バージョン間の距離
f g h ilo p q s t u
e 3679 6163 6171 6158 6161 6165 6177 9896 9969 9900 9900
f 4651 4660 4643 4648 4653 4667 9906 9972 9910 9910
g 3947 4641 4646 4651 4665 9906 9972 9910 9910
h 4651 4655 4660 4675 9907 9972 9910 9910
i 703 3065 3084 9906 9972 9909 9909
l 2360 3090 9906 9972 9910 9910
o 736 9906 9972 9910 9910
p 9870 9972 9874 9874
q 8091 7445 7444
s 6745 6461
t 282
表3-2-4-6 全体の距離
ftp ping telnet tftp tm019eja tm019fja tm019gja tm019hja tm019ija tm019jja tm019kjatm019lja tm019mja tm019njatm019oja tm019pja tm019qja tm019rja tm019sja tm019tja tm019uja w32bg115 w32bg__a w32bg__b w32bg__c w32bg__d w32bg__j w32bg__k w32bg__n w32bg__p w32bg__q w32bg__s w32bg__tw32bg__r w32bg__x w32bg__z w32bg_aa w32bg_ad w32krg_a w32krg_b w32krg_c w32krg_e w32krg_g w32krg_n w32krg_p w32krg_q w32krg_r w32krg_s w32krg_t w32krg_v w32krgaa w32krgacw32krg_z w32krgab w32myd46 w32myd_a w32myd_b w32myd_f w32myd_g w32myd_h w32myd_l w32myd_n w32myd_o w32myd_r w32myd_x w32myd_s w32myd_t w32mydaf w32mydag w32mydam w32mydbh w32mydbn w32nts_b w32nts_l w32nts_m w32nts_o w32nts_w
finger 9585 9634 9757 9711 9938 9949 9949 9950 9949 9949 9949 9950 10000 10000 10000 10000 9870 9635 9604 9786 9861 9861 9862 9862 9609 9844 9840 9831 9754 9754 9773 9689 9691 9691 9772 9772 9775 9712 9772 9772 9711 9785 9872 9349 9778 9866 9867 9874 9869 9864 9758 9898 9902 9865 9882 9849 9942 9881 9745 9744 9826 9855
ftp 9936 9580 9720 9906 9920 9920 9920 9920 9920 9920 9920 9916 9959 9920 9920 9681 9685 9534 9509 9746 9747 9748 9748 9537 9726 9721 9711 9635 9635 9679 9728 9730 9730 9678 9677 9680 9742 9677 9678 9741 9689 9872 9710 9801 9866 9867 9831 9825 9865 9802 9894 9898 9866 9880 9853 9931 9926 9929 9929 9841 9859
ping 9865 9845 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 9922 9750 9901 9935 9954 9954 9954 9954 9901 9949 9948 9946 9928 9928 9932 9835 9836 9836 9932 9932 9933 9845 9932 9932 9845 9935 9976 10000 9962 9975 9975 9977 9976 9975 9887 9981 9981 9966 9978 9973 9978 10000 9886 9885 9944 9952
telnet 9664 9922 9932 9932 9932 9931 9931 9932 9932 9929 9965 9932 9932 9518 9486 9682 9498 9596 9597 9598 9598 9684 9570 9564 9552 9692 9692 9762 9650 9652 9652 9662 9662 9664 9580 9662 9662 9579 9670 9878 9926 9877 9883 9865 9778 9771 9892 9918 9897 9916 9950 9920 9841 9887 9944 9874 9874 9877 9888
tftp 9845 9866 9866 9866 9866 9866 9866 9866 9961 9962 9963 9963 9782 9716 9771 9651 9726 9726 9728 9727 9772 9706 9702 9692 9649 9649 9730 9707 9709 9709 9729 9729 9731 9683 9729 9729 9682 9737 9821 9913 9866 9927 9908 9872 9888 9833 9911 9892 9912 9946 9916 9685 9881 9937 9859 9859 9765 9789
tm019eja 3679 6163 6171 6158 6161 6165 6177 9896 9969 9900 9900 9826 9947 9886 9905 9921 9921 9921 9921 9886 9820 9818 9814 9900 9900 9903 9956 9956 9956 9951 9951 9952 9958 9951 9951 9957 9952 9932 9942 9964 9973 9974 9975 9974 9929 10000 9935 9937 10000 9976 9925 9929 9954 9955 9955 9883 9892
tm019fja 4651 4660 4643 4648 4653 4667 9906 9972 9910 9910 9842 9955 9905 9919 9931 9931 9931 9931 9906 9844 9842 9839 9916 9916 9918 9962 9962 9962 9958 9958 9959 9963 9958 9958 9963 9959 9938 9952 9968 9976 9976 9977 9976 9935 10000 9939 9941 10000 9978 9932 9935 9960 9961 9961 9899 9906
tm019gja 3947 4641 4646 4651 4665 9906 9972 9910 9910 9842 9955 9905 9919 9931 9931 9931 9931 9906 9843 9842 9839 9916 9916 9918 9962 9962 9962 9958 9958 9959 9963 9958 9958 9963 9959 9938 9952 9968 9976 9976 9977 9976 9935 10000 9939 9941 10000 9978 9931 9934 9960 9961 9961 9899 9906
tm019hja 4651 4655 4660 4675 9907 9972 9910 9910 9842 9955 9906 9919 9931 9931 9931 9931 9906 9844 9842 9839 9916 9916 9918 9962 9962 9962 9959 9959 9959 9963 9959 9959 9963 9959 9938 9952 9968 9976 9976 9977 9976 9936 10000 9939 9941 10000 9978 9932 9935 9960 9961 9961 9900 9906
tm019ija tm019jja tm019kja 703 3065 3084 9906 9972 9909 9909 9842 9955 9905 9919 9931 9931 9931 9931 9905 9843 9842 9838 9915 9915 9917 9962 9962 9962 9958 9958 9959 9963 9958 9958 9963 9959 9938 9952 9968 9976 9976 9977 9976 9935 10000 9939 9941 10000 9978 9931 9934 9960 9961 9961 9899 9906
tm019lja tm019mja tm019nja 2360 3090 9906 9972 9910 9910 9842 9955 9905 9919 9931 9931 9931 9931 9906 9843 9842 9839 9916 9916 9917 9962 9962 9962 9958 9958 9959 9963 9958 9958 9963 9959 9938 9952 9968 9976 9976 9977 9976 9935 10000 9939 9941 10000 9978 9931 9934 9960 9961 9961 9899 9906
tm019oja 736 9906 9972 9910 9910 9842 9955 9905 9919 9931 9931 9931 9931 9906 9844 9842 9839 9916 9916 9918 9962 9962 9962 9958 9958 9959 9963 9958 9958 9963 9959 9938 9952 9968 9976 9976 9977 9976 9935 10000 9939 9941 10000 9978 9932 9935 9960 9961 9961 9899 9906
tm019pja 9870 9972 9874 9874 9809 9955 9906 9919 9931 9931 9931 9931 9906 9844 9842 9839 9860 9860 9864 9962 9962 9962 9959 9959 9959 9963 9959 9959 9963 9959 9938 9952 9927 9976 9976 9977 9976 9936 10000 9939 9941 10000 9978 9932 9935 9908 9962 9961 9900 9906
tm019qja tm019rja 8091 7445 7444 9914 9906 9950 9915 9964 9964 9964 9964 9950 9924 9923 9961 9896 9896 9899 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 9956 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 9945 10000 10000 10000 10000
tm019sja 6745 6461 9907 9954 9951 9958 9964 9965 9965 9965 9951 9963 9962 9962 9957 9957 9958 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 9960 9970 10000 10000 10000 10000 10000 10000 10000
tm019tja 282 9917 9911 9953 9919 9965 9965 9965 9965 9953 9928 9927 9962 9902 9902 9904 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 9958 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 9947 10000 10000 10000 10000
tm019uja 9917 9911 9953 9919 9965 9965 9965 9965 9953 9928 9927 9962 9902 9902 9904 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 9958 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 9947 10000 10000 10000 10000
w32bg115 8909 9822 8154 8053 8056 8041 8081 9822 7973 7997 7961 9765 9765 9758 9664 9665 9665 9648 9648 9649 9618 9648 9648 9618 9630 9734 9890 9763 9748 9735 9565 9693 9717 9896 9773 9773 9688 9623 9598 9756 9825 9920 9920 9809 9821
w32bg__a w32bg__b 9753 4533 6521 6533 6553 6685 9755 6737 6666 6706 9679 9679 9563 9562 9565 9565 9595 9594 9599 9589 9594 9595 9587 9709 9860 10000 9810 9854 9855 9862 9857 9852 9887 9886 9891 9865 9871 9838 9873 10000 9886 9885 9890 9905
w32bg__c w32bg__d 9706 9799 9800 9801 9801 2012 9778 9772 9761 9670 9670 9691 9847 9848 9848 9806 9806 9808 9857 9806 9806 9857 9815 9939 9814 9898 9936 9937 9880 9875 9935 9959 9951 9953 9964 9944 9928 9945 9896 9904 9904 9846 9869
w32bg__j w32bg__k 4674 4690 4716 4828 9708 4578 4500 4836 9572 9572 9564 9655 9657 9657 9508 9508 9512 9564 9508 9508 9563 9604 9817 9703 9699 9776 9756 9682 9748 9830 9966 9805 9829 9804 9690 9544 9784 9924 9928 9928 9838 9857
w32bg__n 291 1036 1327 9800 4062 4163 4345 9685 9685 9756 9697 9698 9698 9512 9512 9515 9624 9512 9512 9623 9584 9820 9797 9682 9852 9834 9803 9894 9802 9972 9856 9853 9659 9698 9648 9842 9885 9945 9945 9875 9886
w32bg__p 1057 1347 9800 4077 4178 4360 9686 9686 9757 9698 9699 9699 9514 9513 9517 9625 9513 9514 9624 9585 9820 9798 9683 9853 9834 9804 9894 9802 9972 9856 9854 9659 9698 9648 9843 9886 9945 9945 9875 9887
w32bg__q w32bg__s w32bg__t 288 9802 3851 3949 4123 9687 9687 9758 9699 9700 9700 9516 9516 9519 9626 9516 9516 9625 9587 9821 9799 9684 9853 9835 9804 9894 9802 9972 9857 9854 9660 9699 9649 9843 9886 9945 9945 9875 9887
w32bg__r 9801 3946 4045 4223 9687 9687 9758 9699 9700 9700 9516 9515 9519 9626 9515 9516 9625 9587 9821 9799 9684 9853 9835 9804 9894 9802 9972 9857 9854 9660 9699 9649 9843 9886 9945 9945 9875 9887
w32bg__x 9779 9773 9762 9672 9672 9693 9848 9849 9849 9807 9807 9809 9858 9807 9807 9857 9816 9939 9815 9898 9936 9937 9880 9876 9935 9959 9951 9953 9964 9944 9929 9945 9897 9904 9904 9847 9870
w32bg__z 593 1148 9657 9657 9648 9503 9505 9505 9361 9360 9365 9433 9360 9361 9431 9443 9637 9775 9606 9571 9696 9631 9670 9609 9970 9704 9706 9668 9503 9588 9674 9876 9941 9940 9865 9879
w32bg_aa 870 9650 9650 9641 9495 9497 9497 9349 9348 9353 9424 9348 9349 9422 9432 9772 9770 9601 9712 9694 9628 9667 9750 9970 9818 9816 9664 9629 9584 9799 9874 9940 9939 9863 9877
w32bg_ad 9636 9636 9720 9558 9560 9560 9324 9323 9328 9482 9323 9324 9481 9411 9809 9759 9652 9790 9772 9741 9784 9788 9969 9849 9846 9711 9736 9622 9833 9869 9938 9937 9859 9873
w32krg_a 2781 5459 9136 9141 9141 9285 9284 9292 9067 9284 9285 9064 9312 9866 9665 9771 9918 9896 9868 9875 9871 9964 9890 9903 9858 9855 9846 9878 9810 9923 9923 9826 9848
w32krg_b 5459 9136 9141 9141 9285 9284 9292 9067 9284 9285 9064 9312 9866 9665 9771 9918 9896 9868 9875 9871 9964 9890 9903 9858 9855 9846 9878 9810 9923 9923 9826 9848
w32krg_c 8650 8657 8657 8810 8808 8820 8609 8808 8810 8605 8852 9858 9687 9709 9852 9853 9860 9855 9850 9965 9883 9888 9800 9736 9837 9870 9818 9926 9926 9833 9853
w32krg_e 1095 1866 4780 4774 4817 1739 4774 4780 1715 4936 9767 9907 9755 9673 9655 9660 9710 9723 9832 9873 9853 9736 9678 9665 9860 9867 9853 9852 9693 9725
w32krg_g 1171 4805 4799 4841 1403 4799 4805 1378 4959 9767 9908 9755 9673 9656 9660 9711 9723 9832 9873 9853 9737 9678 9666 9860 9868 9853 9853 9694 9726
w32krg_n