Reversing進捗3
Reversing進捗3
・Easy_UnpackMe
動作確認
Unpackということは圧縮されているファイルを解凍する問題か、
実行ファイルがパッキングされている問題ですね
実行してみると白井画面が表示されるだけ
ReadMeを読んでみる
ReversingKr UnpackMe Find the OEP ex) 00401000
OEPってなんなんだ?
OEPとは Original Entry Pointの略 packingされたプログラムでは実行開始箇所がずれる。
こんな感じですかね...?
解いていく
よくわからない。
デバッガでステップ実行しながら見てみると、同じようなループする箇所が多くみられた。
アンパックの技術について何も知らないため簡単な処理を書き自分で触ってみる。
#include <stdio.h> int main(void){ int i; for( i = 0 ; i < 10 ; i++ ){ printf("%dnum\n", i); } return 0; }
- packing前のEntryPoint
- packing後のEntryPoint
packerにはフリーのUPXを使用した。
変更された点としてpackingしたプログラムでは文字列が参照できなくなっていた。 さらにpackingする前にはなかった処理として繰り返し処理が追加されていた。
ここで手が詰まったためアンパックの技術について調べてみるとどうやらpackingしたプログラムには同じような繰り返し処理を何度か繰り返すことがあるらしく、展開処理をしているとのこと。
つまりこの展開処理がすべて終わった後に飛んだアドレスがOEPではないだろうか????
見てみると401150番地に飛ぶことがわかった。
ここから2時間ほどどうすればいいのかわからず悩むことになったのだがReadMeをよく読むとFind the OEPと書いてあるのでアドレスがフラグなのではと思い入力してみるとあっさり通過。
感想
英語は強敵でしたね・・・