1. ホーム
  2. スクリプト・コラム
  3. その他

一般的な電子書籍フォーマットの解析とそのデコンパイルの考え方

2022-02-07 14:52:59
免責事項:この記事には専門用語が多く含まれる場合がありますので、苦手な方はこれ以上読まないでください。  
この記事はいくつかのアイデアについて述べているだけで、ソースコードを提供しているわけではなく、せいぜいソースコードのサイトへのリンクを提供しているに過ぎません。もし、これに不満があるのなら、これ以上読まないでください。 
この記事は、電子書籍の逆コンパイルについて技術的な観点から述べているだけですので、著作権侵害などの違法行為や他人の利益を害する目的で使用することはご遠慮ください。失望した場合は、これ以上読まないでください。  
この記事の著作権は著者に帰属します。転載する場合は、著者の書面による許諾を得るようお願いします。  
1. 序文 
2. 一般的な電子書籍のフォーマットとそのデコンパイルの考え方 
   2.1 PDF形式 
   2.2 IEカーネルベースの電子書籍 
       2.2.1 CHMフォーマット 
       2.2.2 EXE形式 
             2.2.2.1 ウェブコンパイラ 1.67 
             2.2.2.2 Caislabs eBook Pack Express 1.6 
             2.2.2.3 一般的なデコンパイルの考え方 
   2.3 HLPフォーマット 
   2.4 小説村/小説村(ebx/XReader) 
3. 結論 
付録 IEカーネルベースの電子書籍の実装を探る 
1. 序文 
本稿でいう電子書籍とは、オリジナルの編集可能なHTML、TXT、RTF、画像ファイルなどを、専用のブラウザでしか読めないスタンドアローンのEXEなどにパッケージしたものを指し、パッケージされたファイルは通常、従来のツールでは編集や全文検索ができないようになっています。 
世の中のあらゆるものがそうであるように、電子書籍のコンパイラもデコンパイラも偶然に生まれたわけではなく、すべて必然性がある。 
個人的には、以下のような側面から検討されていると思います。 
というのも、以下のような理由があるからです。DOSでテキスト文書を読むとき、特に中国の文書は、より面倒なので、漢字のライブラリは、DOSの電子書籍の基本的なブラウジング(ページ、スクロール)機能が付属しています。異なるOSプラットフォーム上で同じ読み取り効果を得るために必要なため、クロスプラットフォームのPDF形式の電子書籍、インターネットの発展とともに、HTML形式で情報の大量が、顔で登場インターネットの発展は、情報の大量は、HTMLファイルの大きな山、誰もがダブルクリックするインデックスを知っていないの顔では、 。 htmやdefault.htmなど、ファイル数が多すぎて管理が面倒になるため、CHM形式や各種IEカーネルベースのEXE形式電子書籍が登場しました。  
知的財産権、企業秘密の保護を促進する。この問題の重要性は、私は今、我々は理解することができると信じて、コアビジネスの秘密を含むものは言うまでもありません、それだけで小説であっても、そこにいくつかの卑劣な人々が元のHTMLを取るために、TXTファイルは、ロゴ、パッケージを追加し、その後、学校の結果を一掃する彼らの&quotにハードワークであると主張し、グランド充電いわゆる&QOT、VIP料金&QOT;である。したがって、PDFは、セールスポイントの1つとして、国内独自の形式の電子書籍の様々な主な目標として、抗コピーコンテンツの解凍を防ぐために、文書のセキュリティされています。  

全文検索を容易にする。前述したように、電子書籍は一般的に通常の検索ツールで全文検索ができないため、資料の有効活用に壁がある。個人的には、数十冊、数百冊のコレクションであれば、手作業で抄録や索引を作成することも許容されると思うが、それ以上に、インターネット環境でgoogleに頼るように、素早く全文検索できるツールさえあればいいのである。  
改造が容易であること。  
Windowsはファイル一覧が表示され、ファイル情報を読み取る必要があり、EXEファイルもICONなどを読み取ります。アンチウィルスソフトを搭載している場合、フォルダに入るとアンチウィルスソフトが自動的にフォルダ内のEXEファイルを自動的にチェックし、電子書籍のサイズは一般的にMBレベルなのでEXEフォーマットを含む電子書籍を開くと、非常に遅く感じます。電子書籍の速度が非常に遅いのは、むしろ不快である。  
省スペースであること。一般的なEXE形式の電子書籍の標準的なアーキテクチャは、実行ファイル+コンテンツ+TOCです。実行ファイルとは、プログラムコード、プラグインコード、インターフェースリソースなどを含む電子書籍の実行コード部分のことです。TOC(Table Of Content)は、ディレクトリインデックスに相当し、コンテンツへのアクセスを高速化する役割を果たします。したがって、WinZipやWinRARで元のコンテンツを直接圧縮するのとは対照的に、EXE形式の各電子書籍は、ディスク容量の一部を無駄にして実行本体部分を保存しています。電子ブックのソフトウェア・インターフェースが派手であればあるほど、この無駄は一般的に大きくなり、最も大げさな電子ブックでは、元のコンテンツより1MB以上多いのを見たことがあります。  
スパムを避ける。IE のカーネルベースの電子書籍の場合、実装技術の制限によりレジストリやシステムディレクトリにゴミが残ることがあります。  
セキュリティ 現在のインターネット社会は、悪意ある不誠実な環境であるといったら言い過ぎかもしれません。  
もちろん、デコンパイルした後にも、元のニーズを満たし続けるために適切な代替手段を探す必要がある。
パッケージングツール。WinzipまたはWinRARを選択することをお勧めします。使いやすいだけでなく、パックされたファイルは小さく、ディレクトリに入るのも速いです。  
読み取りツール。今、あなたは、解凍せずに直接ZIP / RARファイルの内容を読むことができ、多くのソフトウェアがあり、検索、私自身MyReaderを行っている、だけでなく、ZIP / RARから直接内容を読むことができ、自動配置index.htm、ブックマーク、サイト保護、リソースブラウザ右クリックメニュー拡張、郵便/ RARパスワード自動メモリなどがある。  
全文検索ツール。zip/rarを直接全文検索できるソフトは結構ありますが、暗号化zip/rarに対応したFindStrを自作してみました。このツールはMyReaderとの連携も可能で、検索結果を解凍せずに直接MyReaderで開くことができます。また、テキストの一括置換にも対応しているので、広告リンクの削除や絶対URLを相対URLに変更するなど、ダウンロード・解凍した小説の整理にも私はよく使っています。  
労働の成果を保護する こちらは、ZIP/RARのパスワード保護がわかりやすいですね。  
2. 一般的な電子書籍のフォーマットとそのデコンパイルの考え方 
2.1 PDF形式 
PDF形式は、Adobe社によって導入されたクロスプラットフォームの電子文書フォーマットである。Adobe社が提供する専用の文書ビューアにより、異なるプラットフォームでも同じ読書効果を得ることができます。 
ただし、この機能は "ドキュメントセキュリティ" の制限を受けるようで、まあ、ちょっとググってみると、PDFセキュリティ保護ソフトを割るのが多いようです。どうしても一括変換したい場合は、codeprojectにPDFからプレーンテキストに変換するソースコードを提供している記事もあります。 
状況の私の使用から、Adobe Acrobat自体の出力RTF形式は、英語の文書は、問題の多くはないはず、せいぜいフォーマットの小さな変化が、中国の文書の出力では、時折間違った文字セットコードのため、Wordで文書の出力で、書き込みボードオープン、あなただけの文字化けコードの束を参照してくださいすることができます。このような状況のために、文字セットコードの手動交換を解決することができます。 
また、PDFファイルがカスタムフォントで使用されている可能性があり、その結果、文書の変換が正しく表示することはできませんが、これはより多くのトラブルです。PDFファイルは、2つの方法でフォントが付属しています:完全なフォントが付属して、フォントの埋め込みと呼ばれ、唯一のフォントサブセットと呼ばれるいくつかの文字を使用するためにフォントが付属しています。PDFファイルには、完全なフォントの埋め込みが付属しています。フォントのサブセットと呼ばれる、数文字を使用するためのフォントのみが付属しています。 
しかし、一度、PDF2Htmlというソフトを使ってみたところ、このソフトのアイデアは、PDF文書の各ページをJPGファイルに変換し、そのJPGファイルをHTMLファイルにカプセル化し、さらにディレクトリやページボタンなどを追加して、ネットワークを閲覧する際に、クライアントのAcrobat Readerやクライアント側のフォントサポートまで保存することができるのだそうだ。 
2.2 IEカーネルベースの電子書籍 
インターネットの発達により、WebドキュメントのコンテンツがHTML形式で提供されることが多くなり、マイクロソフト社自身もWindows上のほぼすべてのプログラミングツールから容易に呼び出せるコントロールの形でInternet Explorerのカーネルを提供しているため、現在ではIEカーネルベースの電子書籍が主流を占めているようです。 
2.2.1 CHMフォーマット 
CHM (pronounced "chum") の本来の意味は Compiled HTML help file であり、HLP形式(16ビットWindowsでの標準ヘルプファイル形式)の代替形式としてMicrosoftが提案したものなので、Microsoft自身もIE version 4.01 以上でヘルプファイルを無料で提供するだけでなく、Microsoft HTML Help Workshopというツールを無料で提供します。Compiled HTMLヘルプファイルの本来の意味は、HLP形式(16ビットWindowsの標準ヘルプファイル形式)の代替形式としてマイクロソフトが提案したものですので、マイクロソフト自身がIEバージョン4.01以上のブラウザを無償で提供するだけでなく、作成ツールMicrosoft HTML Help Workshopも無償で提供します。 
CHMファイルは、内部でITS形式を使用しており、zipやrarよりも圧縮されていると感じられる優れた圧縮形式です。 
ITS形式のオープン性から、海外では以前からCHM形式のコンパイル・デコンパイルツールを独自に作っている人がいて、必要な人はここで全ソースコードを公開されています。 
http://bonedaddy.net/pabs3/hhm/ 
このサイトでは、CHMのコンパイル、デコンパイルツールとそのソースコードを提供しているだけでなく、CHMフォーマットについての詳しい説明も、もちろん英語で書かれています。私が作ったUnEBookでは、CHMの一括解凍を実現するために、はじめにchmdecoのソースコードを入れて使っていました。chmlibのソースコードはchmdecoが内部で使用しており、chmdecoの他にchmtoolsが使用しているのは非常に有名です。 

しかし、しばらく使っていると、このコードで一部のCHMファイルをデコンパイルすると、array out-of-bounds エラーが発生することがわかりました。このエラーが発生する確率は低いのですが、それでも発生すると困るので、結局このコードはあきらめました。 
現在、UnEBookが使用しているCHMデコンパイラのコードをここから変更しました。 
http://www.codeproject.com/winhelp/htmlhelp.asp 
このコードは、マイクロソフトの非公開のITSファイルアクセスインタフェースを使用して、ファイルを直接操作するものです。このコードは、対象コードが小さいだけでなく、互換性もはるかに優れており、デコンパイルできないCHMファイルにも遭遇していませんし(唯一の例外は、CHMファイル自体が開けないこと)、メモリバグも発見されていません。やはりマイクロソフトのものはマイクロソフトで対処するしかないようです。 
また、CHM電子書籍の中には、時間短縮のためにindex.htmを作らず、単に左側のディレクトリツリーを頼りにナビゲーションを行う人もいます。このような電子書籍の場合、デコンパイルした後、生成されたhccファイルを元にインデックスページを自動生成して、見るときに不便にならないようにすることも一般的に必要です。hccファイルの構造は、おおよそ次のようなものです。 
多階層ディレクトリは、<UL>が表示されたら1階層下に行き、</UL>が表示されたら1階層後ろに行くという制御になっています。  
ディレクトリエントリは <OBJECT type="text/sitemap"> で始まり、 </OBJECT> で終了します。アイテム名は <PARAM NAME="Name" VALUE="xxx"> で保存し、アイテムリンクは <PARAM NAME="Local" VALUE="xxx.html"> で保存されます。  
ディレクトリの項目によっては、名前だけで、リンクがない場合があります。  
UnEbookでは、CHMのディレクトリ効果を最大限に模倣するために、hccファイルを元にインデックスページを自動生成するだけでなく、フレームページを自動生成してインデックスページと表示ページをフレームに埋め込むことが可能です。動的に拡大縮小できるツリーディレクトリ効果を完全に模倣しようとすると、画像やjs、cssなどのファイルを追加する必要があり、本当にコスト以上の価値があります。 
2.2.2 EXEフォーマット 
CHM形式の他に、IEカーネルベースの電子ブックは、EXE形式でも多数提供されています。EXE形式の電子書籍を作成するためのツールは、今や多くのプログラマを養う産業となっているようです。この形式の電子書籍は、ファイルが実行できる、インターフェイスも美しくできる、しかもパスワードで保護されているなど、かっこいいと思う人が多いようですが、実際はどうなのでしょうか?しかし、私は個人的に電子書籍のこの形式を憎む:前述のセキュリティ、スピード、スペース、検索およびその他の問題に加えて、私は最も現在のEXEの電子書籍によって邪魔さ良いブックマーク機能ではなく、特にページ上の任意の場所にブックマーク機能を見つけることができるように、長い文書が時間の半分は非常に面倒になりますので中断された表示するMyReaderの実装以来、だから私は、デコンパイルの問題を解決するために決定されたブックマーク機能を実装しました。