日記緑ログ

2005/09/05 ~ 2005/09/27

目次

戻る

Blog

逆アセと逆コンパイル

[Create: 2005/09/05 21:58] [LastUpdate: 2005/09/05 22:20]

いや、やけに怪しい話ですが、私のアセンブリに対する知識レベルはなきに等しく、せいぜい、ADDとSUBぐらいは聞いたことがある程度です。

別にアセンブリを覚える気持ちはまるで無いのですが物はためしとその辺に転がっていた実行ファイルを逆アセしてみました。

元 はCあたりなので、構造化されており、手続きがまたがったり、goto嵐などもないので解析も楽勝かと思うとそうではなく、大体何のせいか(恐らく Pentiumに最適化しているためだろうが)素直でないコード(多分ペアリングとかの関係だと思うのですが若干順序が逆転というか平行していたりする部 分)があったり、関数をコールするときに三つ前の関数コール以前にスタックに積んでいた値を使ってみたり、スタックの位置がぽんぽんかわるのでどれが一時 変数でどれが引数で、どこまでが積んだ値なのかがわかりにくい状態です。慣れればミラクルなスループットで頭の中のブラックボックスが演算してくれるので しょうが、それは無理なのであきらめます。

というかこういう奴をリバースエンジニアリングとかなんとか解析する人はかなり大変だと思うのですが。Cのソースに戻してとか言われたら発狂します。多分。

で、 逆コンパイラというのも世の中にはあるにはあるのでした。でも十分な機能をもったやつは無いんじゃないでしょうかね。もとがCという前提でも難しい気がし ます。最適化で関数呼び出しだけ離れて、条件によって引数の積み方を変えている奴とか、switchとか(ジャンプテーブル展開もあるが、二分岐を複数階 層に連ねたタイプもある)まあたとえばAPI関数はプロトタイプ宣言がそこらへんのヘッダにあるので、それをもとに適当にやればなんとかなりそうですが、 サブルーチン群は少々ヘビーな気がします。

とりあえず物は試しということでREC - Reverse Engineering Compilerを試してみました。…いや凄いです。

(save)esi;

とか

asm("rep stosd");

とかもうCではありません。

そして、残念なことにAPI関数でも引数情報の分離というか取得というか確定できないんでしょう。引数がたりてなかったり、あるいはスタック変数を取り違えていたりします。

ものとしては面白いし、逆アセだけではちょっとという場合には使えなくも無いかもしれませんが、グローバル変数バリバリのコードとか、関数ポインタ使いまくりのコードはうまくソースに落ちてくれないようです。それとリソースは別に解析の必要があるかと。

アーチャーの英霊

[Create: 2005/09/14 12:07] [LastUpdate: 2005/09/14 12:08]

実際のところアーチャーの英霊なんてウィリアム・テルか那須与一しか思いつかなかったわけですよ。

SYSTEMTIMEの比較

[Create: 2005/09/19 23:41] [LastUpdate: 2005/09/19 23:46]

Windows のSYSTEMTIME構造体なんですが、例えば時刻でバッチ処理したいときに処理開始の時刻を用意しておいて、GetSystemTimeした値と比較 して、GetSystemTimeの値のほうが過去、あるいは丁度同じだったら実行というような処理にすると思うのですが、Windows APIにはそれらしい関数は用意されていないようです。

FILETIMEであればCompareFileTimeで比較できますから始めからGetSystemTimeAsFileTimeで取ってきて比較するのがセオリーなんでしょうか。不都合はありませんが不合理というか不条理のような気がします。

Wininetの罠

[Create: 2005/09/20 22:35] [LastUpdate: 2005/09/20 22:45]

Wininet APIは手軽にHTTPあたりの通信ができてかなり便利です。

またIEの設定を反映して、Proxyを使ってくれたりします。便利です。

はたまた302のレスポンスコードが返ってきた時に自動でリダイレクトしてくれたりもします。これが結構便利だったりします。

しかしながら、この子はIEのCookieの設定まで反映してくれます。それはそれで便利なんですが、この機能は時に邪魔です。というかいつも邪魔です。

RequestHeader にCookie: を追加してやればできるだろうとか思っても追加できません。Cookieの制御くらいやらせていただきたいものです。余談ですが、IEのCookieの扱 いは少々微妙なようです。同じ名前のCookieを返してみたり…。いや、Domainが異なるから重複してもいいのかもしれませんが。

さりとてsocketを使ってごりごりHTTPを書くのも面倒です。1.1準拠にしようとすると知恵熱がでそうですし、Proxyも面倒ですし、Secure通信なんて胃潰瘍になりそうです。

DelphiあたりならIndyとかICSのような日本でも知名度の高いスペシャルなライブラリがあるのですが、C/C++で有名なライブラリってなんでしょう?

好好キムチ 和風タイプ

[Create: 2005/09/25 18:31] [LastUpdate: 2005/09/25 18:48]

タイトル通りですが、国籍がわかりません。ちなみに好はハオと中国読みです。

国語テスト、消える長文 著作権理由で訴訟も

馬鹿ですね。訴訟を起こしたのが作家というのも情けない話です。

----引用----

 第2次訴訟の原告の一人、作家の松谷みよ子さんは「出版社も印刷業者も経済活動を営んでいる。なぜ作家だけが、無断かつ無償で作品を使われるのでしょうか。きちんとした対価は創作活動の支えです」と話す。

------------

金 が目的の人は作家を辞めてもらうとして(今の世の中お金がないと生きていけないのは分かっていますのでそういう意味ではない)、例えば、音楽屋さんあたり だと著作権は大目に見てとにかく聞いて欲しいという人が多いような気がします。多分作家も大部分はそうだと思うのですがまあそれもさておき、無断とか無償 とか言うのがまた難しいところで、記憶があいまいですが、出版社はなんらかの作品を書いた人と契約をして、最低3年だかだったような気がしますがそこだけ 専売でお願いするわけです。その契約が切れるとその作品はフリーになるというか作者のもとに戻ってくるというか最初から切れてはいないんですがたとえば別 の出版社で文庫にしたいとか言われて契約することが可能になるわけです。

だから何だといわれても困りますが私はなんらかの形でなんらかのものに引用されている文をみてその本を購入したり、その作者の本をそろえてみたりしたことは数多くあります。

要はそういうことです。

IT上級者の会話は意味不明

[Create: 2005/09/27 22:06] [LastUpdate: 2005/09/27 22:32]

IT上級者の会話は意味不明…「もっと易しく話して」

ITスタッフというのが何をさして、IT上級者がどういう人をいうのか意味不明で見知らぬ外国語でも話しているように感じた。

と いう冗談はさておき(IT上級者というのはまったく意味がわからないが)、話はわかります。技術用語に限らず知らない言葉というのは関連した用語になれて いない人にはしばしば難解に思えます。例えば医療関係者が食品業界の人に(医者が病状を患者に説明するようにではなく看護士等に連絡するような言葉で)接 すればまったく意味がわからないでしょうし、逆も大いにありえます(食品業界でもわけのわからない言葉がでてくることはよくある)。

「ショーレックスってなんだよ。バケツって言え。」とか。

例えばこのへんとかこのあたりをみて

「硬質ロックウエルRMってなにさ」とか「D-アラニル-D-アラニンっておまえ意味が分からないことを言ってるんじゃないよ」という反応をすればほぼ正常で、あなたは健康です。

し かしながら慣れというのが重要で、例えば抗生物質といえば菌を殺すとかいうことは広く社会に浸透し、大抵の人が分かるようになっています。だからどんどん 使ってみんな慣れましょうというのが本音ですが、画像とか動画とかいう言葉にもなにかむずがゆさというか硬質なイメージを浮かべてしまう私は駄目でしょう か。

さて、本題ですが、まあ元の記事は英国のアンケート結果なのでさておき、分かってる人が分かってない人に話すときには細心の注意が必 要です。とはいっても注意していてもわけのわからないことを言ってしまう可能性はあるので分からない人はいずれ理解してください。というか自力で分かるよ うに努力しましょう。というと苛められそうですが。

細心の注意をして分かりやすくしようとしても本来の意味とのずれに悩むこともあります。