### Micco's Home Page ### Welcome to Micco's page!!
Sorry, but this web page is written in Japanese.
<English>
■ 更新情報
■ このWebページについて
■ お知らせ
■ ダウンロード
■ DLL のインストール方法
■ SFX の設定例
■ いろいろ
対応ブラウザー
[Internet Explorer] [Firefox] [Opera] [Sleipnir] [Safari] [Google Chrome]
連絡先:Micco
[e-mail]
[→Home]

● UNARJ32.DLL for Win32  <Nov.10,2007>
[Vista][WinXP][Win2k][NT4.0][NT3.5x][WinMe][Win98][Win95][Win32s]

 「統合アーカイバ・プロジェクト」の API 仕様に準拠した ARJ 書庫の展開を行うための DLL (ダイナミック・リンク・ライブラリー) です。

 技術解説用としてフリー・ソフトウェアで公開されている UNARJ.EXE のソースをベースとしているため, 展開ルーチン以外は全て自前で作成する必要があったことから, 一応 ARJ.EXE 2.41a の (展開関係の) コマンド・スイッチを付加してあるものの, かなり貧弱なサブセットになってしまっています。

従って, ARJ.EXE Ver 2.5x 以降とは仕様が異なっている部分が存在しますし, 5 以降のメソッドについては展開できず, プロテクト書庫もバックアップメンバーも扱えません。

 DLL であることから, UNARJ32.DLL 単体では何もできません。 (例えば) ここで公開されている LHMelt のような対応アプリが必ず必要になります。


ダウンロード [旧版ダウンロードページへ]

Ver 1.10a:正式公開版です。 通常はこちらをお使いください。
[WinSFX32M] UNARJ32.DLL Ver 1.10a (UAR3110A.EXE 221KB,2007/11/10) *
MD5: B0358EA09A73E34FB5472FFE309881A8
SHA1: 09C94DDB40C2FFA6BAEDDD6A4088F98283D9C06A
CRC32: 48446490
.

更新履歴

Ver 1.10 からの変更点

  • UNARJ32.DLL におけるヒープオーバーフローの脆弱性について
  • UnarjOpenArchive() 等において, 省略値スイッチ指定等が重複して処理されてしまっていたバグを修正しました。
  • 動作妨害や脆弱性利用等を目的とした用途として使用が可能だったことから, レジストリーを利用した省略値スイッチ指定等の機能を削除しました。

Ver 1.04b からの変更点

  • Unarj() 等の API へ規定数を超えたパラメーターを含むコマンド文字列が渡されるとヒープオーバーフローを起こしてしまっていた脆弱性を修正しました。
  • 64 ビット time_t 値でタイムスタンプ情報を得る UnarjGetWriteTime64() 等の API を追加しました。 これに伴いバージョンが 1.10 へ更新となっています。
  • 整合性を考慮して, time_t 値でタイムスタンプ情報を得る UnarjGetArcWriteTime() 等の API を追加しました。 (メンバー用の UnarjGetWriteTime() 等の API は存在したものの, 書庫用の API が存在していなかったため。)
  • UNARJ32.H でのプロトタイプ宣言について, const 修飾子の有無を見直しました。 また, 付加し忘れていた箇所についても修正を行っています。
  • API を実行した結果エラーが返ってきたにも拘わらず, 直後の UnarjGetLastError() が ERROR_SUCCESS を返してしまうことのあったバグを修正しました。
  • Win9x/Win32s 上でデバッグ出力を行った際に, 一般保護エラーとなってしまうことのあったバグを修正しました。 (β版のみで発生。)
  • "-p0" スイッチの指定が無効となってしまうことのあったバグを修正しました。
  • "-hte2" スイッチの指定が無効となってしまっていたバグを修正しました。
  • "-hzs" と指定した場合に, 既定の 8 文字ではなくチェック無しとなってしまっていたバグを修正しました。
  • CP_UTF8 を使用できない環境にもかかわらず, "-hzl65001" 等の指定を行えてしまっていたバグを修正しました。
  • UNARJ32.DLL が使用する既定フォントの取得方法を変更しました。
  • 内部的には全て 64 ビットの time_t 値を扱うように改善しました。これに伴い, FILETIME 値の補正を 1752/09/14 00:00:00〜2399/12/31 23:59:59 の範囲で行うように変更しました。 NT 4.0 等, Win2k より前の NT 系 OS や Win9x 系の環境については, 従来どおり 2099/12/31 23:59:59 を上限とします。
  • dir コマンド等, コマンド結果の表示等のみで問題が発生しているようであることから, time_t, ftime への変換について, Win2k 以降の NT 系 OS の場合には, 2099 年での丸めを行わないようにしました。
  • 一部自動的に行っていたタイムスタンプ補正についても, スイッチ指定に従って補正を行うように仕様変更しました。 タイムスタンプ補正をエラーとする設定を行っている場合に, 影響の出る可能性があります。
  • ヘッダーのタイムスタンプ情報を複数の形式で (内部的に) 保持していたものを, FILETIME 形式一本で保持するように整理・改善しました。
  • ファイル破損による誤動作防止のため, DLL ロード時にコード部分の簡易破損チェックを行うようにしました。 正式版のみで機能します。
  • UTF-16 のレスポンスファイル読込時の使用関数を変更しました。
  • API のパラメーターチェックを少々強化しました。
  • Win2k 以降の NT 系 OS の場合には, 既定コードページとして CP_THREAD_ACP を使用するように改善しました。
  • MultiByteCharToWideChar() 等について, 文字コードによって指定できないフラグへの対応を改善しました。
  • ANSI 版 API を使用している場合でも, BOM 付きであれば Unicode 文字のレスポンスファイルを受け付けるように改善しました。

よくある質問

・脆弱性関連については, 以下のページを参照してください。

・配布ファイルを展開したのに UNARJ32.DLL だけ表示されない

 Explorer (他のファイラーでも設定によって。) では, ユーザーが指定しない限り ".DLL" の拡張子をもつファイルは表示されません。 (WinXP であれば) "ツール―フォルダーオプション" メニューで, 全てのファイル及びシステムファイルが表示されるように設定すれば見えるようになります。

・パス情報をもったファイルが扱えず表示すら行われない

 この不具合が発生した場合は, 十中八九 UNARJ32.DLL の「厳格なファイル名サーチ」が有効となっているのが原因です。 UNARJ32.DLL の設定ダイアログを呼び出して, この項目を無効にしてください。

[→Page top] [→Home]