OllyBonEを読みます
概要
OllyBonEはページテーブルを操作してメモリの属性を変更することで、ヒューリスティックにアンパックを行うプログラムです。ページテーブル操作によるアンパッキング技法の先駆けとして有名です。
ソースは以下からダウンロードできます。
http://www.joestewart.org/ollybone/
バイナリアン御用達(?) CryptBinaryToString
CryptBinaryToString というAPIを使うと、バイナリ列を文字列に変換できる。
BOOL WINAPI CryptBinaryToString( __in const BYTE *pbBinary, // バイナリ列 __in DWORD cbBinary, // バイナリ列のサイズ __in DWORD dwFlags, // 変換書式のフラグ __out_opt LPTSTR pszString, // 変換後の文字列を受け取るバッファ __inout DWORD *pcchString // 変換後の文字列を受け取るバッファの配列要素数 );
使い方は、はじめに CryptBinaryToString にバイナリ列とそのサイズを渡して、変換した文字列を格納するために必要なバッファサイズを取得する。その後、要求されたサイズのバッファを確保して、そのバッファとともに再度バイナリ列を渡すと、バイナリ列を文字列に変換することができる。
続きを読む就職活動お手伝いと学生
東京のビッグなサイトでブースに入って学生の勧誘と、情報系会社の簡単な紹介(キャッチじゃないよ!)をしていたときの話。
そのときの印象だけど、意外と就職活動開始時点で明らかな情報処理関連の技術のある人は少ないようだった。はてなダイアリーとか見ていると、学生でもバリバリコード書いてて、なんか面白いものを作ったりしてる人がわんさか居るので、その水準にあるものかと無意識に思っていたようだ。
そういえば、自分が学生のときも「C言語勉強してみようかな〜?」ぐらいだったから、そんな自分の居る会社に来る人間もまた、そんなもんだろう。逆に言えば、内定決まってから3年ぐらいでそれなりにプログラムを書いたり読んだりできるようになる、ということでもある。もちろん、成果はもって生まれた適性と、費やした労力に比例するだろうけれども、ある程度はやってみないと判らないものだったりする。*1
まあ、人生長いしやりたいことをやってみれば?ってとこなんだけど、その「やりたいこと」が見つけられないのもまた大多数なのかもね。
*1:私の場合は特に素養があるわけではなかったけど猛烈に時間を費やしたように思う。
例外がユーザー空間に落ちてくるまで
しばらくカーネル空間で例外ハンドラをいじって遊んでいたのだけど、ユーザー空間でも似たような遊びができる気がしたので下調べのメモ。常に以下のフローをたどるわけではなく、あくまで発生した例外がユーザー空間に伝播するときのフロー。x86はWindows XP SP3、x64は7を見ている。
続きを読む