オカメインコ時計 開発風景2
※ この記事の内容は古くなっています
アイコンも設定し、機能別に画面を整理しました。
あとは、IPv6の動作テストをして完了です
→ 動かないようなら、使用禁止へ変更
【2008/2 開発時現在での対応】
- Windows 95,98,Me,XP
- 2036年問題
- IP Version 4, (6?)
今後の課題
- Windows 9.xで、IPv6は動かない可能性あります。
そのときは、Windows9.xのときは、IP Versionを4に固定
- ウイルスソフト?・スパイウェア?・ファイヤーウォールに
ソケット接続を妨害され遅延した場合にどうするかという問題が残っています。
(ホスト→到着の正確な時間が計れないため)
- タイムアウトとは、別に、「内部的取得遅延時間が1秒以上は無視」などつけるようにするなど?
- サーバー機能のインターフェース追加
内部的には、実装(.iniで手動追加すると起動できます)。
- ローカルでも、0,1,8,36と 100ミリ程度のランダム取得誤差があるようです
サーバーソフトの精度や
ソフトウェアに割り当てられた時間に依存するものと思われます。
→取得時のスレッド実行優先度を変更できるのでそこで対応することになります。
- 緩徐時刻合わせ機能
内部タイマー速度を変更して、徐々に目的の時間に近づけていく機能です
いまのところ、必要がないので 実装予定はありません。
- ログの保存方法を変更
→リスト形式で選択したときに表示
- ログの保存は?(現在未保存)
- 数回、または、いくつか接続して、いいものを選択? 平均をとる?
内部的には可能
オカメインコ時計 開発風景1
※ この記事の内容は古くなっています
時刻合わせソフトウェアです。
とりあえず、自動時刻あわせとして動作するようになりました。
※オカメインコは、でてきません。 アイコンだけオカメインコになる予定です。
開発環境は、WindowsXPで行っていますが
基本方針は、時々Windows95でも動作確認を行い、Windows95でも、動作するように設計を考えています。
下記は開発風景の画像です
公開時には、大幅に画面が変更されることがあります。
遅延に指定した時間以上ずれていると時刻を修正します
【2008/2 開発時現在での対応】
- Windows 95,98,Me,XP
- 2036年問題
今後の課題
- ウイルスソフト?・スパイウェア?・ファイヤーウォールに
ソケット接続を妨害され遅延した場合にどうするかという問題が残っています。
(ホスト→到着の正確な時間が計れないため)
- タイムアウトとは、別に、「内部的取得遅延時間が1秒以上は無視」などつけるようにするなど?
- サーバー機能のインターフェース追加
内部的には、実装(.iniで手動追加すると起動できます)。
- ローカルでも、0,1,8,36と 100ミリ程度のランダム取得誤差があるようです
サーバーソフトの精度や
ソフトウェアに割り当てられた時間に依存するものと思われます。
→取得時のスレッド実行優先度を変更できるのでそこで対応することになります。
- 緩徐時刻合わせ機能
内部タイマー速度を変更して、徐々に目的の時間に近づけていく機能です
いまのところ、必要がないので 実装予定はありません。
Delphi2005付属のDemeanorとフリーなNanDoKuをさわってみる
今日のDelphiの講義は、難読化です
みなさん用意はいいですか
聴講料は無料なので安心してください(^▽^;
【はじめに】
.netで作成した、exeファイルは、簡単に類似ソースコードに戻すことができるそうです。
実際、.net自体に低級言語に戻すildasmツールが付属しています
この非常に狭い地球には、任意の.net高等言語に戻すフリーツールも出回っているようです
これは、普通の開発者にとって脅威です
このことは利用するユーザーには、全く利もなく害もないのですが、
開発側にしてみれば多言語間で簡単に呼び出せるようにした弊害なのでしょう。
そこで、そのようなツールで、ソースコードに戻しても
変数名やクラス名をグチャグチャに変更して
- 「人が見ても理解し難いソース」
- 「そのまま使うとコンパイラエラーを起こし、手を加えないと使えないものにしてしまう」
- 「コードを流用する気力を根こそぎ奪う」
- 「動作原理を理解し難くして隠蔽する」
- 「名前短縮によりexeサイズの縮小を期待する」
などいろいろな目的の元で変換を行うのが .netの難読化ツールです
さいわいDelphi2005に付属しているのでインストールしておきましょう。
(冊子 Quick Start P.5)
【Demeanorの準備】
まず、パスが遠いのでユーザーの環境変数に
フルパスを登録すると便利です
PATHにパスを登録してもいいのですが、あまり長くなるのが好きではないので
ここでは、個別の環境変数を作成することにします。
環境変数 Demeanor を作成し、そこにフルパス
"C:\Program Files\Wise Owl, Inc\Demeanor for .NET, Personal Edition\Demeanor"
を登録しました
【Demeanorの使い方】
%Demeanor% dotnet実行ファイル名
PATHが取っている場合は
Demeanor dotnet実行ファイル名
で 難読化済みexe が作成できます
Demeanorフォルダに変更されたexeができます
出力先は、/out:パス
で変更できます
変換方法を変更するには
既定値 |
/names:alpha |
|
/names:numeric |
|
/names:Unicode |
その他詳しくは、DOSプロンプトを起動して、
Demeanor /?
で確認しましょう
【ildasm】
ildasm
"C:\Program Files\Microsoft.NET\SDK\v1.1\Bin\ildasm.exe"
のショートカットを作って置くと便利です
ildasmにできたファイルを投げ入れると
どの程度exeが書き換えられたか閲覧できます
DelphiでC#のexeを作ったものはかなり変更されたかなという感じを受けます
delphi.netのexeには、あまり変更が加わっていない気がします。
次に
NanDoKuというフリーソフトを使ってみましょう
【NanDoKu】
ということで
うーん、こ、これは・・・
delphi.netのexeにそのまま使うと飛びます
■まず、設定を開き コンパイラのildasm.exeを正しいパスに変更しましょう
■Nandokuデフォルトオプションだと
delphi.netのexeは、飛びます
オプションを変更して飛ばないようにします
変換項目の設定と作ったexeの動作 |
○ |
名前空間 |
× |
クラス名 |
×× |
メソッド |
○ |
プロパティ |
× |
クラス変数とイベント |
○ |
メソッド引数 |
○ |
ジェネリックの型パラメータ |
Nandokuで作ったexeを実行した時
○は、動作
×は、実行時エラー発生
××は、exe作成できず
この表は、NanDoKu 3.1.0
に
空の Delphi.net TFormアプリケーション
を入力としました |
変換項目の設定
メソッド
にチェックがあると
---------------------------
難読化失敗
---------------------------
難読化に失敗しました。
原因不明のエラーが発生しました
---------------------------
■exe→Demeanor→Nandoku
とするとNandokuで飛びます
●exe→Nandoku→Demeanor
という手順だと飛ばないようです
(この処理はバッチ処理すると楽です)
ildasmで確認をすると
適度に難読化がかかった感じでいい感じです。
Delphi2005でVB,C#のコードから作成したexeファイルの場合は、
メソッド名も変更されるので
難読化効果がさらにあるような気がします。
Delphi2005 C#で作った単純なアプリケーションをDemeanorで変換し、ildasm で表示した様子。
執筆:2008.1.31 おかめりん