ページ 11

突然気になったパッチの仕組み

Posted: 2013年11月26日(火) 19:07
by rozeo
こんにちは、rozeoです。

なぜか知りませんが…急にパッチの仕組みが気になりました。
あのクリックだけ(?)でプログラムのバージョンアップがすんだりするやつですね。

あのパッチのプログラムでパッチをあてる方のプログラムのソースの改変てきなことをするんだろうな…とは想像がつきましたが、その仕組み?構造?ともなると全く想像がつきません。

そこで
①パッチとは一体どういった仕組みによって改変を行うのか
②またそういったパッチはどのようにつくるのか

ということを質問させていただきます。
こういったパッチについてかかれたサイトのURLでも構いません。

どうかよろしくお願いします。

Re: 突然気になったパッチの仕組み

Posted: 2013年11月26日(火) 19:25
by h2so5
そんなに複雑なことをしているわけではなくて、新しいプログラムを古いプログラムにに上書きするだけです。ソースコードレベルで改変するということはありません。
アップデータは必要なデータをサーバーからダウンロードして、それを現在インストールされているプログラムに上書きします。

プログラムサイズが大きい場合はダウンロードに時間がかかるので差分、つまり新しくなった部分だけをダウンロードしてプログラムを書き換えます。
バイナリの差分を取るツールとしてはbsdiff(http://www.daemonology.net/bsdiff/)などがあります。
インストールされているバージョンごとに当然差分も変わってくるのでそれを考慮する必要があります。

Chromiumでは特殊な方法を利用しており差分の圧縮率を上げるために逆アセンブラを利用しているようです。
http://www.chromium.org/developers/desi ... -courgette
Omaha(https://code.google.com/p/omaha/)というアップデート用のライブラリも公開されています。

Re: 突然気になったパッチの仕組み

Posted: 2013年11月26日(火) 21:52
by rozeo
ご回答ありがとうございます。

なるほど…そういうことなんですか…

勉強になりました。少しいじってみたいとおもいます。
ありがとうございました