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

今日からリバースエンジニアリングという本の

内容をどんどん分かりやすく説明していきます。

多分ちょっと難しい本ですが、読めない本なんて無いです。

読めない本はもはや本じゃないからです。

⬆ε-(;-ω-`) 

すいません。

 

とりあえず、がんばってます。

 

今日は目次と第3章から話していきます。

 

 

ReverseEngineerRing:

  1. 開発環境のセットアップ
  2. デバッガの基礎原理
  3. Windowsデバッガの構築
  4. PyDbg - ピュアPythonのWindowsデバッガ
  5. Immunity Debugger - 両方の世界をまたにかけ
  6. フック
  7. DLLインジェクションとコードインジェクション
  8. ファジング
  9. SullyWindowsドライバのファジング
  10. IDAPython - IDA Pro でスクリプティング
  11. PyEmu - スクリプティング対応のエミュレータ
      って感じですね〜。
 
 まぁ、最初の1章はあくまで開発環境の話なんで、飛ばします。
 第2章もレジスタ基礎知識なので…飛ばしますε-(;-ω-`) 
 ⬆
 簡単に言うとしょーもない。
 
 第3章からとても面白そう!!
 うん。
 
 
  第3章:
いきなりがーっん! 
これwinやん!! Mac出来ないの!? 知らん!
まぁいいや、Linuxでやりまふ(*´∀`*b⬅できるかしらんけどw
とりあえず環境はBT5です。 はい。 Pythonです。 はい。
 
とか言いつつぅ〜! windows環境もあります。
ありますけど何か? しかしおそいんだよぉ。 重いんだよぉ。
やるうせるんだよぉ。 まぁ、とりま兄貴のパソコンをすべてフォーマットしゅる。
 
 
はぁーい。 結局Linux使います。 winじゃないと出来ない時になれば、やりまふ。
 
3.1 デバッギーよ、汝はいずこへ?
いきなりすごい題名w
 
とりあえず、5分黙読…
 
死にたくない。⬅ やっぱりwin使わないといけなさそうだ…
というのも pythonC言語の色々使う必要があって、
Microsoftが用意してくれてるやつ…MSDN
いやだなぁ。重いのはきらいです(。。;
 
はい。というわけで説明に移ります。
 
※余談終わりました!ここからです!!
 
「プロセスをデバッガの制御下で実行するための第1の方法は
 デバッガそのものから実行ファイルを実行すること…」
にゃるほど。これは普通に理解出来る。
「Windowsでプロセスを生成(つくるって意味かな??)するには
関数CreateProcessA()を呼び出す。 この関数に渡される特定のフラグを適切に設定することで、プロセスが自動的にデバッガ向けに有効になる」っと!!
 
とてもわかりやすいですなぁ。まぁ自動的に実行ファイルを実行するで良いじゃんw
 
「デバッガの制御下でプロセスを生成する上で重要な意味を持つパラメータだけを扱うことにする。」
 
 
 
う、うん。あれか?必要じゃないパラメータもあるから、必要なやつだけってことかっ。
 
「具体的には、IpApplicationName,lpCommandLine,dwCreationFlags,ipStartupInfo,IpProcessInformation です」
 
たくさんあるなぁ…
 
はい。
 
「最初の2つは
 実行させたい実行ファイルのパスと、その実行ファイルに渡したいコマンドライン引数を設定するための物です。dwcreationFlagsには、デバッグ対象のプロセスとしてプロセスを起動すべきことを指示する特別な値を設定します。最後の2つのパラメータは構造体へのポインタです。この構造体は、プロセスをどのように起動すべきかを指示するためと、問題なく起動された場合に該当するプロセスに関する重要な情報を受け取るために利用する」と。
 
 うん。最初の2つはそのままだろぅ。
  3つ目はぁ、わかんにぃ。
  4つ目は、 はいはい。 ポインタね。
    STARTUPINFO、 PROCESS_INFORMATIONね。
 
lpStartupInfo
新しいプロセスのメインウィンドウの表示方法を保持している、
1 個の 構造体へのポインタを指定します。
 
lpProcessInformation
1 個の 構造体へのポインタを指定します。関数から制御が返ると、
この構造体に、新しいプロセスに関する情報が格納されます。
 

これはちょっと分かりやすい感じもするよねぇ…

はい。 じゃあ
これから、Pythonでmy_debugger.py と my_debugger_defines.pyをつくり、
debuggerのクラスを作り、デバッグ機能を少しずつ追加しまふ。
⬆死ぬかと思った。書くのに…
my_debugger.py
って感じですかねぇ… 
 
 
ふぅう  ε-(;-ω-`) 
 
まぁそれにしてもまだ基礎だからね!!
 
 
ついていけるかな?
 
(´。_。`)
 
かなしいぃ。
てか、結局winでやるはめになったやん。
Macにも対応できとけ・・・
 
だれか詳しい人助けてください。