リバースエンジニアリング 2日目

いやぁ、昨日は難しくて疲れましたよぉ。

 

まぁそれは置いておいて、昨日2章(アセンブリ)を飛ばしましたね…

なんというか、自分が知ってるからいいかっ。

って思ってしまったからかなぁ…。

 

本当に分かってるか?って聞かれたら、 「う、うん…。」って

感じで、「知ってるし!」とは言えなさそうなので、

もう一回おさらいとして、2日目は1,2章について書きます。

 

 

  第1~2章

はい。 昨日にもちょくちょく出てきていた [ from ctypes import * ] です。

 

 Python知ってるからなら、 この書き方は分かりますね?

けど、 ctypes ってなんじゃ? てなりますね。

 

この ctypesモジュールっていうのは著者いわく、ハッカーの最強の友らしいです…

 

 

うん。(。・ε・`。)

 

うん。(。・ε・`。;)

 

うん。(。・ε・`。;;)

 

 

まぁ根拠がありまして、

こいつを使うと、動的リンクライブラリ (いわゆる.DLLってやつですな) の中居の関数を呼び出せると!!

 

「Cの複合データ型を定義するための機能や、低水準のメモリ管理機能なども豊富に提供されている」 

(・ε・`; それが凄いのかよくわからんが…

 

うんでもって、 この中にDLLが3つサポートされています。

わかやすく説明します

 

cdll( ):cdecl呼び出し規約で関数をエクスポートしているライブラリーをロードするのに使う。

 

windll( ) :Wind32ネイティブ *API の呼び出し規約である stdcallで関数をエクスポートしているライブラリをロードする。

 

oledll() : windllと同じ。しかし、hresultエラーコードが帰ってきた時を想定すると・・;

 

APIというのは

Application Program Interfaceで

あるプラットフォーム(OSミドルウェア)向けのソフトウェア開発する際に使用できる命令や関数の集合のこと。また、それらを利用するためのプログラム上の手続きを定めた規約の集合。

らしいです。 はい。

 

なに!? WindowsならDLL があって、Linuxなら SO(Shared Object)があるだとっ?

それならLinuxでやろうじゃないか!!

環境は BackTrack5 です。

     ⬆かっこいいから。

 

はい。 vim を使いましょう。 vimはとても良いエディタです。

vimを使いましょう。

 

最初にターミナルに、

 

vim  chapter-1-printf.py    と入力

 

i     と入力すると記述出来ます。

f:id:reonreon3reon:20120909160907p:plain

 

と記述…

 

それから、

:wq            と入力すると、閉じます。

 

で、Python chapter1-printf.py  

と…

f:id:reonreon3reon:20120909161104p:plain

 

は〜い。 きっちり、 

Testing: Hello World!   と表示されていますね!

 

 

これをMac でも同様にすると…

f:id:reonreon3reon:20120909161331p:plain

 

はい。死にまひた。 死にましょう。

 

という訳でLinux(Backtrack5)を使っていきたいと思います。

 

次に、Pythonでの 構造体と共有体について書いていきます。

これが構造体ですね。

これが共有体ですね。

ちょっとつかいかたものせて…

 

とりあえず、ハッキングに役立つそうです。

 

すいません。 アセンブリについて書くのちょーだるいので、明日にします…。

 

やはり1日1章が一番よさげ。

 

ではでは…